Registrations-Script MD5 Verschöüsselung klappt nicht

09/22/2011 17:56 NoWe53#1
Hey elöitepvpers,

wusste nicht wohin damit, also hierrein.

Habe mir ein kleines Regiestrierungsscript zusammengestellt, und will, dass das Passwort per MD5 verschlüsselt auf der Datenbank gespeichert wird.

Alles funktioniert bis auf die MD5 Verschlüsselung...

Kann mir da jemand helfen?

Script:

PHP Code:
<?php

// Check if he wants to register:
if (!empty($_POST[email]))
{
    
// Check if passwords match.
    
if ($_POST[password] != $_POST[password2])
        exit(
"Error - Passwärter stimmen nicht überrein. Bitte versuche es noch einmal.");

    
// Assign some variables.
    
$ip $_SERVER[REMOTE_ADDR];
    
$password md5($_POST['password']);  

    require_once(
"connect.php");

    
// Register him.
    
$query mysql_query("INSERT INTO user 
    (email, displayName, name, password, bday)
    VALUES    ('
$_POST[email]','$_POST[displayName]','$_POST[name]','$_POST[password]','$bday')")
    or die (
"Error - Registrieren fehlgeschlagen.");

$query mysql_query("SELECT * FROM 'user' WHERE email = '$email'");
if (
mysql_fetch_array($query)) {
echo 
"Bitte andere Username";
} else
    
    echo 
"Welcome $_POST[username]! You've been successfully reigstered!<br /><br />
        Please login <a href='login.php'><b>here</b></a>."
;
    exit();
}

?>

<html>
    <head>
        <title>Registrieren</title>
    </head>
    <body>
        <form action="register.php" method="post">
            <table width="75%" border="1" align="center" cellpadding="3" cellspacing="1">
                <tr>
                    <td width="100%"><h5>Registration</h5></td>
                </tr>
                <tr>
                    <td width="100%"><label>Email: <input type="text" name="email" size="25" value="<? echo $_POST[email]; ?>"></label></td>
                </tr>
                <tr>
                    <td width="100%"><label>Anzeige-Name: <input type="text" name="displayName" size="25" value="<? echo $_POST[displayName]; ?>"></label></td>
                </tr>
                <tr>
                    <td width="100%"><label>Name: <input type="text" name="lastname" size="25" value="<? echo $_POST[name]; ?>"></label></td>
                </tr>
                <tr>
                    <td width="100%"><label>Passwort: <input type="password" name="password" size="16" value="<? $password md5($_POST['password']); ?>"></label></td>
                </tr>
                <tr>
                    <td width="100%"><label>Passwort wiederholen: <input type="password" name="password2" size="16" value=""></label></td>
                </tr>
                <tr>
                    <td width="100%"><input type="submit" value="Registrieren!"></td>
                </tr>
            </table>
<php $password = md5($_POST['password']); ?> 
        </form>
    </body>
</html>
MfG nicileie
09/22/2011 17:59 galaxyo#2
Ich hatte mal das Problem, dass das Feld für das Passwort für eine MD5-Verschlüsselung zu klein war. Im Code sehe ich jetzt keinen Fehler, überprüfe deine Datenbank anhand meiner Vermutung einfach mal.
09/22/2011 18:03 NoWe53#3
habe bei dem, was ich mache ein Admin-Panel, wenn ich da einen neuen USer hinzufüge klappt das, und auch dieser ist MD5 Verschlüsselt..

MfG nicileie

Ps.: Ty

#Edit:

Problem noch nicht gelöst!
09/22/2011 18:23 Menan#4
PHP Code:
 // Assign some variables.
    
$ip $_SERVER[REMOTE_ADDR];
    
$password md5($_POST['password']);  

    require_once(
"connect.php");

    
// Register him.
    
$query mysql_query("INSERT INTO user 
    (email, displayName, name, password, bday)
    VALUES    ('
$_POST[email]','$_POST[displayName]','$_POST[name]','$_POST[password]','$bday')")
    or die (
"Error - Registrieren fehlgeschlagen."); 
Du solltest bei deinem Query auch $password in das Passwortfeld in der Datenbank eintragen und nicht $_POST[password]...

Richtiges Query wäre:

PHP Code:
 $query mysql_query("INSERT INTO user 
    (email, displayName, name, password, bday)
    VALUES    ('
$_POST[email]','$_POST[displayName]','$_POST[name]','$password','$bday')")
    or die (
"Error - Registrieren fehlgeschlagen."); 
09/22/2011 18:50 Che#5
Quote:
Originally Posted by Menan View Post
PHP Code:
 // Assign some variables.
    
$ip $_SERVER[REMOTE_ADDR];
    
$password md5($_POST['password']);  

    require_once(
"connect.php");

    
// Register him.
    
$query mysql_query("INSERT INTO user 
    (email, displayName, name, password, bday)
    VALUES    ('
$_POST[email]','$_POST[displayName]','$_POST[name]','$_POST[password]','$bday')")
    or die (
"Error - Registrieren fehlgeschlagen."); 
Du solltest bei deinem Query auch $password in das Passwortfeld in der Datenbank eintragen und nicht $_POST[password]...

Richtiges Query wäre:

PHP Code:
 $query mysql_query("INSERT INTO user 
    (email, displayName, name, password, bday)
    VALUES    ('
$_POST[email]','$_POST[displayName]','$_POST[name]','$password','$bday')")
    or die (
"Error - Registrieren fehlgeschlagen."); 
So isset!
Hast einfach falschen Wert reingeschrieben...
Nächstes mal in der E*Coder Section posten, da wird dir geholfen :D
09/22/2011 18:54 NoWe53#6
Wenn ich mich Registriert habe kommt nun das:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in MEIN PFAD/www/register.php on line 23
Welcome ! You've been successfully reigstered!

Zeile 23 ist:

if (mysql_fetch_array($query)) {

Bin gerade am schauen, ob´s MD5 verschlüsselt ist...

Beitrag wird dann editiert.

MfG nicileie
09/22/2011 18:58 Che#7
Quote:
Originally Posted by nicileie View Post
Wenn ich mich Registriert habe kommt nun das:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in MEIN PFAD/www/register.php on line 23
Welcome ! You've been successfully reigstered!

Zeile 23 ist:

if (mysql_fetch_array($query)) {

Bin gerade am schauen, ob´s MD5 verschlüsselt ist...

Beitrag wird dann editiert.

MfG nicileie
Machs doch mit mysql_fetch_row; kann doch nur maximal ein ergebnis geben!

Menan magst du das bitte mal in die Coder Section moven?
09/22/2011 19:00 NoWe53#8
Sry, bin noch nicht sogut in php...

Wie muss ich das denn genau im Code ändern?

Habe das Script heruntergeladen und auf meine Bedürfnisse angepasst..

MfG

#Edit:

So sollte es richtig sein:

if (mysql_fetch_row($query)) {

#Edit2:

Das Passwort wird jetzt MD5 verschlüsselt, allerdings, ist der MD5 anders bei einem anderen Account, der aber dasselbe Passwort hat !!!????

Need help
09/22/2011 19:44 galaxyo#9
Der Hash ist immer der gleiche, solange man auf die Schreibweise achtet. Der MD5-Hash von "Hallo" ist nicht mit dem von "hallo" identisch. Eventuell das Passwort in irgendeiner Art und Weise verändert? Einen Buchstaben groß geschrieben, eine Zahl weggelassen oder angehängt?
09/22/2011 19:56 NoWe53#10
Nein, ich zeig dir hier mal ein Beispiel..

Das Passwort "test"

MD5: 098f6bcd4621d373cade4e832627b4f6
DB: 098f6bcd4621d373cade4e832627b4f6

Es ist komplett Identisch, aber Login nicht möglich, keine Ahnung, was am anderen Passwort anders ist, dass ich mit nem anderen Rgi-Script gemacht habe...

Passwort 2025

Edit:

in der login.tpl steht bei Passwort das:

<td><label for="f2">{lng k='password'}:</label></td>
<td><input type="password" id="f2" name="pass" style="width: 251px;" /></td>
</tr>

Mit adminpanel: 9d8f8e57ca9213be07b420ef323d999c
originale MD5: 312351bff07989769097660a56395065

So siehts im Admin-Register-Script aus:

$v = array($_POST['name'],$_POST['name'],md5($pw.PASSWORDUNIQUESTRING),$_POST['email'],62);





BITTE CLOSEN!!!
09/22/2011 20:11 galaxyo#11
Wenn man sich einloggt, musst du natürlich auch den Hash abgleichen und nicht das Passwort mit dem Hash. Das funktioniert nicht.

Falsch:

Test mit 098f6bcd4621d373cade4e832627b4f6

Richtig:

md5($test) (also: 098f6bcd4621d373cade4e832627b4f6) mit 098f6bcd4621d373cade4e832627b4f6

Wenn der Hash übereinstimmt, ist auch das Passwort richtig. Das Passwort wird bei der Registration verschlüsselt, demnach muss es auch beim Einloggen verschlüsselt werden um identisch zu sein.

Edit:

Es kommt Zwecks Sicherheit durchaus vor, dass ein erzeugter Hash erneut verschlüsselt wird um die Sicherheit zu erhöhen. Das kann man beliebig oft wiederholen. Schau dich in dem anderen Script einfach mal nach einer Stelle um, die so: md5(md5()); oder so ähnlich aussieht. Dann weißt du, warum der Hash anders ist.