Sessions (Apache, XAMPP)
Firzen
- php
Moin,
irgendetwas läuft da bei mir (wieder mal nur bei mir) extrem falsch.
Habe ein PHP Script, in dem ich Sessions für eine Administration brauche.
Ich nutze Apache 2.2.4 in XAMPP 1.6.2 (Windows) mit PHP 5.2.2, aber mein Apache ignoriert meine Session-Befehle.
Zur Info direkt:
Am Session-Savepath liegt's eher nicht, da dieser so lautet:
session.save_path = "C:\Programme\xampp\tmp"
phpinfo() sagt:
Session Support enabled
Am Script kann es nicht liegen, da es auf dem Webserver von einem Freund einwandfrei läuft. (Aber irgendwie muss ich das ja auch bei mir hinbekommen
Hier mal das Script, dass ich zum Testen benutzt habe. (Ist auch das erste Mal, dass ich was mit Sessions mache)
<?php
$testbool = false;
session_start();
if(isset($_SESSION["testvar"]))
{ $testbool = true; }
else
{ $_SESSION["testvar"] = "Hallo Du. Dies ist ein Test!"; }
if($testbool)
{ echo $_SESSION["testvar"]; }
?>
An meiner Firewall (wegen Cookies) liegt es nicht, localhost darf Cookies setzen.
Würde mich über schnelle Antworten freuen.
MfG Firzen
Hey Firzen,
sorry, so genau finde ich da auf die schnelle keine Lösung aber
vielleicht hilft Dir der
Link weiter: http://tut.php-quake.net/sessions.html
Ciao Benny
he
irgendetwas läuft da bei mir (wieder mal nur bei mir) extrem falsch.
Inwiefern? Was hast du erwartet, was ist stattdessen passiert?
gruß bascombe
Inwiefern? Was hast du erwartet, was ist stattdessen passiert?
Garnichts.
Keine Fehlermeldung, die session-Befehle werden einfach ignoriert.
Aber das habe ich schon mal bemerkt, als ich einen TS Server lokal hatte und nicht in die Administration kam.
Jetzt weiß ich, dass es daran liegt, dass mein Apache irgendwie keine Sessions macht.
he
Inwiefern? Was hast du erwartet, was ist stattdessen passiert?
Garnichts.
Keine Fehlermeldung, die session-Befehle werden einfach ignoriert.
Woher weißt du das? Das Script, das du gepostet hast, gibt im Erfolgsfall nichts aus. Beachte auch dedlfixs Hinweise.
gruß bascombe
Also erstmal danke für die schnellen Antworten.
Im error.log von Apache steht nichts, was damit etwas zu tun haben könnte. Bzw. es kommt auch nichts neues dazu, wenn cih das Script ausführen lasse.
Mein Script gibt beim ersten Aufruf nichts aus, beim erneuten Aufruf dann jedoch den Text, den ich in die Session-Variable geschrieben habe und bei jedem weiteren Aufruf natürlich auch, aber der Text kommt halt garnicht bei mir, egal wie oft ich die Seite neu lade.
display_errors ist on bei mir und error_reporting 6135, kann das ja mal umstellen, wenn's was bringt.
he
Mein Script gibt beim ersten Aufruf nichts aus, beim erneuten Aufruf dann jedoch den Text, den ich in die Session-Variable geschrieben habe und bei jedem weiteren Aufruf natürlich auch, aber der Text kommt halt garnicht bei mir, egal wie oft ich die Seite neu lade.
Du widersprichst dir. Wird nun Text ausgegeben oder nicht?
Verwende zu deinem Test mal dieses Script:
<?php
error_reporting(E_ALL);
$testbool = false;
session_start();
if(isset($_SESSION["testvar"]))
{
$testbool = true;
$_SESSION["testvar"] = "OK!";
}
else
{
echo "FEHLER!";
exit;
}
if($testbool)
{
echo $_SESSION["testvar"];
exit;
}
?>
gruß bascombe
Mal ganz abgesehen davon, dass ich mir nicht widerspreche, hast Du wohl mein Script nicht verstanden.
Wenn ich es aufrufe, wird eine Session gestartet oder eine bestehende wieder aufgenommen.
Dann wird geprüft, ob die Session-Variable testvar vorhanden ist, wenn nicht, wird sie gesetzt und nichts ausgegeben.
Wenn doch, dann wird die testvar-Variable ausgegeben.
Bei mir kommt garkein Text bei meinem Testscript und ich habe auch mal mit Session-IDs versucht, was eigentlich passiert, bei jedem Aufruf wird eine neue Session gestartet und nicht die bestehende weitergeführt.
Bei Deinem Testscript kommt übrigens immer nur "Fehler!".
Damit jetzt keiner auf diese Idee kommt, php.ini sagt:
session.use_cookies = 1
Und wie schon gesagt, localhost hat volle Cookie-Rechte bei meiner Firewall. (Ich benutze Firefox)
he
Mal ganz abgesehen davon, dass ich mir nicht widerspreche, hast Du wohl mein Script nicht verstanden.
Ich habe diesen Satz wohl nicht verstanden:
Mein Script gibt beim ersten Aufruf nichts aus, beim erneuten Aufruf dann jedoch den Text, den ich in die Session-Variable geschrieben habe und bei jedem weiteren Aufruf natürlich auch,
Text aus der SESSION wird also ausgegeben?
aber der Text kommt halt garnicht bei mir, egal wie oft ich die Seite neu lade.
Oder doch nicht?
Vielleicht erläuterst du nochmal, wann nun Text ausgegeben wurde und wann nicht. Dein Script habe ich verstanden. Ich war nur der Meinung, du solltest in jedem Fall etwas ausgeben lassen, um zu wissen, was das Script wo macht oder nicht macht.
Bei Deinem Testscript kommt übrigens immer nur "Fehler!".
Ich erhalten nur "OK!".?
gruß bascombe
Das ist das was mein Script macht, wenn alles ok ist, also was es machen sollte:
Mein Script gibt beim ersten Aufruf nichts aus, beim erneuten Aufruf dann jedoch den Text, den ich in die Session-Variable
Das ist das, was bei mir passiert:
aber der Text kommt halt garnicht bei mir, egal wie oft ich die Seite neu lade.
Ich erhalten nur "OK!".?
Das ist schön für Dich, aber vielleicht verstehst Du endlich mal, dass genau das gerade mein Problem ist.
Ich hab selbst noch drüber nachgedacht und bin zu dem Schluss gekommen, dass die SessionID einfach nicht übergeben wird.
Ich frage mich aber, warum, wo meine Firewall doch konfiguriert ist und Cookies erlaubt usw.
Das Problem hat sich erledigt, Leute. -.-
Also nicht für mich, aber für euch.
Es liegt an meiner Firewall, die die Cookies der Sitzung blockt, obwohl ich diese 100%ig freigegeben habe.
Aus irgendeinem Grund werden die vom localhost gesperrt aber nicht die von einem anderen Server.
Für die Nachwelt:
ZoneAlarm heißt das Kackteil. Werde es wohl bald ersetzen.
Moin!
Das Problem hat sich erledigt, Leute. -.-
Also nicht für mich, aber für euch.Es liegt an meiner Firewall, die die Cookies der Sitzung blockt, obwohl ich diese 100%ig freigegeben habe.
Das glaube ich nicht.
Aus irgendeinem Grund werden die vom localhost gesperrt aber nicht die von einem anderen Server.
Ein Browser soll Cookies ignorieren, wenn der Hostname nicht mindestens einen Punkt enthält. Cookies funktionieren also nicht, wenn der Server "localhost" heißt.
Für die Nachwelt:
ZoneAlarm heißt das Kackteil. Werde es wohl bald ersetzen.
ZoneAlarm ist aus anderen Gründen Mist. Wie auch jede andere "Personal Firewall". Keines dieser Produkte liefert die Sicherheit, die beworben wird. Und das damit lediglich erreichbare Sicherheitsniveau kann auf günstigere Weise und sogar noch ohne Nebenwirkungen erreicht werden, wenn man seinen Rechner vernünftig konfiguriert.
- Sven Rautenberg
Hello,
Keine Fehlermeldung, die session-Befehle werden einfach ignoriert.
Woher weißt du das? Das Script, das du gepostet hast, gibt im Erfolgsfall nichts aus. Beachte auch dedlfixs Hinweise.
Und das könnte ein Cache-Problem sein.
Außerdem sollte man mal nachgucken, wie
session.save_path /tmp /tmp Webserver muss hier auch Schreib- und Leserechte haben!
session.use_cookies On On Damit überhaupt cookies benutzt werden
session.use_only_cookies Off Off
session.use_trans_sid
Kommen die Cookies überhaupt beim Client an? Schalte ihn auf "redselig", dh. Benutzer fragen bei transienten und bei persistenten Cookies, bevor der Browser sie annimmt.
Wenn session.use_cookies auf off und session_use_only_cookies auf on und session.use_trans_sid auf off steht, hast Du Dir eine schöne Misskonfiguration gebaut ;-) Aber das hast Du sicher schon überprüft. Dann könnte nämlich nur noch eine Session aufgebaut werden, wenn ein Formular im Dokument enthalten ist und der Request über dieses ausgelöst wird.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
echo $begrüßung;
Ich nutze Apache 2.2.4 in XAMPP 1.6.2 (Windows) mit PHP 5.2.2, aber mein Apache ignoriert meine Session-Befehle.
Ignoriert bedeutet in deinem Fall konkret was? Zum Fehlersuchen ist es wichtig, genau zu beaobachten und zu beschreiben.
Allgemeine Tipps zur Fehlersuche:
Hier mal das Script, dass ich zum Testen benutzt habe. (Ist auch das erste Mal, dass ich was mit Sessions mache)
Darin sehe ich keinen Fehler. Es läuft ja auch anderswo.
An meiner Firewall (wegen Cookies) liegt es nicht, localhost darf Cookies setzen.
Firefox mit der livehttpheaders-Extension ist nütlich, um die HTTP-Header untersuchen zu können. Darin sieht man beispielsweise die Übergabe von Cookies.
echo "$verabschiedung $name";