• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Unerklärlicher PHP-Fehler

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

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?
 

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
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.
 

_lux_

Bismarckapfel
Registriert
23.11.07
Beiträge
75
vielleicht postest du einfach mal den code ..
 

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
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.
 

JanK

Tokyo Rose
Registriert
26.03.08
Beiträge
70
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.
 

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
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...