Sessionvariablen verschwunden wenn ein <img> nicht auffindba

Alles, was PHP betrifft, kann hier besprochen werden.

Sessionvariablen verschwunden wenn ein <img> nicht auffindba

Postby nathandw » 03. November 2010 12:56

Kann es sein, dass die in einer Session gespeicherten Werte einfach weg sind, wenn im Skript ein Bild oder eine im head eingebundene Css-Datei vom Skript nicht gefunden wird?

Beispieldatei 1 (sessionabbruch01.php):
Code: Select all
<?php
session_start();
$_SESSION[‘var’] = ‘blabla’;
echo ‘<img src=“bild.png” /><br />’;
echo ‘<a href=“sessionabbruch02.php”>klick</a>’;
?>


Beispieldatei 2 (sessionabbruch02.php):
Code: Select all
<?php
session_start();
echo ‘—-’, $_SESSION[‘var’], ‘—-<br />’;
echo ‘<a href=“sessionabbruch01.php”>zurueck</a>’;
?>


Wenn oben das Bild nicht gefunden wird, ist in der zweiten Datei die Sessionvariable nicht da.
Wenn das Bild gefunden wird, dann ist die Sessionvariable da.
Dasselbe passiert wenn eine im head eingebundene JS- oder CSS-Datei nicht vorhanden ist.
ein error_reporting(E_ALL); bringt nur sowas: Notice: Undefined index: var in C:\xampp\htdocs\...\sessionabbruch02.php on line 3

Habe dasselbe auf einem Apache im Web probiert, da wird die Sessionvariable auch übergeben, wenn etwas nicht gefunden wird (zum Glück...).

Ich verwende Xampp 1.7.3 (mit php 5.3.1), hat jemand schonmal ein derartiges Verhalten feststellen können?
nathandw
 
Posts: 10
Joined: 16. November 2006 18:51

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby Nobbie » 04. November 2010 00:10

Diese beiden Scripts sind so der totale Müll, die Quotes sind vollkommen fehlerhaft und das echo-Statement mit den Kommata (statt Punkten) ebenso kaputt. Wenn man die Scripts mit Copy und Paste einfügt und ausführt, hagelt es an schweren Syntaxfehlern.

Wenn man alle Fehler beseitigt, läuft das ganze vollkommen fehlerfrei, auch die Session Variablen bleiben erhalten.
Nobbie
 
Posts: 6920
Joined: 09. March 2008 13:04

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby Xardas der Dunkle » 04. November 2010 00:27

und das echo-Statement mit den Kommata (statt Punkten) ebenso kaputt.

Das ist quatsch. Das echo-Statement kann auch parametisiert aufgerufen werden. Dabei werden dann die einzelnen Parameter hintereinander ausgeben.
Wieso sollte man erst einen String zusammen kloppen?
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby Altrea » 04. November 2010 06:06

Xardas der Dunkle wrote:Das ist quatsch. Das echo-Statement kann auch parametisiert aufgerufen werden.

Da hast du natürlich recht.

Xardas der Dunkle wrote:Wieso sollte man erst einen String zusammen kloppen?

1. Stringverkettung in echos ist in der Regel performanter als der parametisierte Aufruf über Kommata, außer man hat in der Mehrzahl Variablen die man Verkettet, dann hätte die Kommavariante einen hauchdünnen Vorteil. Benchmark
2. Stringverkettung ist in PHP fast überall einsetzbar und damit ein gewohntes Konstrukt für PHP Programmierer.
3. Wenn man einen echo doch in Wirklichkeit als die klassische Stringverkettung (eine Variable + x Textbausteine) verwenden möchte, ist die Stringverkettung semantisch korrekter.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6764
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby nathandw » 04. November 2010 10:02

