Session wird ungültig durch falsches Bild
Michael Sauter
- php
0 Michael Sauter1 Dennis
0 Rouven0 Norbert
0 Tom
Hi,
folgendes Problem:
ich habe eine Session, in der ich nur eine Variable speichere. Der Inhalt der Variablen soll nun auf einer 2. Seite ausgegeben werden. Dies funktioniert auch. Wenn ich nun aber auf der 1. Seite ein Bild einbinde, das nicht vorhanden ist (falsche URL), dann wird komischerweise die Session ungültig.
Beispiel:
http://www.michaelsauter.net/test/phpsession/datei1.php
Woran kann das liegen? Ist das ein gewolltes Verhalten von PHP oder kann ich etwas dagegen tun - außer korrekte URLs angeben ;) ?
lg,
michael
Sorry, hab noch vergessen:
Hi Michael,
Ist das ein gewolltes Verhalten von PHP oder kann ich etwas dagegen tun - außer korrekte URLs angeben ;) ?
Das dürfte kein gewolltes Verhalten sein, zumindest sehe ich da keinen Sinn drin und habe noch nie davon gehört ;-)
Was ich mir spontan vorstellen kann: Du hast eine eigenen 404-Fehlerseite angegeben (ErrorDocument 404 beim Apache), welches ein PHP-Script ist. Beim Aufruf des nicht existierenden Bildes wird dieses Fehlerscript aufgerufen, welches aus irgendeinem Grund (z.B. fehlerhafte Programmierung *g*) deine Session-Variable löscht oder überschreibt.
Mehr kann man leider aus deinen spärlichen Angaben nicht diagnostizieren ;-)
Viele Grüße,
~ Dennis.
Das wars, danke! Au Mann, das war natürlich blöd von mir, wär aber wahrscheinlich net von allein drauf gekommen (obwohls mir jetzt einleuchtet).
LG,
Michael
Hi Michael,
Das wars, danke! Au Mann, das war natürlich blöd von mir, wär aber wahrscheinlich net von allein drauf gekommen (obwohls mir jetzt einleuchtet).
Hehe, hab ich ja mal gut geraten ;-) Deinen „Link” im Ausgangsposting habe ich doch glatt übersehen, was wohl daran lag, dass es kein Link war (siehe „Verweise einbinden”).
Abgesehen davon passieren solche Sachen natürlich jedem mal ;-)
Viele Grüße,
~ Dennis.
Hello,
irgendwas ist da bei dir/deinem Server faul. Ich hab mir mal die Header ausgeben lassen, vergleich mal die Session-ID, die im Cookie abgelegt wird:
http://www.michaelsauter.net/test/phpsession/datei1.php
GET /test/phpsession/datei1.php HTTP/1.1
Host: www.michaelsauter.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.michaelsauter.net/test/phpsession/datei2.php
Cookie: c_cmsy_lang=de; PHPSESSID=1766aca2237f9ed150eb9a71f59ac859; c_cmsy_lang=de
HTTP/1.x 200 OK
Transfer-Encoding: chunked
--------------: ---
----------------: ----
Date: Wed, 14 Nov 2007 21:03:16 GMT
Server: Apache/1.3.36 (Unix) PHP/4.4.2 FrontPage/5.0.2.4803 mod_fastcgi/mod_fastcgi-SNAP-0404142202 mod_ssl/2.8.27 OpenSSL/0.9.6i
X-Powered-By: PHP/4.4.2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Connection: keep-alive
----------------------------------------------------------
http://www.michaelsauter.net/test/phpsession/sdf.jpg
GET /test/phpsession/sdf.jpg HTTP/1.1
Host: www.michaelsauter.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9
Accept: image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.michaelsauter.net/test/phpsession/datei1.php
Cookie: c_cmsy_lang=de; PHPSESSID=1766aca2237f9ed150eb9a71f59ac859; c_cmsy_lang=de
HTTP/1.x 404 Not Found
Transfer-Encoding: chunked
--------------: ----
----------------: ----
Date: Wed, 14 Nov 2007 21:03:16 GMT
Server: Apache/1.3.36 (Unix) PHP/4.4.2 FrontPage/5.0.2.4803 mod_fastcgi/mod_fastcgi-SNAP-0404142202 mod_ssl/2.8.27 OpenSSL/0.9.6i
X-Powered-By: PHP/4.4.2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=44b39cc5510ea51c7f6b0d9ceb84cbcd; path=/
Set-Cookie: c_cmsy_lang=de; expires=Friday, 14-Dec-07 21:03:16 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
----------------------------------------------------------
Das Image setzt ein Cookie unter einer anderen Session-ID für die gleiche Domain.
MfG
Rouven
Hai,
---------------------------------------------------------- Anfrage
http://www.michaelsauter.net/test/phpsession/sdf.jpg
GET /test/phpsession/sdf.jpg HTTP/1.1
Host: www.michaelsauter.net
Cookie: c_cmsy_lang=de; PHPSESSID=1766aca2237f9ed150eb9a71f59ac859; c_cmsy_lang=de
---------------------------------------------------------- Antwort
HTTP/1.x 404 Not Found
Transfer-Encoding: chunked
Date: Wed, 14 Nov 2007 21:03:16 GMT
Set-Cookie: PHPSESSID=44b39cc5510ea51c7f6b0d9ceb84cbcd; path=/
Set-Cookie: c_cmsy_lang=de; expires=Friday, 14-Dec-07 21:03:16 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Das Image setzt ein Cookie unter einer anderen Session-ID für die gleiche Domain.
oops,
wieso "Das Image ..." ?
Waere das erste Image mit Content-Type: text/html, charset=utf-8 das Kekse verteilt ... ;-)
Es ist die 404-er Seite bzw. 404-er Script.
Gruss Norbert
Hello,
nimm mal diesen Code rein stattdessen,
aber OHNE ein Leerzeichen oder eine Leerzeile vor dem '<?php'
<?php ### seitenaufbau.php ###
session_start();
if(!isset($_SESSION['counter']))
{
$_SESSION['counter'] = 1;
}
else
{
$_SESSION['counter']++;
}
$_SESSION['nummer'] = session_id();
$debuginfo =
"<pre>\n".
htmlspecialchars(print_r($_SESSION,1)).
"</pre>\n";
############################################################
############################################################
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Session-Test</title>
<meta http-equiv="Content-Type" CONTENT="text/html; charset=utf-8">
</head>
<body>
<?php echo $debuginfo; ?>
<img src="sdf.jpg" width="400" height="300" border="0" title="dieses bild gibt es nicht" />
<p><a href="datei2.php">weiter zu datei2</a></p>
</body>
</html>
Und dann sehen wir weiter...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom