SessionID wird bei jedem Seitenaufruf neu erzeugt
Benjamin Baumgartner
- php
Hallo,
ich habe ein Problem:
Ich starte am Anfang des PHP Skriptes die Session
mit session_start();
Dann habe ich eine session_id() zur verfügung,
leider wird diese bei erneutem aufruf des seite
wieder neu gesetzt, kein browser geschlossen,
einfach reload der seite. ich brauche diese id
aber für den warenkorb.
zur info:
session_start(); wird in jedem script (index.php, detail.php, inbasket.php, ...) ausgeführt, da ja sonst die session_id() nicht zur verfügung steht oder?
Bitte um schnelle Antwort, Danke!!!
MfG
Benjamin Baumgartner
Hallo,
zur info:
session_start(); wird in jedem script (index.php, detail.php, inbasket.php, ...) ausgeführt, da ja sonst die session_id() nicht zur verfügung steht oder?Bitte um schnelle Antwort, Danke!!!
session_start() muss nur einmal am Anfang ausgeführt werden
um zu verhindern dass eine neue gestartet wird obwohl sie schon gestartet wurde
musst du prüfen ob eine session_id() schon vorhanden ist
also
index.php enthält
if(!isset(session_id())) session_start();
danach sollte die Id auf allen Seiten verfügbar sein
romy
MfG
Benjamin Baumgartner
session_start() muss nur einmal am Anfang ausgeführt werden
um zu verhindern dass eine neue gestartet wird obwohl sie schon gestartet wurde
musst du prüfen ob eine session_id() schon vorhanden ist
also
index.php enthältif(!isset(session_id())) session_start();
danach sollte die Id auf allen Seiten verfügbar sein
romy
Hallo,
danke für den Tip, leider bekomme ich, wenn ich deine Zeile einfüge
einen Parse Error:
Parse error: parse error, expecting T\_VARIABLE' or '$'' in /home/sites/site10/web/index.php on line 4
Damit kann ich leider garnichts anfangen.
Mfg
benjamin baumgartner
session_start() muss nur einmal am Anfang ausgeführt werden
um zu verhindern dass eine neue gestartet wird obwohl sie schon gestartet wurde
musst du prüfen ob eine session_id() schon vorhanden ist
also
index.php enthältif(!isset(session_id())) session_start();
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tschuldigung, hatte da was verhauen , Funktionen kann man ja auch nicht mit isset prüfen
also
$a = session_id();
if($a == "") session_start();
aber ich habe ja schon gelesen, dass dein Problem eh ein anderes war?
danach sollte die Id auf allen Seiten verfügbar sein
romy
» Parse error: parse error, expecting T\_VARIABLE' or '$'' in /home/sites/site10/web/index.php on line 4
Damit kann ich leider garnichts anfangen.
kann ja jedem mal passieren, hättest du eigentlich aiuch selbst rausfinden können, was mein fehler war, oder? *g*
naja, hoffe bei dir läufts jetzt
romy
Mfg
benjamin baumgartner
Hallo,
nachdem ich mich nun eine Woche ziemlich intensiv mit den Sessions und einer Doku dazu beschäftigt habe, möchte ich auch ein wenig Senf ablassen:
session_start() muss nur einmal am Anfang ausgeführt werden
session_start() muss auf _jeder_ Seite erneut im (HTTP-)Header-Bereich des Skriptes (nicht im <head>-Bereich!) noch vor jeder Ausgabe (alles das, was später im Browser-Quelltext landet) aufgerufen werden. Man sollte vorher $oldname=session_name("neuername"); aufrufen, wenn man den Standardnamen (PHPSESSID) nicht wünscht. Wenn eine _neue_ Session gestartet wurde, ist SID (Konstante) gesetzt und gefüllt.
if (defined("SID") and strlen(SID) > 32)
{
echo "Session ".SID." wurde neu gestartet";
}
if (!defined("SID")
{
echo "Für dieses Skript gibt es (noch) keine Session-Verbindung";
}
Und wenn SID definiert ist und trotzdem leer (SID==""), dann bestand schon eine Session-Verbindung, die durch session_start() wieder aufgenommen wurde.
Ich hoffe, nun kommst Du einen Schritt weiter.
um zu verhindern dass eine neue gestartet wird obwohl sie schon gestartet wurde
musst du prüfen ob eine session_id() schon vorhanden ist
Die Funktion session_id() liefert erst _nach_ Aufruf von session_start() ein gültiges Ergebnis.
Liebe Grüße aus <http//www.braunschweig.de>
Tom
Hallo,
Ich starte am Anfang des PHP Skriptes die Session
mit session_start();Dann habe ich eine session_id() zur verfügung,
leider wird diese bei erneutem aufruf des seite
wieder neu gesetzt, kein browser geschlossen,
einfach reload der seite. ich brauche diese id
aber für den warenkorb.
Probier doch mal folgendes einfache Skript zum Testen Deiner Sessions:
===============================
<?php
session_start();
if (!isset($_SESSION['counter']))
$_SESSION['counter'] = 1 ;
else
$_SESSION['counter']++;
?>
<html><head><title>Testscript</title></head><body>
Wenn Cookies aktiviert sind, sollte der Zähler bei einem Reload erhöht werden.
Sind sie es nicht, dann hängt im Falle von 'session.use_trans_sid = true' PHP an den ersten Link automatisch die SessionID. Andernfalls sollte der zweite Link zum gewünschten Ergebnis führen.
So kannst Du testen, ob Sessions generell Problemlos funktionieren. Wenn ja, dann liegt Dein spezielles Problem imho tiefer im Code versteckt.
[...]
Gruß Alex
Hallo,
Probier doch mal folgendes einfache Skript zum Testen Deiner Sessions:
===============================
<?php
session_start();if (!isset($_SESSION['counter']))
$_SESSION['counter'] = 1 ;
else
$_SESSION['counter']++;
?><html><head><title>Testscript</title></head><body>
<h1>Counter:</h1>
<p>Anzahl der Aufrufe: <strong><? echo $_SESSION['counter']; ?></strong></p>
<a href="<? echo $_SERVER['PHP_SELF']; ?>">++</a><br>
<a href="<? echo $_SERVER['PHP_SELF'].'?'.session_name().'='.session_id(); ?>">++</a>
</body></html>Wenn Cookies aktiviert sind, sollte der Zähler bei einem Reload erhöht werden.
Sind sie es nicht, dann hängt im Falle von 'session.use_trans_sid = true' PHP an den ersten Link automatisch die SessionID. Andernfalls sollte der zweite Link zum gewünschten Ergebnis führen.So kannst Du testen, ob Sessions generell Problemlos funktionieren. Wenn ja, dann liegt Dein spezielles Problem imho tiefer im Code versteckt.
[...]
Gruß Alex
Hallo,
danke für deinen Tip, beide Links erhöhen den Counter NICHT.
Liegt das jetzt dann an den Cookies? Die wären aber nicht deaktiviert.
Hier mal die URL für die PHPINFO´s
http://www.officewall.de/test.php
Vielleicht kann ja jemand daraus was erkennen.
Vielen Dank!
Gruß
Benjamin Baumgartner
Hallo,
[sessionhitcounterskript]
danke für deinen Tip, beide Links erhöhen den Counter NICHT.
Liegt das jetzt dann an den Cookies? Die wären aber nicht deaktiviert.Hier mal die URL für die PHPINFO´s
http://www.officewall.de/test.php
session.use_cookies Off Off
Das bedeutet, es werden überhaupt keine Cookies verwendet. Trotzdem sollte wenigstens der zweite Link funktionieren.
Wo ist denn das Testskript online zu bestaunen?
Gruß Alex
Ist dein Prob gelöst?
Wenn nicht welches OS nutzt du?
Ich hatte ein ganz ähnliches Problem, weil in der php.ini
session.save_handler = files gesetzt war, aber der Pfad nicht gestimmt hat (session.save_path).
Kann das die Ursache sein?
greets
bx