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

gelöst Verändert ein SQL Befehl einen MD5 Wert bzw. kuriosum im MD5 Vergleich!

Mitglied: FunkerVogt

FunkerVogt (Level 1) - Jetzt verbinden

21.10.2011, aktualisiert 22.10.2011, 4024 Aufrufe, 3 Kommentare

Hallo Ihr PHP-Gurus!

Seit 3 Tagen sitz ich jetzt an einem, ich denke mal später
dann sehr trivialen, Problem.

Situation:

Ich hab eine HTML mit Login Nutzer und Passwort, deren Inhalte ich per Post an eine
.php übergebe.

HTML:
01.
<div style="position:absolute; bottom:5px; left:90px; font-size: 100%; color:#FFFFFF; font-family: AmericanText BT, Comic, cursive, Arial"> 
02.
 <form action="HSRV2.php" method="POST" > 
03.
  <p>N i c k n a m e:<br /><input name="Name" type="text" size="30" maxlength="30" style="font-family: AmericanText BT" /> 
04.
  <p>P a s s w o r t:<br /><input name="Pass" type="Password" size="30" maxlength="30" style="font-family: AmericanText BT" /> 
05.
  <p><input type="submit" value="L o g  I n" style="font-family: AmericanText BT, Comic, cursive, Arial"/></p> 
06.
</div>
Im php Script, wird das Passwort in einen MD5 Wert verändert.
Dann sollte dieser MD5-Wert mit einem vorhandenen MD5-Wert aus der
MySQL DB verglichen werden! Macht er auch

aber:

Der Vergleich sagt immer: <> (ungleich) Bis auf in einem
Fall! Wenn ich ein bestimmtes Kennwort in alle User in der DB eintrage,
dann geht es kurioser Weise! Ich bin irgendwie ratlos!

Das .php Script:
01.
<?php 
02.
// Kontakt Datenbank 
03.
$DBverb = mysql_connect("127.0.0.1","Hilfe","MD5MD5MD5") or die ("Log In momentan nicht m&ouml;glich, wir arbeiten daran!"); 
04.
mysql_select_db("hsrv", $DBverb); 
05.
 
06.
$password = $_POST['Pass']; 
07.
$name = $_POST['Name']; 
08.
 
09.
$ergebnis = mysql_query("SELECT `Passwort` FROM `user` WHERE `Nickname` = '$name'"); 
10.
 
11.
if ($ergebnis == md5($_POST['Pass'])) 
12.
13.
                echo '<script language ="JavaScript"
14.
                <!-- 
15.
                document.location.href="HSRV2.html"
16.
                // --> 
17.
                </script>'; 
18.
19.
else
20.
        echo '<script language ="JavaScript"
21.
        <!-- 
22.
        document.location.href="false.html"
23.
        // --> 
24.
        </script>'; 
25.
26.
?>
Kann doch eigentlich nicht an der DB liegen, wenn es mit einem bestimmten Passwort geht! Oder?

[Edit Biber] Code formatiert. [/Edit]
Mitglied: Arano
21.10.2011 um 15:49 Uhr
Hallo FunkerVogt,

Bitte verwende doch die <code>-Tags aus der Formatierungshilfe (roter Link über dem Eingabefeld)

$ergebnis = mysql_query("SELECT `Passwort` FROM `user` WHERE `Nickname` = '$name'");

if ($ergebnis == md5($_POST['Pass']))
Hier liegt dein Hund begraben, mysql_query() liefert etwas anders zurück als du erwartest !
Schau doch noch einmal im PHP-Manual - mysql_query() nach.

Tipp:
Ruhig während des Programmierens mal ein paar Variablen per echo ausgeben lassen und deren Inhalt kontrollieren.
siehe dazu im Manual auch nach den beiden Funktionen print_r() und var_dump()

Und weil du gerade im Manual unterwegs bist, schau auch gleich noch einmal nach header(), das funktioniert auch wen der Besucher Javascript deaktiviert hat ;)


~Arano

Edit:
Da sehe ich gerade noch ein kleinen Tipp.
Dein Query solltest du noch um einem LIMIT 1 ergänzen, dann braucht die Datenbank nicht noch alle Einträge __nach dem Treffer__ kontrollieren die weiss ja nicht, das es nur einen Benutzer mit dem Namen geben kann.

weiter Edit...
Du kannst auch der Datenbank den Passwort-/MD5-Vergleich überlassen, dann brauchst du in PHP nur noch auswerten ob es einen Treffer gab oder nicht.
Bitte warten ..
Mitglied: FunkerVogt
21.10.2011 um 17:33 Uhr
Danke für die Tips, nehm ich mir zu Herzen!

Die Lösung:


$ergebnis = mysql_query("SELECT `Passwort` FROM `user` WHERE `Nickname` = '$name'");
$row = mysql_fetch_row($ergebnis);
$ergebnisRes = ($row[0]);

if ($ergebnisRes == md5($password))


Formatierung hier im Forum auch gleich gelernt!

Vielen Dank!
Bitte warten ..
Mitglied: Arano
22.10.2011 um 12:13 Uhr
Moin moin,