Danke für die Antworten.
Ich muss mich entschuldigen, @Nobbie hat recht, die Quotes sind Mist.
Passiert ist mir dies weil ich diese Frage zuvor schonmal bei T3N gepostet hatte und hier jetzt einfach den Code aus diesem Post nochmal kopiert hatte...(http://t3n.de/fragen/php-bricht-eine-laufende-session-ab-wenn-im-aufrufenden-skript-ein-bild-nicht).
Deshalb jetzt nochmal richtig
Beispieldatei 1 (sessionabbruch01.php):
Code: Select all
<?php
session_start();
error_reporting(E_ALL);
$_SESSION['var'] = 'blabla';
echo '<img src="bild.png" /><br />';
echo '<a href="sessionabbruch02.php">klick</a>';
?>

Beispieldatei 2 (sessionabbruch02.php):
Code: Select all
<?php
session_start();
error_reporting(E_ALL);
echo '---', $_SESSION['var'], '---<br />';
echo '<a href="sessionabbruch01.php">zurueck</a>';
?>

Wie gesagt, auf anderen Servern tritt das Problem nicht auf, bei mir praktisch nur auf dem Xampp 1.7.3 (mit php 5.3.1), Windows 7, 64bit.
Mir geht es bei meiner Frage auch wirklich nur darum, ob dieses komische Verhalten eventuell an meiner Xampp-Version liegen könnte, praktisch ob jemand dieses schonmal aufgefallen ist.?

Gruß Thomas
~~~~~~~~~~~~
nathandw
 
Posts: 10
Joined: 16. November 2006 18:51

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby Nobbie » 04. November 2010 11:34

nathandw wrote:bei mir praktisch nur auf dem Xampp 1.7.3 (mit php 5.3.1), Windows 7, 64bit


Ich habe hier ein identisches Umfeld und es läuft fehlerfrei.
Nobbie
 
Posts: 6920
Joined: 09. March 2008 13:04

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby Knight1 » 04. November 2010 12:47

@nathandw
Füge das
Code: Select all
if (isset($_COOKIE['PHPSESSID']))
{
session_id ($_COOKIE['PHPSESSID']);
session_start ();
}
else
{
session_start();
}

mal an den jeweiligen Anfang deiner PHP-Dateien ein.
Man muss dem Interpreter nämlich sagen dass er eine bereits existierende Session wiederbeleben soll. Das passiert in dem man die Session-ID an folgende Scripte übergibt.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
XAMPP Version: 5.6.3
Operating System: Windows 7 Ultimate x64

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby nathandw » 04. November 2010 12:51

Ich habe jetzt eine mögliche Fehlerquelle herausgefunden (auch wenn ich mir das nicht wirklich vorstellen kann...):
Im übergeordnetem Verzeichnis meines Testverzeichnisses (also das Testverzeichnis ist das mit den zwei Testdateien und dem Bild) hab ich eine .htaccess, dort drin hab ich (unter anderem) eine Zeile für meine eigene Fehlerseite, etwa so:
Code: Select all
ErrorDocument 404 /projekte/kitaexperte_core_0.9.1/anmeldung/fehler404.php

Wenn ich diese Zeile rausnehme, tritt mein Problem nicht auf (...zeile wieder rein = problem wieder da).
Könnte das etwa damit einen Zusammenhang geben?

Gruß thomas
~~~~~~~~~~~~~~~
nathandw
 
Posts: 10
Joined: 16. November 2006 18:51

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby nathandw » 04. November 2010 12:58

@Knight1:
Danke auch für deinen Tipp, damit klappt es aber leider auch nicht.
Die Dateien mit deinem Tipp:
Code: Select all
<?php
if (isset($_COOKIE['PHPSESSID'])) {
   session_id ($_COOKIE['PHPSESSID']);
   session_start ();
} else {
   session_start();
}
error_reporting(E_ALL);
$_SESSION['var'] = 'blabla';
echo '<img src="bildmmm.png" /><br />';
echo '<a href="sessionabbruch02.php">klick</a>';
?>

Code: Select all
<?php
if (isset($_COOKIE['PHPSESSID'])) {
   session_id ($_COOKIE['PHPSESSID']);
   session_start ();
} else {
   session_start();
}
error_reporting(E_ALL);
echo '---', $_SESSION['var'], '---<br />';
echo '<a href="sessionabbruch01.php">zurueck</a>';
?>
nathandw
 
Posts: 10
Joined: 16. November 2006 18:51

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby Knight1 » 04. November 2010 13:11

nathandw wrote:@Knight1:
Danke auch für deinen Tipp, damit klappt es aber leider auch nicht.
Die Dateien mit deinem Tipp:
Code: Select all
<?php
if (isset($_COOKIE['PHPSESSID'])) {
   session_id ($_COOKIE['PHPSESSID']);
   session_start ();
} else {
   session_start();
}
error_reporting(E_ALL);
$_SESSION['var'] = 'blabla';
echo '<img src="bildmmm.png" /><br />';
echo '<a href="sessionabbruch02.php">klick</a>';
?>

Code: Select all
<?php
if (isset($_COOKIE['PHPSESSID'])) {
   session_id ($_COOKIE['PHPSESSID']);
   session_start ();
} else {
   session_start();
}
error_reporting(E_ALL);
echo '---', $_SESSION['var'], '---<br />';
echo '<a href="sessionabbruch01.php">zurueck</a>';
?>



Natürlich muss die Zeile
Code: Select all
error_reporting(E_ALL);

die erste sein.

Nimm am besten diese Variante
Code: Select all
error_reporting(E_ALL | E_STRICT);

und schreib hier mal die Fehlermeldungen rein die kommen.

Außerdem hast Du hier
Code: Select all
<?php
...
echo '---', $_SESSION['var'], '---<br />';
...
?>

immernoch einen eklatanten Fehler.
Lies dir mal den ersten Post von Nobbie genauer durch. Tipp: Punkte anstelle von Kommata.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
XAMPP Version: 5.6.3
Operating System: Windows 7 Ultimate x64

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby nathandw » 04. November 2010 13:27

@Knight1:
Mit error_reporting oben und den Punkten anstatt Kommas bei dem String ändert sich nichts an dem Problem.
error_reporting(E_STRICT); bringt gar keinen Fehler und
error_reporting(E_ALL); bringt 'Notice: Undefined index: var in C:\xampp\htdocs\projekte\kitaexperte_core_0.9.1\desdSession\sessionabbruch02.php on line 9'
Vorsichtshalber nochmal den Code jetzt:
Code: Select all
<?php
error_reporting(E_STRICT);
if (isset($_COOKIE['PHPSESSID'])) {
   session_id ($_COOKIE['PHPSESSID']);
   session_start ();
} else {
   session_start();
}
$_SESSION['var'] = 'blabla';
echo '<img src="bildmmm.png" /><br />';
echo '<a href="sessionabbruch02.php">klick</a>';
?>

Code: Select all
<?php
error_reporting(E_STRICT);
if (isset($_COOKIE['PHPSESSID'])) {
   session_id ($_COOKIE['PHPSESSID']);
   session_start ();
} else {
   session_start();
}
echo '---'. $_SESSION['var']. '---<br />';
echo '<a href="sessionabbruch01.php">zurueck</a>';
?>

Ich denke, dass die Problemursache eventuell mit der .htaccess (in meinem vorletztem? Post) zu tun haben könnte...
nathandw
 
Posts: 10
Joined: 16. November 2006 18:51

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby Altrea » 04. November 2010 14:15

Vielleicht kannst du ja über Apache access.log und error.log der Sache auf die Spur kommen.
Möglich ist vieles. Wäre nicht das erste Mal, dass eine .htaccess ein unerwartetes Verhalten produziert (bemerkt sollte werden, dass dies in aller Regel an eine falsche Konfiguration eben dieser lag)
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 6764
Joined: 17. August 2009 13:05
XAMPP Version: 5.5.19
Operating System: W7Ux64

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby Knight1 » 04. November 2010 14:24

nathandw wrote:...
error_reporting(E_ALL); bringt 'Notice: Undefined index: var in C:\xampp\htdocs\projekte\kitaexperte_core_0.9.1\desdSession\sessionabbruch02.php on line 9'
...

Sagt doch alles.

nathandw wrote:...
error_reporting(E_STRICT); ...
error_reporting(E_ALL);
...

Wieso hast Du denn die beiden Error-Level getrennt?
Lass' die Angabe doch so wie ich sie vorgeschalgen habe. Damit ist nämlich alles an Errors und Warnings usw. abegdeckt.

Was schreibt er denn wenn Du
Code: Select all
echo ini_get('session.save_handler')."<br>";
echo ini_get('session.save_path')."<br>";
echo ini_get('session.use_cookies')."<br>";
echo ini_get('session.name');

schreibst?

Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
XAMPP Version: 5.6.3
Operating System: Windows 7 Ultimate x64

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby nathandw » 04. November 2010 14:48

@Altrea:
Upps, mit den log-Dateien hab ich mich noch nie groß rumgeschlagen :oops: .
Das ist aber gleich mal ein guter Grund, dies jetzt zu tun.
Kann dauern... ich meld mich dann wieder diesbezüglich.

Gruß Thomas
~~~~
nathandw
 
Posts: 10
Joined: 16. November 2006 18:51

Re: Sessionvariablen verschwunden wenn ein <img> nicht auffi

Postby nathandw » 04. November 2010 15:01

@Knight1:
die ini_get-Aufrufe
Code: Select all
echo ini_get('session.save_handler')."<br>";
echo ini_get('session.save_path')."<br>";
echo ini_get('session.use_cookies')."<br>";
echo ini_get('session.name');
bringen das:

files
C:\xampp\tmp
1
PHPSESSID

Sagt dir das etwas? Ich hoffe mal.

Sagt doch alles.
Naja, sagt dass die Sessionvariable nich da ist. Das ist doch eben das Problem, aber warum ist sie nich da, das wüsste ich gern.

Wieso hast Du denn die beiden Error-Level getrennt?
War nicht wichtig, wollte damit nur sagen, dass bei 'strict' keine Meldung, aber bei 'all' eben diese (mir nicht weiterhelfende) Meldung kommt.

Gruß Thomas
~~~~~~~~~~~~~~~
nathandw
 
Posts: 10
Joined: 16. November 2006 18:51

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 5 guests