noch einmal: PHP Session und Firefox: neue Erfahrungen
Dula
- php
Es tut mir leid, dass ich jetzt erst antworte, da ich vereist war.
Vielen Dank für Eure Antworten.
Nur: Firefox eliminiert seit einiger Zeit Bilder, die nicht geladen
werden können. <img src=""> ist ein nicht ladbares Bild.
Genau dies scheint das Problem in Firefox zu seien.
Ich habe in mehreren Stellen gelesen, dass kleine Fehler in html-Code sorgen dafür, dass Firefox die Session-Daten vergisst.
Ich habe die Sesiion-Datei mehrfach untersucht bei den verschieden Browser an den verschieden Stellen, bis ich den Fehler gefunden habe!
Eine vernünftige Einstellung des error_reporting hätte dir das
vermutlich durch eine Fehlermeldung vom Level "Notice" auch mitgeteilt.
Dies ist das Problem. Ich erhalte überhaupt keine Fehlermeldung. Es gibt auch keinen Fehler! Es ist einfach so: die Session-Daten werden nicht gespeichert, bzw. gelöscht!
Mit allen bekannten Browser geht es aber nicht mit Firefox.
Unsinn.
Wahrscheinlich habe ich mich nicht klar ausgedrückt. Das Problem war nicht das Anzeien von „blankbar.gif“ – dies kann man sowieso nicht sehen – sondern das Firefox die Session-Daten vergisst!
Du kannst nicht erzählen, dass irgendein Browser aus src="" die URL
deines Bildes errät.
Dies habe ich nie behautet.
Eher deiner eigenen Schusseligkeit.
Stimmt!
Aber da alle anderen Browser keine Probleme hatten, und viele Leute hatten ähnliche Probleme mit Firefox hatten, war es „mir“ klar, dass das Problem bei Firefox liegt.
Es ist meiner Meinung nach ein Problem von Firefox! Warum löscht es die Session-Daten nur weil ‚src=""' ist!!!
Entschuldigung! Der erste Eintrag war vom 24. 07. 2009, 11:39 (im Juli-Archiv)
Entschuldigung! Der erste Eintrag war vom 24. 07. 2009, 11:39 (im Juli-Archiv)
Was hindert dich, den Eintrag zu verlinken? :)
Hallo,
Es tut mir leid, dass ich jetzt erst antworte, da ich vereist war.
ach, und nun bist du wieder enteist?
Nur: Firefox eliminiert seit einiger Zeit Bilder, die nicht geladen werden können. <img src=""> ist ein nicht ladbares Bild.
Genau dies scheint das Problem in Firefox zu seien.
... das sich wie äußert?
Ich habe in mehreren Stellen gelesen, dass kleine Fehler in html-Code sorgen dafür, dass Firefox die Session-Daten vergisst.
Nein. Die Session-Daten werden auf dem Server verwaltet, davon kriegt der Browser nichts mit. Lediglich die Session-ID speichert der Browser in der Regel in einem Cookie.
Eine vernünftige Einstellung des error_reporting hätte dir das vermutlich durch eine Fehlermeldung vom Level "Notice" auch mitgeteilt.
Nein, hier nicht.
Dies ist das Problem. Ich erhalte überhaupt keine Fehlermeldung. Es gibt auch keinen Fehler!
Logisch. Der Ausdruck
"images/blankbar.gif";
ist eine syntaktisch gültige PHP-Anweisung. Sie ist sinnlos, aber korrekt: Sie wertet eine Stringkonstante aus, tut nichts damit und vergisst sie wieder.
Es ist einfach so: die Session-Daten werden nicht gespeichert, bzw. gelöscht!
Dieses Mysterium solltest du bitte noch eingehender beleuchten. Mir ist nicht klar, wie du auf die Idee kommst, dass der Server(!) Session-Daten verändern sollte, nur weil eine bestimmte Ressource (hier: ein Bild) *nicht* angefordert wird.
Wenn das tatsächlich so sein sollte, dann hast du einen gravierenden Fehler im Konzept deiner serverseitigen Verarbeitung, der mit einem anderen Browser auch auftreten müsste, sobald jemand auf die Idee kommt, Bilder nicht anzeigen zu lassen.
Wahrscheinlich habe ich mich nicht klar ausgedrückt. Das Problem war nicht das Anzeien von „blankbar.gif“ – dies kann man sowieso nicht sehen – sondern das Firefox die Session-Daten vergisst!
Unsinn.
Es ist meiner Meinung nach ein Problem von Firefox! Warum löscht es die Session-Daten nur weil ‚src=""' ist!!!
Das kann nur ein kleines Symptom eines viel größeren Problems sein.
So long,
Martin
Hallo Martin,
ein Link zu dem Eintrag:
http://forum.de.selfhtml.org/archiv/2009/7/t189149/
ach, und nun bist du wieder enteist?
!!!! verreist !!!
Nein. Die Session-Daten werden auf dem Server verwaltet, davon kriegt der Browser nichts mit. Lediglich die Session-ID speichert der Browser in der Regel in einem Cookie.
Die Session-Dateien, die auf dem Server gespeichert waren, hatten unterschielichen Inhalte! Bei Firefox war der Inhalt anders als bei den anderen Browsers
Wieso, warum keine Ahnung. Ich weiß nur, als src="images/blankbar.gif" war hat es funktioniert.
Dieses Mysterium solltest du bitte noch eingehender beleuchten. Mir ist nicht klar, wie du auf die Idee kommst, dass der Server(!) Session-Daten verändern sollte, nur weil eine bestimmte Ressource (hier: ein Bild) *nicht* angefordert wird.
Ich werde ein Beispiel bald schreiben.
Überingens das Bild wird angezeigt. Man sieht es nicht (weiß auf weiß, dient als Platzhalter).
Danke
Hi,
Wahrscheinlich habe ich mich nicht klar ausgedrückt.
Hast du denn vor, irgendwann auch noch mal damit anzufangen?
Das Problem war nicht das Anzeien von „blankbar.gif“ – dies kann man sowieso nicht sehen – sondern das Firefox die Session-Daten vergisst!
Der Client kann keine Session-Daten vergessen, da diese auf dem Server liegen.
Er kann höchstens die Session-ID "vergessen", bzw. aus irgendwelchen Gründen beim nächsten Request unterschlagen.
Es ist meiner Meinung nach ein Problem von Firefox! Warum löscht es die Session-Daten nur weil ‚src=""' ist!!!
Von Sessions war im anderen Thread - ausser in der Überschrift - überhaupt nicht die Rede.
Das bedeutet auch, dass eine *brauchbare* Problembeschreibung deinerseits nach wie vor aussteht.
MfG ChrisB
Vielen Dank für euer Verständnis!!!
Hier ist ein Beispiel, das bei IE finktioniert aber nicht bei FF!
p1.php
<?
session_start();
$_SESSION['id'] = session_id();
if (!isset($_SESSION['start'])){
$_SESSION['start'] = 'start';
$_SESSION['test'] = "";
$_SESSION['name'] = "no_name";
}
echo "In SESSION gespeichert<br>";
echo "id: ".$_SESSION['id']."<br>";
echo "start: ".$_SESSION['start']."<br>";
echo "test: ".$_SESSION['test']."<br>";
echo "name: ".$_SESSION['name']."<br>";
if ($_SESSION['test'] == "P2"){
$_SESSION['test'] = "P1";
}
if ($HTTP_POST_VARS['send'] == "Anfrage senden"){
echo "name (post): ".$HTTP_POST_VARS['name']."<br>";
$name = $HTTP_POST_VARS['name'];
$_SESSION['name'] = $name;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>
<body>
<a href="p2.php" target="_self">P2</a>
</body>
</html>
p2.php
<?
session_start();
$_SESSION['id'] = session_id();
echo "In SESSION gespeichert<br>";
echo "id: ".$_SESSION['id']."<br>";
echo "start: ".$_SESSION['start']."<br>";
echo "test: ".$_SESSION['test']."<br>";
echo "name: ".$_SESSION['name']."<br>";
$name = $_SESSION['name'];
$_SESSION['test'] = "P2";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>
<body>
<form action="p1.php" method="post" target="_self">
Name <input name="name" type="text" size="35" maxlength="35" value=<? echo $name; ?>>
<br><br>
<input name="send" type="submit">
</form>
</body>
</html>
in p2.php wurde "tester" als name eingegeben.
Hier ist der Inhalt der Session-Dateien:
IE
P1 gestartet:
id|s:32:"de46863b729ecc1083d65327fa2b2a1f";start|s:5:"start";test|s:0:"";name|s:7:"no_name";
P2 gestartet:
id|s:32:"de46863b729ecc1083d65327fa2b2a1f";start|s:5:"start";test|s:2:"P2";name|s:7:"no_name";
P1 wieder gestartet:
id|s:32:"de46863b729ecc1083d65327fa2b2a1f";start|s:5:"start";test|s:2:"P1";name|s:6:"tester";
FF
P1 gestartet:
id|s:32:"eddd735f22c6fe8c7edb42c3bea8e75a";start|s:5:"start";test|s:0:"";name|s:7:"no_name";
P2 gestartet:
id|s:32:"eddd735f22c6fe8c7edb42c3bea8e75a";start|s:5:"start";test|s:2:"P2";name|s:7:"no_name";
P1 wieder gestartet:
id|s:32:"eddd735f22c6fe8c7edb42c3bea8e75a";start|s:5:"start";test|s:2:"P1";name|s:7:"no_name";
Bei FF bleibt der Inhalt des Feldes "name" immer "no_name".
Vielleicht mache ich irgendo einen Fehler. Aber nur FF (3.0.8) reagiert so komisch!
Hi,
Hier ist ein Beispiel, das bei IE finktioniert aber nicht bei FF!
Hier ist ein Beispiel, dass du nicht vernünftig debuggt hast, und die Schuld jetzt auf den Browser schiebst.
if ($HTTP_POST_VARS['send'] == "Anfrage senden"){
Abgesehen davon, dass $HTTP_POST_VARS hoffnungslos veraltet ist (nutze $_POST, wenn deine PHP-Version keine absolut vorsintflutliche ist) -
<input name="send" type="submit">
Hast du nirgends - also nimmt jeder Browser dafür (s)einen Defaultwert.
Bei FF bleibt der Inhalt des Feldes "name" immer "no_name".
Kein Wunder - er wird nirgends mit einem anderen Wert belegt, weil obige If-Bedingung wohl schlicht und einfach nicht erfüllt wird.
Vielleicht mache ich irgendo einen Fehler. Aber nur FF (3.0.8) reagiert so komisch!
Nein, mein IE reagiert genauso "komisch" - da ich ein englischsprachiges System habe, nimmt er "Submit Query" als Default-value für den Submit-Button, und um das als ziemlich wörtliche Übersetzung für "Anfrage senden" zu erkennen, reicht die KI, die du in einem Script implementiert hast, leider nicht aus.
MfG ChrisB
Vielen Dank für Eure Mühe.
Ich habe gelernt, daß FF sehr sensible ist, und der Code darf keine (kleine?) Fehler haben!
Hi,
Ich habe gelernt,
Das wäre schön, wenn du etwas (dazu-)gelernt hättest, aber -
daß FF sehr sensible ist,
Der FireFox* ist hier überhaupt nicht "sensibel".
Er schickt lediglich deinem Script nicht genau die Daten, die es erwartet - weil *du* versäumt hast, ihm zu sagen, welche Daten genau das sein sollen.
und der Code darf keine (kleine?) Fehler haben!
Es war kein Fehler im Code, zumindest nicht im clientseitigen.
Und der serverseitige ging von falschen Voraussetzungen aus, was du offenbar immer noch dem Client anlasten willst - so lange du dabei bleibst, kann von "was gelernt" leider nicht die Rede sein.
* Btw., ich hatte doch erwähnt, dass in meinem IE genau das gleiche passiert. Falls du also FF-Bashing zu betreiben versuchst, stellst du dich dabei äusserst ungeschickt an ...
MfG ChrisB