• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Register - Passwörter stimmen nicht überein ?

maria1

Mitglied
Hy,

Hab seit kurzem Probleme mit meinem Register Script.

Ich versuche mich zu registrieren und gebe die selben Passwörter ein, klar. Es kommt dennoch die meldung "Passwörter stimmen nicht überein".

Wiso ?

Script:

Code:
<?php
error_reporting(0);
ini_set('display_errors', 1);


$random = rand(23456789,98765432);


if (isset($_POST['submit'])) {
    $userDatas = array(
                       
                       'username'        => isset($_POST['username'])       ? (string)trim($_POST['username'])       : '',
                       'email'             => isset($_POST['email'])            ? (string)trim($_POST['email'])            : '',
                       'password'        => isset($_POST['password'])       ? (string)trim($_POST['password'])       : '',
                       'repeat_password' => isset($_POST['repeatpassword']) ? (string)trim($_POST['repeatpassword']) : '',
                       'random' => rand(23456789,98765432),
                       'date'            => date('Y-m-d'));


    // an empty input is not allowed    
    if (!empty($userDatas['username']) && !empty($userDatas['email']) && 
        !empty($userDatas['password']) && !empty($userDatas['repeat_password'])) {








        if ($userDatas['password'] == $userDatas['repeat_password']) {
            include ('mysql_connect.php'); 


            $sql = "INSERT INTO `users`
                    (
                     `id`,
                     `username`,
                     `password`,
                     `date`,   
                     `email`, 
							`random`,
							`activated`                  
                    )
                    VALUES 
                    (
                     '',
                     '".mysql_real_escape_string($userDatas['username'])."',
                     '".mysql_real_escape_string($userDatas['password'])."',
                     '".mysql_real_escape_string($userDatas['date'])."',
                     '".mysql_real_escape_string($userDatas['email'])."',
       					'".mysql_real_escape_string($userDatas['random'])."',
                     '0'
                    )";
                    
                    $lastid = mysql_insert_id();
                   




                
                    
                    
                    
            $result = mysql_query($sql);
            
            if ($result) {
            	mail($to, $subject, $body, "From: $sender")  ;     
                die('Registrierung erfolgreich. <a href="index.php">Login</a>');
            }
        } else {
            echo 'Passwörter stimmen nicht überein';
        }


    } else {
        echo 'Bitte füllen sie die gekennzeichneten felder aus.';
    }
}




?>


<div id='registerhead'></div>
<div id='register'>
<form action='index.php?page=register' method='POST' autocomplete='off'>
    <table>
    <tr>
        <td>
        Username
        </td>
        <td>
        <input class='kontaktbg' type='text' name='username' value='<?php echo isset($_POST['username']) ? htmlentities(trim($_POST['username'])) : ''; ?>' />
        </td>
    </tr>
    
    
    <tr>
        <td>
        Email:
        </td>
        <td>
        <input class='kontaktbg'  type='text' name='email' value='<?php echo isset($_POST['email']) ? htmlentities(trim($_POST['email'])) : ''; ?>' />
        </td>
    </tr>
    
    <tr>
        <td>
        Password:
        </td>
        <td>
        <input class='kontaktbg'  type='password' name='password' />
        </td>
    </tr>
    
            <tr>
        <td>
        Password Repeat:
        </td>
        <td>
        <input class='kontaktbg'  type='password' name='repeatpassword' />
        </td>
    </tr>
</table>
<p>
<input id='registersend' type='submit' name='submit' value='' />
</div>
<?php include('member.inc.php'); ?>
 
Kann man an dieser Stelle schlecht sagen,

aber lass dir mal mit print_r die Inhalte vor dieser Zeile anzeigen:
if ($userDatas['password'] == $userDatas['repeat_password'])

Dann siehst du ja den Unterschied und kannst nach dem Grund suchen.
 
Kann man an dieser Stelle schlecht sagen,

aber lass dir mal mit print_r die Inhalte vor dieser Zeile anzeigen:
if ($userDatas['password'] == $userDatas['repeat_password'])

