tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1156
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Schind Schind ist offline Mitglied Bronze
    Registriert seit
    Jul 2003
    Beiträge
    28
    Hallo zusammen!
    Ich habe ein kleines PHP-Skript geschrieben, das für einen User ein neues Passwort generiert, diesem per Mail zuschickt und es md5-verschlüsselt in die Datenbank speichert.

    Eigentlich sollte das Ganze kein Problem sein, allerdings tritt bei mir ein seltsames Problem auf: Anstatt des verschlüsselten Passwortes wird in der DB immer der Wert 'd41d8cd98f00b204e9800998ecf8427e' gespeichert, unabhängig davon, welches Passwort generiert wird.

    Die beiden Ausgaben der Variable $gensql vor und nach dem Query geben allerdings den richtigen Query-String mit dem generierten Passwort aus.

    Ich hoffe wirklich, jemand kann mir helfen, da ich schon seit geraumer Zeit versuche, das Problem zu lösen, aber einfach keinen Fehler erkennen kann.

    Hier der notwendige Cocde:

    PHP-Code:
    <?
    function generatePassword($length 8)
        {
            
    $possibleChars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            
    srand((double)microtime() * 1000000);    // Zufallsgenerator auf Startwert setzen
            
    $password "";
            for(
    $i 0$i $length$i++)
            {
                
    $randval rand(0strlen($possibleChars));
                
    $password .= $possibleChars[$randval];
            }
            return 
    $password;
        }
    ?>
    <form name="passwordform" action="main.php?site=generate_password&id=<? echo $_GET['id']; ?>" method="post">
        <table>        
    <?
        
    if(isset($_POST['senden']))
        {
            
    $pwd generatePassword();
            
    $gensql "UPDATE user SET passwort = '" md5($pwd) . "' WHERE id = " $_GET['id'];
            echo 
    $gensql;                
            if(
    $query mysql_query($gensql))
            {            
                echo 
    $gensql;
    ?>
            <tr class="text" height="40px" valign="center">
                <td colspan="2"><b>Das Passwort wurde erfolgreich geändert.</b></td>
            </tr>
    <?
            
    } else
            {
    ?>
            <tr class="text" height="40px" valign="center">
                <td colspan="2"><b>Fehler: Das Passwort konnte nicht geändert werden.</b></td>
            </tr>
    <?
            
    }
        } else
        {
    ?>
            <tr height="30px"><td></td></tr>
    <?
        
    }
    ?>
            <tr class="text">
                <td colspan="2">
                    Beim Klicken auf den Button wird ein 8 Zeichen langes Passwort generiert, das aus Kleinbuchstaben, Großbuchstaben und Ziffern besteht.
                </td>            
            </tr>
            <tr height="40px" valign="center">
                <td colspan="2" align="center">
                    <input type="submit" name="senden" value="Passwort generieren" />
                </td>
            </tr>        
        </table>
    </form>
    Vielen Dank schon im Voraus für eure Mühen.
     

  2. #2
    ne0hype ne0hype ist offline Mitglied Brokat
    Registriert seit
    Mar 2007
    Beiträge
    274
    Hi,

    und den User mit der ID gibt es wirklich? Und du bist dir auch sicher das das Query ausgeführt wird?

    gruß ne0hype
     

  3. #3
    Schind Schind ist offline Mitglied Bronze
    Registriert seit
    Jul 2003
    Beiträge
    28
    Ja, den User gibt es wirklich.

    Und es wird *irgendein* Query ausgeführt, das ist ja das Problem.

    konkretes Beispiel:
    DB schaut so aus:

    id benutzername passwort vorname nachname
    ---------------------------------------------
    140 test blabla Test FILIALLEITER


    Ich klicke auf Passwort generieren, die beiden Ausgaben geben folgendes aus:
    UPDATE user SET passwort = '0719a8fe97bb767134a59342d6f989e5' WHERE id = 140
    UPDATE user SET passwort = '0719a8fe97bb767134a59342d6f989e5' WHERE id = 140
    Die DB sieht anschließend so aus:

    id benutzername passwort vorname nachname
    ---------------------------------------------
    140 test d41d8cd98f00b204e9800998ecf8427e Test FILIALLEITER


    Es wird also *irgendwie* nicht das Query, sondern ein anderes ausgeführt.. Ich versteh das einfach nicht
     

  4. #4
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Also, der Hash "d41d8cd98f00b204e9800998ecf8427e" steht für einen leeren String.

    Sprich:

    PHP-Code:
    <?php
    echo md5('');
    ?>
    Wird dir genau diesen Hash ausgeben.

    Dementsprechend ist aus irgendeinem Grund in deinem Query die Variable $pwd leer.

    Hast du mal testweise mit einem Fixwert versucht zu arbeiten?
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  5. #5
    Schind Schind ist offline Mitglied Bronze
    Registriert seit
    Jul 2003
    Beiträge
    28
    ja, hab ich versucht, und das hat auch nicht funktioniert. Aber immerhin weiß ich jetzt, dass der Wert für einen Leerstring steht. Trotzdem sehr seltsam.
     

  6. #6
    Schind Schind ist offline Mitglied Bronze
    Registriert seit
    Jul 2003
    Beiträge
    28
    Problem gelöst.. Weiter unten im Code hatte ich noch nicht korrekt auskommentierten PHP-Code, der dann den Leerstring in die DB geschrieben hat.. Lool

    Trotzdem vielen Dank für eure Hilfe.
     

Ähnliche Themen

  1. Allokiertes Array, 1. Wert falscher Wert
    Von Nadriel im Forum C/C++
    Antworten: 9
    Letzter Beitrag: 28.07.10, 21:13
  2. Vergleich mit Javascript, falscher Wert wird wiedergegeben
    Von Gunah im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 12.06.09, 19:23
  3. [MySQL] Falscher Wert COUNT()
    Von boykottke im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 19.02.08, 00:45
  4. [Vb.Net] .bat wird an einem falschen Ort gespeichert !
    Von Maxro im Forum .NET Windows Forms
    Antworten: 0
    Letzter Beitrag: 12.07.07, 15:37
  5. MySql Update keine Werte gespeichert
    Von xppx im Forum PHP
    Antworten: 39
    Letzter Beitrag: 21.04.07, 10:44