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

Fehler bei Überprüfung von Bestätigungscode nicht auffindbar.

NewAgeWarrior

Neues Mitglied
Hi,

Ich habe da ein Script welches einen aus einer Email angeklickten Bestätigungscode überprüft und dann ggf die Daten in der Datenbank aktiv schaltet. Aber leider funktioniert da etwas nicht und er sagt immer das der Name&Code nicht überienstimmt. Ich kann den Fehler einfach nicht finden, auch die Ergebnisse der Suchfunktion waren zwar ein Ansatz ahben mein Problem aber nicht gelöst.

Eventuell kann mir hier jemand helfen. Schon einmal Danke im Vorraus.

Der Link in der Email:

PHP:
[...]

Um deine Anmeldung endgültig abzuschließen klicke bitte auf folgenden Aktivierungslink:
http://www.xx.de/anmeldung/aktivieren.php?user=".$email."&code=".$random_number."
                        
Wir freuen uns auf deinen Besuch!

Die Seite zur Überprüfung:
PHP:
<?
include ("confic.inc");
?>
<?php
$user=$_GET["user"];
$code=$_GET["code"];


if (isset($user) and isset($code)){

$mysql=mysql_fetch_object(mysql_query("SELECT email AND random_number FROM benutzerdaten WHERE email='".$user."'"));
    if ($user = $mysql->email and $code = $mysql->random_number){
    mysql_query("UPDATE benutzerdaten Set aktiv='1'");
    echo "Deine Bestellung wurde aktviert. <br /><br/>
    Sollten noch Fragen bestehen, einfach an [email protected] wenden.<br /><br />";

}

else {

echo "Benutzername stimmt nicht mit dem Registrierungscode überein!";
echo "$mysql";
}
}
else {
echo "Benutzername oder Registrierungscode fehlt!";
exit;
}
?>
Ergebniss ist immer: Benutzername stimmt nicht mit dem Registrierungscode überein!

Schon einmal vielen Dank für eure Hilfe.
 
Zuletzt bearbeitet:
ich vermute jetzt mal ins blaue, dass der "code" aus der ersten box tatsächlich alles ist, was in dieser datei steht.
dann kann das nihct so wirklich klappen.

versuch mal so (ungetestet)
PHP:
$activate = "http://www.xx.de/aktivieren.php?user=".$name."&code=".$register_code;
echo "Um deine Anmeldung abzuschließen klicke bitte auf folgenden Aktivierungslink:";
echo "<br><a href='".$activate."'>".$activate."</a>";
echo "<br>Wir freuen uns auf deinen Besuch! ";
wenn ich mit meiner vermutung falsch iege, wäre ein wenig mehr code evtl vonvorteil ;)
 
Wo verbindest du dich denn mit der Datenbank?
Passiert das vorher irgendwo?

Und wenn du einen Schritt weiter kommen solltets hättets du folgendes Problem. Du hast bei dem Update keine Einschränkung auf einen bestimmten Datensatz. somit setzt er dann alle auf aktiv. Auch hier muss so etwas stehen wie: Where email='$user'
Tipp Nummer 2. Google SQL injection. Dein Code kann böse enden. Denn es sind Zeichen wie ' und " erlaubt.
Nur als Beispiel für deine Freischaltung nkönnte die Person auch andere Personen dann mit rfeischalten (Auch wenn du es wie ich oben beschrieben habe eingeschränkt hast) Dann würde er so etwas schreiben

[email protected]' OR '[email protected]

Dein Script würde dann so etwas daraus machen:

Code:
[COLOR=#000000][COLOR=#DD0000][/COLOR][/COLOR]UPDATE benutzerdaten Set aktiv='1' where email='[email protected]' OR '[email protected]'

Somit immer zusehen dass du das ganze escapest. Das geht mit der Funktion mysql_real_escape_string()
Also sähe es dann so aus:
PHP:
mysql_query("UPDATE benutzerdaten Set aktiv='1' where email='".mysql_real_escape_string($user)."'");
 
-

Hallo,

Also der Link in der ersten Box ist halt der mit dem man dann zu der Seite kommt die das Aktiveirungsscript ausführt.

Die Variable $email kommt per Post aus einem Formular und die random_number wird mit "$random_number = create_random();" erzeugt (in einer externen Datei). Die Verbindung zur Datenbank steht in der oben includierten config.inc.

Das Problem ist ja, beide Variablen werden auch übergebenin die Datenbank geschrieben und in den Link eingefügt. Der Fehler muss also auf der Aktivierungseite liegen denke ich.
 
wie mein vorgänger schon sagte vergleich die werte mal ob die stimmen

Das was ich dir sagen wollte war eigentlich das du mysql_real_escape_string() mit einbaust weil dein Script extem anfällig für SQL Injections ist..
 
Zurück
Oben