SESSION wird automatisch als Referenz erstellt
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
benutzername
bestehen
buchstabe
code
datum
existiert echo
gespeicherte passwort
gut code
jemand
krieg
leeres array
login
normalen string
referenz
register
richtigen daten
tag
url
variable name
zahl
-
Tag,
irgendwas stimmt grade nicht mit meinem Script. Ein simples einlog Script, das überprüft, ob das in der DB gespeicherte Passwort mit dem eingegebenem übereinstimmt und danach soll $_SESSION['name'] = $name gesetzt werden, weil der User dann als eingeloggt gilt.
So weit so gut.
if($pw == $db_pw) { // Wenn das PW richtig war $_SESSION['name'] = $name; echo "Du wurdest erfolgreich eingeloggt."; }
Wenn ich mich aber einlogge (ganz oben am Script werden sessions natürlich über session_start() gestartet), und mir nach erfolgreichem einloggen mal mit var_dump() $_SESSION ausgeben lasse, erhalte ich:
array(1) { ["name"]=> &string(4) "User" }
Will heißen das ganze ist eine Referenz auf $name. Wann immer ich nun die Variable $name innerhalb meines Scripts änder, wird $_SESSION['name'] mitgeändert und schon gilt jemand anderes als eingeloggt.
Daraufhin habe ich die gesamten Quellcodedateien vom mir nach "&" durchsucht weil laut Google $var1 =& $var2 zum Referenzieren notwendig ist. Jedoch überhaupt nichts gefunden. Laut meinem Code erstelle ich keine Referenz auf $name - was ich ja auch nicht will.
Woran liegt das? Wie kriege ich das weg?
Vielen Dank. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
midwar schrieb:
Wenn man dir helfen soll musst du die Zeile in der
Woran liegt das? Wie kriege ich das weg?
zugewiesen (und benutzt) wird posten…$name
-
Meinst du die Stelle? Hier wird $_SESSION['name'] $name zugewiesen etc...
if(isset($_POST['pw']) and isset($_POST['name'])) { // Wenn Daten eingegeben wurden $name = $_POST['name']; $pw = $_POST['pw']; var_dump($name); // Ergibt einen ganz normalen String, keine Referenz var_dump($_SESSION); // Ergibt ein leeres Array, da noch nicht eingeloggt if(ctype_alnum($name) and ctype_alnum($pw)) { // Wenn Login Daten nur aus Zahlen und Buchstaben bestehen $pw = md5($pw); $result = mysql_query("SELECT pw FROM users WHERE BINARY name = '$name'"); if(mysql_num_rows($result)==1) { // Wenn die richtigen Daten aus der DB zurückkamen while ($row = mysql_fetch_assoc($result)) { $db_pw = $row['pw']; } if($pw == $db_pw) { // Wenn das PW richtig war $_SESSION['name'] = $name; var_dump($_SESSION); // Ergibt eine Referenz auf $name echo "Du wurdest erfolgreich eingeloggt."; } else { // Wenn das Passwort falsch war echo "Tut mir leid, deine Einlogdaten waren falsch."; } } else { // Wenn der Benutzername nicht existiert echo "Dieser Benutzername existiert nicht."; } } else { // Wenn Login Daten nicht nur aus Zahlen und Buchstaben bestehen echo "Benutzername und Passwort dürfen nur aus Zahlen und Buchstaben bestehen!"; } }
EDIT: habe gerade gesehen, das sowas angeblich an register globals liegt, die hier ja angeschaltet sind?
EDIT2: Hab einfach register_globals auf meinem Webspace abgeschaltet und sofort gings ...
Beitrag zuletzt geändert: 26.10.2012 13:12:13 von midwar -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage