1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Unerklärlicher PHP-Fehler

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von TaTonka, 29.03.08.

  1. TaTonka

    TaTonka Neuer Berner Rosenapfel

    Dabei seit:
    19.03.06
    Beiträge:
    1.961
    Was will mir mein PHP damit sagen? Es geht laut google um irgendwelche komischen Variablenzuweisungen...ich hab grad nen bissl mit Sessions und Cookies rumgespielt, als das kam.

    Kann ich irgendwie die Variablenwerte zur Laufzeit anzeigen lassen, um das mal zu debuggen?
     
  2. _lux_

    _lux_ Bismarckapfel

    Dabei seit:
    23.11.07
    Beiträge:
    75
  3. TaTonka

    TaTonka Neuer Berner Rosenapfel

    Dabei seit:
    19.03.06
    Beiträge:
    1.961
    ich benutze session_register() nicht. ich weise die sessions über $_SESSION[]= zu. deswegen versteh ich ja nicht, warum da das problem auftritt.

    das einzige wo ich vermute, dass es daran liegen könnte ist, dass ich am anfang nachsehe ob ein cookie gesetzt ist, und falls ja, den inhalt des cookies in eine session schreibe.

    ich versuch halt grad irgendwie sowas wie ein loginscript zu schreiben, aber es klappt halt nicht alles, wie ich möchte.
     
  4. _lux_

    _lux_ Bismarckapfel

    Dabei seit:
    23.11.07
    Beiträge:
    75
    vielleicht postest du einfach mal den code ..
     
  5. TaTonka

    TaTonka Neuer Berner Rosenapfel

    Dabei seit:
    19.03.06
    Beiträge:
    1.961
    okay, hier erstmal der code fürs login über eingabemaske:
    Code:
    $user = $_POST['user'];
       $password = $_POST['passwd'];
    
       // check if the user id and password combination exist in database
       $sql = "SELECT *
               FROM users
               WHERE user = '$user'
                     AND password = PASSWORD('$password')";
    
       $result = mysql_query($sql)
                 or die('Query failed. ' . mysql_error());
                 
       if (mysql_num_rows($result) == 1) {
          // the user id and password match,
          // set the session
          $datalin = mysql_fetch_assoc($result);
          $newuin = md5(uniqid(rand()));
          $id = $datalin['id'];
          $_SESSION['UID'] = $newuin;
          $_SESSION['user'] = $datalin['user'];
          $_SESSION['id'] = $id;
          setcookie("UID", $newuin, time()+2419200);
          $query = "UPDATE users SET uid = '$newuin' WHERE id = '$id'";
          mysql_query($query) OR die(mysql_error()); }
    
    und hier der code der am anfang abfragt, ob man nen cookie hat, und entsprechend die UIN setzt.

    Code:
    if(isset($_COOKIE['UID'])){
    	
    	$uin = mysql_real_escape_string($_COOKIE['UID']);
    	$query = "SELECT id, user FROM users AS u WHERE uid = '$uin'";
    	$result = mysql_query($query) OR die(mysql_error());
    	$data = mysql_fetch_assoc($result);
    	$_SESSION['id'] = $data['u.id'];
    	//$_SESSION['user'] = $data['u.user'];
    	//$_SESSION['UID'] = $uin;
    }
    
    ich habe per auskommentieren den fehler schonmal auf die letzten beiden auskommentierten zeilen eingrenzen können.

    das script ist auch noch eher unausgereift, d.h. der cookie wird gesetzt, aber bei erneutem besuch nicht mehr ordentlich ausgewertet.
     
  6. JanK

    JanK Tokyo Rose

    Dabei seit:
    26.03.08
    Beiträge:
    71
    Tipp:

    Sessions muss man erst starten.

    session_start();

    Willst du den User z.B. ausloggen kannst du einfach

    session_destroy();

    ausführen. Im übrigen würde ich bei der Loginmaske nicht die Variable direkt in den SQL-Befehl eingeben. Das mag vielleicht 1 oder 2 quanten performanter sein als eine lokale Prüfung auf übereinstimmungen, aber es erlaubt SQL-Injects.

    Edit: Falls du dich nochmal was genauer in Sessions einlesen willst kann ich dir http://tut.php-q.net/ empfehlen.
     
  7. TaTonka

    TaTonka Neuer Berner Rosenapfel

    Dabei seit:
    19.03.06
    Beiträge:
    1.961
    ja, das hab ich so....naja, ich hab jetzt in der php.ini diese session.bug_compat_42 abgeschaltet, und der fehler tritt nicht mehr auf...und die scripte verhalten sich wie gewünscht...
     

Diese Seite empfehlen