hat ja super geklappt !

if ($ergebnisRes == md5($password))
Wie du das jetzt vielleicht selber siehst, ist dieser Bedingung nicht gleich anzusehen was sie überhaupt vergleicht. Jetzt weisst du das noch, aber später kann es ganz schön schwer sein, den eigentlichen Sinn dahinter wieder zu erkennen. (oder dritte Personen z.B. in Foren)
Für Variablen sollten Namen gewählt werden, von denen man auf den Inhalt schließen kann.
01.
<?php 
02.
$strQuerySelectUser = "SELECT `Passwort` FROM `user` WHERE `Nickname` = '$name'"
03.
$resSelectUser = mysql_query($strQuerySelectUser); 
04.
 
05.
// und dann 
06.
 
07.
$arrUser = mysql_fetch_row($resSelectUser); 
08.
$strMD5Pass = $arrUser[0]; 
09.
if ($strMD5Pass == md5($password)) 
10.
 
11.
// oder 
12.
 
13.
$arrUser = mysql_fetch_assoc($resSelectUser); 
14.
if ($arrUser['Passwort'] == md5($password)) 
15.
?>
Und als weitere Tipps:
  • Was wenn die Anfrage doch nicht an den Server gesendet werden kann mysql_query() (z.B. Weil der Server nicht mehr erreichbar ist, oder die Tabelle Fehler aufweist, ...) PHP-Manual - is_ressource()
  • Was wenn es den User __nicht gibt__ und so nur eine leere Ergebnistabelle als Ressourcenkennung zurückgegeben wird ? (z.B. Ein Tippfehler beim Benutzernamen) PHP-Manual - mysql_num_rows()


Schönes Wochenende
~Arano
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Werte in Spalten vergleichen und einsetzen

gelöst Frage von Inge88Microsoft Office4 Kommentare

Halihalo, ich bin neu hier und versuche eine Lösung zu finden, bzw. kompetente Excel-Kenner: Ich habe mehrere Spalten (A, ...

PHP

MD5 Verschlüsselung

Frage von gamerffPHP5 Kommentare

Hallo Forum, wie sicher findet ihr eine MD5 Verschlüsselung für einen Internen Bereich auf einer Webseite ?

Batch & Shell

Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen

gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

Batch & Shell

Werte vergleichen die nicht 100 Prozent gleich sind

Frage von functionstrutBatch & Shell4 Kommentare

Hallo, gibt es eine Möglichkeit Ordnernamen oder einfach generell Texte oder Werte zu vergleichen auch wenn sie nicht 100%ig ...

Neue Wissensbeiträge
Datenschutz

Die Datenkrake Google verlängert ihr Arme mal wieder ein wenig, automatische Anmeldung

Tipp von magicteddy vor 17 StundenDatenschutz2 Kommentare

Benutzer mit einem Google Account und gespeicherten Zugangsdaten werden von chrome 69 automatisch bei Google angemeldet, natürlich alles zum ...

Verschlüsselung & Zertifikate
Meine Wissenssammlung zu Bitlocker
Erfahrungsbericht von DerWoWusste vor 1 TagVerschlüsselung & Zertifikate3 Kommentare

Die Motivation für diesen Beitrag waren die vielen Posts rund um dieses Thema, die deutlich machen, wie viele Einzelaspekte ...

E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzk vor 3 TagenE-Mail11 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...

Hyper-V

Optimiertes Ubuntu per Microsoft Hyper-V-Schnellerstellung verfügbar

Anleitung von Frank vor 3 TagenHyper-V1 Kommentar

Für Microsofts Virtualisierungssoftware Hyper-V ist ab sofort auch ein optimiertes Ubuntu 18.04.1 LTS verfügbar. In der "Hyper-V-Schnellerstellung" App, die ...

Heiß diskutierte Inhalte
Hardware
Sophos SG135 - Routing
gelöst Frage von Xaero1982Hardware22 Kommentare

Moin Zusammen, ich ersetze gerade nen alten Cisco DualWAN Router durch eine SG 135. Ich muss bestimmte Ziele über ...

E-Mail
Welche ist die beste E-Mail Groupware für die Zukunft?
Frage von ITCrowdSupporterE-Mail18 Kommentare

Guten Tag allerseits :) Ich möchte mich mit einer Frage heute mal an die Schwarmintelligenz wenden. Aktuell befasse ich ...

Windows Server
In-Place Upgrade von Windows Server 2008 R2 Datacenter zu Windows Server 2016 Datacenter (Zwischenschritt über 2012 R2)
gelöst Frage von TowerpleaseWindows Server16 Kommentare

Hallo Administratoren, Wir haben uns vor ein paar Monaten Windows Server 2016 Datacenter Lizenzen gekauft und wollen nun unsere ...

Windows 7
Mit gpedit gesetzte Richtlinien in rsop.msc nicht definiert und ausgegraut
gelöst Frage von 137006Windows 715 Kommentare

Hallo zusammen, anfangs verweise ich fairerweise daruf dass ich dieses Thema bereits im Forum angeschnitten habe, nachdem ich hier ...