kostenloser Webspace werbefrei: lima-city


SESSION wird automatisch als Referenz erstellt

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    midwar

    midwar hat kostenlosen Webspace.

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    midwar schrieb:
    Woran liegt das? Wie kriege ich das weg?
    Wenn man dir helfen soll musst du die Zeile in der
    $name
    zugewiesen (und benutzt) wird posten…
  4. Autor dieses Themas

    midwar

    midwar hat kostenlosen Webspace.

    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
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!