Dann siehst du ja den Unterschied und kannst nach dem Grund suchen.

print_r .. versteh ich nicht ganz, auch nach den beispielen auf php.net ...
Wie geb ich die passwörter aus ? reicht ein echo auch ?
 
Ich bekomm diese ausgabe : "Password" ohne anführungszeichen

wenn ich mich registriere und bei password und repeatpassword "Password" eingebe, klappt es :(

Wo ist mein fehler ?
 
ich vermute mal in deinem Formular.
du sendest nicht den Inhalt vom Input Password sondern die Beschreibung für das Feld. Mit welchem Browser testet du?
 
(string)trim($_POST['password'])

Was hat es mit dem String in Klammern auf sich?
Ansonsten sehe ich keinen Fehler. Leere mal den Cache und drück ein paar mal F5 oder nimm mal einen anderen Browser testweise.
 
Soll ich dir die Antwort nennen? Ach was solls, du fragst ja nicht, weil du Lust an der Sache hast, sondern Hilfe brauchst, also klar soll ich Sie nennen :) ..

Tu ich aber nicht, ich werde dir ein Tipp geben, denn Rest darfst du selbst machen, denn das wirst du bei 99.999999% deiner Projekte machen müssen.
Schreibfehler oder kleinigkeiten sind ganz normal für einen Menschen und außer mir sind auf dem Planeten Erde wohl nur Menschen Programmierer.
Debugging oder Reverse Engineering sind sehr nützliche Skills und können einen STUNDEN/TAGE einsparen! Stell dir vor du bist in Zeitdruck ( Wirst du auch zu 95% sein! ) und der Kunde will MORGEN alles haben und eigentlich hast du alles richtig, aber es funktioniert einfach nicht.. dann muss du unter Stress erstmal rausfinden, dass du ´ statt ` gemacht hast und dadurch der ganze Code falsch ist. ( Das war nur ein Beispiel ohne Relevanz [ Picture Unrelated ] ).

Tipp: Was fällt dir hier auf?

Code:
echo $userDatas['repeat_password'];
echo $userDatas['repeatpassword'];

var_dump( $userDatas['repeat_password']==$userDatas['repeatpassword'] );
 
Besser so:
PHP:
echo '*', $userDatas['repeat_password'], '*';
echo '*', $userDatas['repeatpassword'], '*';
So siehst du ob vielleicht ein Leerzeichen
 
Ich habe im geposteten Code den Datenbankeintrag durch eine Kontrollausgabe ersetzt. Bei mir wird die erreicht.

Anders gesagt: Die Ursache liegt ziemlich sicher anderswo.

Die Sache mit trim wäre prinzipiell so übrigens sinnvoller:

PHP:
trim((string) $_POST['something']);

POST-Felder können Arrays enthalten (müsste ein Nutzer aber, wenn nicht ohnehin vorgesehen, absichtlich durch Manipulation des Requests provozieren), trim verlangt aber Strings. Würde hier ein Array übergeben, würde trim den String "Array" liefern. Ob das akzeptabel ist oder ob eine vorherige Prüfung aller Eingaben auf is_array sinnvoller wäre, ist mehr oder weniger Geschmackssache.
 
Die Ausgabe ist nicht relevant, ich bezog mich eigentlich nur auf den Variablen Namen^^

$testedies = 'Hallo Welt';

echo $teste_dies; // Das gibt -nicht- 'Hallo Welt' aus, sondern wahrscheinlich eine Warning Meldung.
 
Die Ausgabe ist nicht relevant, ich bezog mich eigentlich nur auf den Variablen Namen^^

$testedies = 'Hallo Welt';

echo $teste_dies; // Das gibt -nicht- 'Hallo Welt' aus, sondern wahrscheinlich eine Warning Meldung.
Ach so, hatte ich gar nicht gesehen. Ich habe aber den Orginalcode mehrmals durchgeschaut, dort ist kein Tippfehler drin. Sie benutzt für die interne Datenstruktur eine andere Bezeichnung, als für die Postvariabel. Das ist zwar verwirrend, aber nicht falsch.
 
Zurück
Oben