Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Warum funktioniert dieses einfache PHP Script nicht ?

Mitglied: keksprinz

keksprinz (Level 2) - Jetzt verbinden

29.03.2005, aktualisiert 31.03.2005, 5551 Aufrufe, 3 Kommentare

Das Unten stehende Php Script liefert mit immer Sie haben kein gültiges Passwort eingegeben. Was bei den Variabeln ausgegeben wird stimmt immer. Nur irgendwie mag er meine If schleife nicht. Woran kanns liegen ??? Ich bin echt am verzweifeln. Wenn ich im vorgeschalteten html Formular nix eingebe dann heist es Willkommen.

01.
<?php 
02.
include 'odbc.php';  
03.
$user = $_GET['user'] ; 
04.
$passwd = $_GET['passwd'] ; 
05.
 
06.
 
07.
$query = odbc_exec($odbc, "SELECT username, passwort FROM users where username = '$user' ") or die (odbc_errormsg());  
08.
while($row = odbc_fetch_array($query)){  
09.
 
10.
 
11.
$var1 = " ".$row['username']." ";  
12.
$var2 = " ".$row['passwort']." ";  
13.
 
14.
}  
15.
 
16.
 
17.
if ($var1 == "$user" && $var2 == "$passwd"
18.
 
19.
20.
echo "Willkommen  
21.
"; 
22.
23.
 
24.
 
25.
else 
26.
 
27.
28.
echo "Sie haben kein gültiges Passwort eingegeben  
29.
"; 
30.
31.
 
32.
 
33.
echo "var1 $var1  
34.
"; 
35.
echo "var2 $var2  
36.
"; 
37.
echo "username $user  
38.
"; 
39.
echo "passwort $passwd  
40.
"; 
41.
 
42.
 
43.
odbc_close($odbc);  
44.
?>
Mitglied: Nebuchadneza
30.03.2005 um 08:09 Uhr
Hallo,

ist zwar schon lange her mit php, aber vielleicht kann ich meine grauen Zellen noch aktivieren und ein bisschen helfen.

Wie funktioniert die Übergabe der Variablen? Wird alles in einem Script ausgeführt oder lässt du die Benutzerdaten in Script A eingeben und in Script B auswerten?? Das könnte evtl. dann schon ein Fehler sein. Am besten in einem Script übergeben und überprüfen. Zudem würde ich die SQL-Abfrage ändern:
SELECT username, passwort FROM users where username = ... && passwort = ...
Danach kannst du die Abfrage machen
Wenn user = leer => FALSCH, sonst Login
dürfte eigentlich besser sein, wenn mein Hirn sich so früh morgens nicht irrt.

MfG

B.Böcherer

P.S.: So viel ich weiß, kann es öfters Probleme geben bei der Übergabe von Variablen mit GET. Meistens muss man dann mit Cookies oder Sessions arbeiten.
Bitte warten ..
Mitglied: phpchris
30.03.2005 um 09:00 Uhr
Kann es sein, dass $var1 immer den letzten Wert haben wird, weil du die While-Schleife abbrichst.
Bitte warten ..
Mitglied: Guenni
31.03.2005 um 00:28 Uhr
include 'odbc.php';

1.) Willst du mit den folg. Anweisungen die Formulardaten in Variablen speichern?
$user = $_GET['user'] ; ???
$passwd = $_GET['passwd'] ; ???

Dann laß dir mal mit der Anweisung : echo $_GET['user'] den Inhalt ausgeben. Ich vermute mal, da kommt nichts.
Wenn der Name der Textfelder in Formular user bzw. passwd ist, dann ist eine explizite Übergabe eh überflüssig, du kannst die Namen der
Textfelder direkt in die Abfrage einfügen, wie du es bereits gemacht hast.(siehe unten)

$query = odbc_exec($odbc, "SELECT username, passwort FROM users where username = '$user' ") or die (odbc_errormsg());

2.) Überprüfe mit : if($query) { echo "Gefunden.";}else { echo "Nichts gefunden.";} ob überhaupt ein Datensatz gefunden wurde.

3.) Da nur ein Datensatz gefunden wird(Benutzernamen sind ja i.d.R. einmalig), ist die while-Schleife unnötig.

while($row = odbc_fetch_array($query)){

$row = odbc_fetch_array($query) würde ausreichen.

4.) Mit den folg. Anweisungen übergibst du an $var1 bzw. an $var2 mit " " ein Leerzeichen, dann den usernamen bzw. das Passwort, und dann mit " " wieder ein Leerzeichen.

$var1 = " ".$row['username']." ";
$var2 = " ".$row['passwort']." ";

Wenn also wenn der Username z.B. 'Peter' ist steht in $var1 ' Peter ' und nicht 'Peter'.
}

5.) Der Spaltenname in $row[Spaltenname] darf nicht in Anführungszeichen stehen.

