kostenloser Webspace werbefrei: lima-city


SESSION wird automatisch als Referenz erstellt

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m****r

    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

    m****r

    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!