im includeten script überprüfen ob session gestartet
Dynamite
- php
Hallo zusammen,
habe eine Seite in der mehrere Scripte includet sind, welche dann per Ajax je nach Usereingabe erneuert werden. Die Session starte ich im Hauptscript, wenn ich die Seite das erstemal lade ist auch in den includierten Dateien die session gestartet, wenn ich allerdings ein script per Ajax aktualisiere, ist die Session in dem Script nicht mehr vorhanden. Wie kann ich jetzt überprüfen, ob die Session in dem Script existiert oder nicht??? Ich habe teilweise auch keine Variablen in der Session gespeichert, so dass ich Abfragen könnte ob die Session-Variable existiert oder nicht.
Wenn ich das machen würde:
if(!isset(session_id()){
session_start();
}
könnte das zu Problemen führen???
Vielen Dank für Eure Mühen im vorraus
Gruß
Dynamite
Hi,
habe eine Seite in der mehrere Scripte includet sind, welche dann per Ajax je nach Usereingabe erneuert werden. Die Session starte ich im Hauptscript, wenn ich die Seite das erstemal lade ist auch in den includierten Dateien die session gestartet, wenn ich allerdings ein script per Ajax aktualisiere, ist die Session in dem Script nicht mehr vorhanden. Wie kann ich jetzt überprüfen, ob die Session in dem Script existiert oder nicht???
Du koenntest die Direktive session.auto_start in der Konfiguration nutzen (auf die relevanten Dateien beschraenkt) - dann kuemmert sich PHP fuer dich darum.
Und ansonsten - der nochmalige Aufruf von session_start(), wenn bereits eine Session gestartet wurde, resultiert lediglich in einer Notice, der zweite Aufruf wird dann ignoriert. Die Notice koennte man also einfach mit einem @ vor dem Aufruf unterdruecken, wenn man sich genuegend darueber bewusst ist, was man tut.
MfG ChrisB
Erstmal Danke für die fixe Antwort,
warst ja schneller als ich mit meiner Korrektur.
Die Notice koennte man also einfach mit einem @ vor dem Aufruf unterdruecken, wenn man sich genuegend darueber bewusst ist, was man tut.
Was genau meinst Du damit? Worüber bewusst ist?
THX
Dynamite
Hi,
Die Notice koennte man also einfach mit einem @ vor dem Aufruf unterdruecken, wenn man sich genuegend darueber bewusst ist, was man tut.
Was genau meinst Du damit? Worüber bewusst ist?
Was man mit dem unterdruecken der Notice-Meldung macht.
Dass man sie nicht unterdrueckt, weil man sich nicht anders zu helfen weiss (machen Newbees ja gerne mal), sondern weil es eine bestimmte, klar definierte Konstellation gibt, in der sie kommen koennte, deren Auswirkungen man einschaetzen kann.
MfG ChrisB
Hi,
also okay, jetzt habe ich verstanden was Du meinst.
Bin mir ziemlich sicher das vor der Session nicht ausgegeben wird, und habe es auch gerade so wie beschrieben schon ausprobiert.
Danke nochmal an all die netten Helfer hier.
#Selfhtml - hier wirst Du geholfen # :-)
Schönen Abend noch
Gruß
Dynamite
Hi,
Die Notice koennte man also einfach mit einem @ vor dem Aufruf unterdruecken, wenn man sich genuegend darueber bewusst ist, was man tut.
Was genau meinst Du damit? Worüber bewusst ist?
Das gilt natuerlich insb. auch in Bezug auf andere denkbare Fehlerszenarien - ein @ wuerde ja bspw. auch eine "headers already sent"-Meldung unterdruecken. Also sollte man sich schon recht sicher sein, dass man seinen Scriptablauf so gestaltet hat, dass dieser nicht auftreten kann.
MfG ChrisB
Moin
...das trotz Vorhandenseins einer deutschen Version der Funktionsbeschreibungsseite die englische verlinkt wird. z.B.
Du koenntest die Direktive session.auto_start in der Konfiguration nutzen (auf die relevanten Dateien beschraenkt) - dann kuemmert sich PHP fuer dich darum.
Ist es so schwer auf die deutsche Version zu verlinken z.B. session.auto_start->deutsch?
Sorry, musste ich mal loswerden.
Gruß Bobby
echo $begrüßung;
Ist es so schwer auf die deutsche Version zu verlinken z.B. session.auto_start->deutsch?
Es ist Absicht, das englische Original zu verlinken. Wer will, kann gern die nur wenige Mausklicks entfernte deutsche Übersetzung aufrufen. Allerdings hat diese mitunter den Nachteil dass die Übersetzung hinterherhinkt und damit nicht aktuell und unvollständig ist. Besonders auffällig ist das im MySQL-Handbuch. Seit die Dokumentation zur Version 5.1 übersetzt wurde erfuhr die englische Version deutliche Änderungen, die sich noch nicht mal im Inhaltsverzeichnis in der deutschen Version widerspiegeln.
echo "$verabschiedung $name";
if(!isset(session_id()){
session_start();
}
EDIT:
Schuldigung, habe im Eifer des Gefechts nicht richtig nachgedacht. Würde natürlich einen Wert in eine Session schreiben und dann fragen ob er existiert.
~~~php
if(!isset($_SESSION['sonst_nicht_gebraucht']){
session_start();
}
Das es theoretisch funktioniert habe ich schon ausprobiert, mir geht es nur darum ob das irgendwo Probleme geben könnte??
Gruß
Dynamite
Hellihello
ich dachte, session_start(); testet selbst, ob eine Session gestartet ist bereits.
Vielleicht überträgt der AJAX die Session nicht, weil Cookies geblockt sind?
Dank und Gruß,
Hi,
ich dachte, session_start(); testet selbst, ob eine Session gestartet ist bereits.
Ja, aber wie gesagt, mit Notice.
Vielleicht überträgt der AJAX die Session nicht, weil Cookies geblockt sind?
Du kannst ein Script mit Cookies bewerfen, so lange du willst - wenn kein session_start im Script aufgerufen wird, dann wird keine Session wieder aufgenommen. Und das ist ja die Problematik des Fragers hier - das include-Files, die normalerweise in einem Session-startenden Hauptscript aufgerufen werden, per AJAX auf separat abgerufen werden sollen - und dabei die Session dann antuerlich auch wieder mit session_start aufgenommen werden muss.
MfG ChrisB