php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.04.2008, 11:58  
Benutzer
 
Registriert seit: 05.03.2008
Beiträge: 31
Raito befindet sich auf einem aufstrebenden Ast
Standard Hash-Werte

Mein Datenbank-Skript wandelt die Passwörter in SHA 1 um z.B.
INSERT INTO tb_user (user_name, user_pwd, user_userstat, user_dept)
VALUES ("Administrator", SHA1("xxxxxx"), "Chief-Administrator", "IT");

in meinem Login Skript wird der Hash wert mit dem was eingegeben wird verglichen. Das klappt auch alles soweit.

Wenn ich aber über ein Formular das Passwort in die Datenbank SHA1 verschlüsselt schreiben will, kommt ein anderer Hash-Wert raus.
Kann mir jemand erklären warum da verschiedene Hash Werte rauskommen?
Raito ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.04.2008, 12:02  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Raito Beitrag anzeigen
Wenn ich aber über ein Formular das Passwort in die Datenbank SHA1 verschlüsselt schreiben will, kommt ein anderer Hash-Wert raus.
Das Formular schreibt in die Datenbank? Glaube ich nicht. Der Browser schickt wohl eher die Formulardaten an den Webserver und dort werden sie von einem PHP Skript verarbeitet und in eine Datenbank geschrieben? Vielleicht solltest Du uns lieber den Code zeigen.
David ist offline  
Alt 07.04.2008, 12:09  
Benutzer
 
Registriert seit: 05.03.2008
Beiträge: 31
Raito befindet sich auf einem aufstrebenden Ast
Standard

Das ist der Code:
PHP-Code:
 $sql "INSERT INTO tb_user (user_name, user_dept, user_userstat, user_pwd) VALUES ('$_POST[user_name]', '$_POST[user_dept]', '$_POST[user_userstat]', '".SHA1($_POST['user_pwd'])."')"