$var1 = $row[username]; wäre richtig.


6.) Die folg. If-Struktur und die anschl. echo-Anweisungen mußt du dann auch zusammenfassen, du kannst nicht im Else-Zweig
sagen, sie haben kein gültiges usw. eingegeben, und dann dir die Variablen ausgeben lassen.

if ($var1 == "$user" && $var2 == "$passwd")

{
echo "Willkommen";
}else{
echo "Sie haben kein gültiges Passwort eingegeben";
}
echo "var1 $var1";
echo "var2 $var2";
echo "username $user";
echo "passwort $passwd";
odbc_close($odbc);

Benutze statt dessen die Überprüfung unter 2.), etwa in der Form:

if($query) {
$row = odbc_fetch_array($query);
echo "Gefunden.";
echo "Username: $row[username]";
echo "Passwort: $row[passwort]";
}else {
echo "Nichts gefunden.";
}

?>

Ich hoffe, meine Korrekturen waren richtig.

Gruß Günni
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Einfache Rechnung funktioniert nicht
gelöst Frage von DomiZone1Batch & Shell5 Kommentare

Hallo heute will mein PC mich verrarschen den dieser Code: Funktioniert nicht an der stelle wo er die varieble ...

PHP
PHP-Script um Online zu zippen
Frage von sbsnewbiePHP3 Kommentare

Hallo Admins, folgende Frage, die bestimmt easy ist, bei der ich aber gerade ein Brett vor dem Kopf habe: ...

Apache Server
PHP funktioniert nicht auf VirtualHosts
gelöst Frage von peterlaApache Server4 Kommentare

Hallo! Ich kenne mich zwar grundsätzlich mit Linux aus, allerdings nicht so mit Apache. Nun habe ich einen Apache ...

Batch & Shell

Einfaches SendMail-Script läuft auf Fehler

Frage von LarzBatch & Shell3 Kommentare

Hallo zusammen, zunächst einmal - ich habe mit Powershell bisher keine Erfahrungen und mir immer mit Batch und blat.exe ...

Neue Wissensbeiträge
Peripheriegeräte
Unterschrank für HP Drucker
Tipp von NixVerstehen vor 2 TagenPeripheriegeräte2 Kommentare

Als kurzen Freitags-Tipp möchte ich gerne meinen neuen Drucker-Unterschrank Modell Amica KS 15423W vorstellen. Das Gerät eignet sich hervorragend ...

Windows 10
Windows 10 - Probleme mit Point-And-Print
Tipp von emeriks vor 3 TagenWindows 103 Kommentare

Hi, wir kämpfen z.Z. mit einigen Druckertreibern, welche unter Win10 beim Verbinden eines Druckers von Printserver mit dem Dialog ...

Windows 10

Windows 10 1803 - Ihr Roamingbenutzerprofil wurde nicht vollständig synchronisiert

Anleitung von Deepsys vor 3 TagenWindows 101 Kommentar

Bei allen Windows 10 1803 PCs traten Probleme mit den Servergespeicherten Profilen auf. Das Abmelden dauerte sehr lange und ...

Exchange Server
Exchange - Fehler mit 2018-07 Sicherheitsupdate
Tipp von ArnoNymous vor 5 TagenExchange Server7 Kommentare

Hallo, es gibt mal wieder Freude mit den MS-Updates. KB4338814 führt dazu, dass der Exchange keine Mails mehr zustellt. ...

Heiß diskutierte Inhalte
Router & Routing
Routing Problem mit Kaskade FritzBox und pfsense zugeriff nur von der firewall auf die clients und 0.0.0.0
Frage von ukl1967Router & Routing23 Kommentare

Hallo, ich habe ein an sich triviales Problem elches ich allerdings nicht gelöst bekomme. NAS 10.5.10.53 Mein Netz baut ...

LAN, WAN, Wireless
HP Probook 470 G4 - abbrechende Downloads
Frage von joern1LAN, WAN, Wireless19 Kommentare

Folgendes Problem, für einen Tipp wäre ich dankbar: Bei WLAN-Verbindung zum Internet (nicht LAN) kommt es bei etwas größeren ...

Server-Hardware
Einsteigerfragen zu HP ProLiant DL380p Gen 8
gelöst Frage von brain2011Server-Hardware14 Kommentare

Hallo, ich habe mir einen HP ProLiant DL380p Gen 8 zugelegt, um mich grundlegend mit dieser Geräteklasse und der ...

Server-Hardware
DL380p Gen8 LEDs Laufwerksaktivität funktionieren nicht
Frage von Cisco7971Server-Hardware12 Kommentare

Hallo zusammen, ich habe hier ein seltsames Problem: Die LEDs an den Smart Carriern, die bei Laufwerksaktivität rotieren, tun ...