Wenn ich mir die Passwortspalte anschau sieht das Passwort test dann umgewandelt so aus:
da39a3ee5e6b4b0d3255bfef95601890afd80709
Wenn ich mir das ausgebe (echo sha1('$_POST['user_pwd']); )
dann kommt das raus :
6ea79b40aac21e344effacead77b234fae0784d1

Geändert von Raito (07.04.2008 um 12:13 Uhr).
Raito ist offline  
Alt 07.04.2008, 12:11  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ok, damit fügst Du wohl einen neuen Benutzer ein. Das funktioniert?
Was funktioniert nicht und wie sieht der dazugehörige Code aus? Wie hast Du diesen Code getestet? Mit welchen Werten? Hast Du Dir die Werte ausgeben lassen? (Ein passendes var_dump bewirkt manchmal Wunder.) Was ist dabei herausgekommen?
David ist offline  
Alt 07.04.2008, 12:18  
Benutzer
 
Registriert seit: 05.03.2008
Beiträge: 31
Raito befindet sich auf einem aufstrebenden Ast
Standard

Das Einfügen des neuen Benutzers funktioniert.
getestet siehe oben.
Raito ist offline  
Alt 07.04.2008, 12:21  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Und wie lautete das Passwort aus dem Beispiel?

Ich habe es gerade hier mal getestet und
Code:
select sha1('abcdef')
als auch
PHP-Code:
echo sha1('abcdef'); 
liefern beide das Ergebnis
Zitat:
1f8ac10f23c5b5bc1167bda84b833e5c057a77d2
Zitat:
echo sha1('$_POST['user_pwd']);
Das erzeugt einen parse error. Wie sieht der _echte_ Code aus?


edit:
Rate mal, was
PHP-Code:
echo sha1(''); 
ausgibt
da39a3ee5e6b4b0d3255bfef95601890afd80709
Tipp:
PHP-Code:
error_reporting(E_ALL);
ini_set('display_errors'1); 
an den Anfang des Skripts schreiben und nochmal testen.

Geändert von David (07.04.2008 um 12:24 Uhr).
David ist offline  
Alt 07.04.2008, 12:32  
Benutzer
 
Registriert seit: 05.03.2008
Beiträge: 31
Raito befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
if (isset ($_POST['submit'])) {
    if(empty (
$_POST['user_name']))
       { 
$msg2 "<font color='red'>Benutzername fehlt</font><br>"; }
    else {     
$name 1;
            if(empty (
$_POST['user_password']))
                     { 
$msg2 "<font color='red'>Passwort fehlt</font><br>"; }
                        else { 
$pwd 1; } }
                         if (
$pwd == && $name == 1)
    { 
$sql2 "INSERT INTO tb_user (user_name, user_dept, user_userstat, user_pwd) VALUES ('$_POST[user_name]', '$_POST[user_dept]', '$_POST[user_userstat]', '".SHA1($_POST['user_pwd'])."')";
      
$result2 mysql_query($sql2);
    if (
$result2)
                { 
$msg3 "<font color='green'>Dateneingabe erfolgreich</font><br>"; }
             else
             { 
$msg3 "<font color='red'>Dateneingabe fehlgeschlagen</font><br>"; }
}

Das komplette Formular
PHP-Code:
    echo "<form action='$_SERVER[PHP_SELF]' method='POST'>\n";
    echo 
"  <table border='0' cellpadding='5' cellspacing='0' bgcolor='#E0E0E0'>\n";
    echo 
"    <tr>\n";
    echo 
"      <td align='right'>Name</td>\n";
    echo 
"      <td><input name='user_name' type='text' value='$_POST[user_name]'></td>\n";
    echo 
"    </tr>\n";
    echo 
"    <tr>\n";
    echo 
"      <td align='right'>Passwort</td>\n";
    echo 
"      <td><input name='user_password' type='password' value='$_POST[user_pwd]'></td>\n";
    echo 
"    </tr>\n";
    echo 
"    <tr>\n";
    echo 
"       <td align='right'>Status</td> <td>\n";
    echo 
"     <select name='user_userstat' value='$_POST[user_userstat]'>\n";
    echo 
$stats;
    echo 
"    </select></td>\n";
    echo 
"    </tr>\n";
    echo 
"    <tr>\n";
    echo 
"     <td align='right'>Abteilung</td>\n";
    echo 
"     <td>\n";
    echo 
"     <select name='user_dept' value='$_POST[user_dept]'>\n";
    echo 
$depts;
    echo 
"    </select></td>\n";
    echo 
"</tr>\n";
    echo 
"<tr>\n";
    echo 
"<td align='right'></td>\n";
    echo 
"<td>\n";
    echo 
"<input type='submit' name ='submit' value=' Absenden '>\n";
    echo 
"<input type='reset' value=' Felder leeren '>\n";
    echo 
"</td>\n";
    echo 
"</tr>\n";
    echo 
"</table>\n";
    echo 
"</form>\n"
also Benutzername, Abteilung und Status landen in der Datenbank.
Das das SHA1($_POST['user_pwd']) leer ist habe ich auch gerade mit var_dump festgestellt.
Aber wieso ist es leer?
Raito ist offline  
Alt 07.04.2008, 12:39  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Warum gibst Du denn jede Zeile einzeln mit echo "Zeichenkette\n" aus?
php kann mit mehrzeiligen Zeichenketten umgehen
PHP-Code:
echo '<form method="post" action="">
  <div>
    <input usw usw
  '

und Du kannst auch den PHP Block verlassen, um größere Mengen Text auszugeben
PHP-Code:
<?php
$x 
1234;
?>
<form method="post" action="">
  <div>
    <input type="text" name="textfeld1" value="<?php echo $x?>" />
    <input type="text" name="textfeld2" />
    <input type="text" name="textfeld3" />
    <input type="text" name="textfeld4" />
    <input type="submit" />
  </div>
</form>
<?php
// und weiter im PHP Code
Und schau Dir doch einfach mal an, was in $_POSR drin steht
PHP-Code:
echo '<pre>'var_dump($_POST); echo '</pre>';
if (isset (
$_POST['submit'])) { 
Auf jeden Fall error_reporting(E_ALL) und display_errors=On einstellen auf Deinem Entwicklungsserver.
David ist offline  
Alt 07.04.2008, 14:44  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Raito Beitrag anzeigen
Datenbank.
Das das SHA1($_POST['user_pwd']) leer ist habe ich auch gerade mit var_dump festgestellt.
Aber wieso ist es leer?
Schau deinen Code an, und du siehst, dass das Passwort eben nicht user_pwd heisst. Wenn du David's Tipp befolgt hättest, dann hättest du auch die entsprechende Fehlermeldung erhalten.
Und so nebenbei, Input-Felder vom Typ password können nicht mit value vorbelegt werden.
__________________
Gruss
L
lazydog ist offline  
Alt 07.04.2008, 15:27  
Benutzer
 
Registriert seit: 05.03.2008
Beiträge: 31
Raito befindet sich auf einem aufstrebenden Ast
Standard

hab ich auch grad bemerkt. trotzdem danke für die info
Raito ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Unbekannte Werte verhindern das Dekodieren. freq.9 PHP Tipps 2006 10 15.07.2006 00:28
GET Übergabe durch vorherigen md5 hash checken PHP Tipps 2005-2 4 27.10.2005 15:55
Dynamische Werte übergabe? Logik Problem jesus666 PHP Tipps 2005-2 21 03.08.2005 17:30
Alle Werte eines Array mischen PHP Tipps 2005-2 2 28.07.2005 17:37
Eingabefelder und Werte PHP Tipps 2005-2 1 28.06.2005 08:19
werte werden nicht übergeben PHP Tipps 2005 10 05.04.2005 23:23
2 Werte mit gleichem MD5 Hash webbi PHP Tipps 2005 4 09.03.2005 12:46
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] Werte aus zwei Tabellen verknüpfen? Datenbanken 12 05.01.2005 10:41
Doppelte Werte im Array löschen mittels hash PHP Tipps 2004-2 1 09.12.2004 11:43
Werte werden nicht übergeben Server, Hosting und Workstations 1 11.11.2004 09:30
<select> und alte Werte obi PHP Tipps 2004-2 4 06.11.2004 15:17
via Link Werte an eine function übergeben PHP Tipps 2004 5 01.07.2004 12:39
Werte eines Arrays in eine MySQL schreiben PHP Tipps 2004 2 28.06.2004 13:32
[Erledigt] Werte werden 2x ausgegeben PHP Tipps 2004 2 13.06.2004 14:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php hash, php sh1, php hash erzeugen, hash php, sh1 php, php hashwert, php hash wert, hashwert php, php hash erstellen, hash in php, php hash wert erzeugen, php hash generieren, php hash(), php login hash, php html hash, php hashwerte, hash erzeugen php, php hashwert erzeugen, sh1.php, hash wert erzeugen php

Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum