Sessionvariablen werden nicht übergeben.

Theremin

Aktives Mitglied
Thread Starter
Dabei seit
16.12.2003
Beiträge
100
Reaktionspunkte
1
Hallo,

Ich schlage mich heute schon den ganzen Nachmittag mit dem folgenden Problem rum. Ich habe hier lokal, einmal auf meinem MAC (php 4.1.3) und auf der Dose (php5) ein kleines MiniCms programmiert. Das wollte ich nun beim Auftraggeber (LINUX Php5) installieren, aber leider werden die Userdaten, die ich über Sessions an die einzelnen Scripte übergebe nicht in der Session gespeichert. Auf meinen Lokalen Systemen geht das ohne Probleme ...

PHP:
...
session_start();
$_SESSION['sessUserID'] = $_POST['sessUserID'];
$_SESSION['sessLogin'] = $_POST['sessLogin'];
$_SESSION['sessUserName'] = $_POST['sessUserName'];
$_SESSION['sessLastLogin'] = $_POST['LastLogin'];
$_SESSION['sessLoginTotal'] = $_POST['LoginTotal'];
$_SESSION['sessLevel'] = $_POST['sessLevel'];
// Weiterleitung zur Administrationsstartseite:
header ("Location: ../start.php");
...

Mit diesem Script müsste die Session doch eigentlich in der Sessionvariable regristiert sein, oder?

Wenn ich nun die Variable auf einer neuen Seite auslesen will, Beispielsweise mir 'print_r($_SESSION)', ist das Array aber leer. Obwohl ich die Session mir 'Session_start();' aufgerufe habe.


PHP:
session_start();
//require('../globalphp/checksession.php');
require('../globalphp/function.php');

error_reporting(E_ERROR | E_WARNING | E_STRICT | E_NOTICE);

if (isset($_SESSION['sessLogin'])) {
$site = 1;
...

Also, was mache ich falsch ???
Ist auf dem Server irgendeine Variable in der Php.Ini falsch gesetzt???

Einige wichtige Variablen sind so eingestellt:

safe_mode = On
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
register_argc_argv = Off
register_globals = Off

Ich wäre super super dankbar für Eure Hilfe
 
Was ist mit den Session Variablen in der php.ini (also session.*); ist dort vielleicht etwas im argen?
 
testweise würde ich register_globals auch mal auf ON setzen
 
laß die Register_Globals ruhig auf off. Daran liegt es nicht.
Du muss die Session über die Header Funktion auch fortführen - sprich. Die Session-ID (SID) in der Header Anweisung mitübergeben. Das musst Du bei allen Verlinungen, die über die URI gehen, tun, sonst gehen Deine Session Variablen flöten. (Bei POST Anweisungen brauchst es nicht).

Sähe Bei Dir dann so aus:

PHP:
header ('Location: ../start.php?'.SID.'');

Dann sollten Sie in der start.php verfügbar sein...
 
Danke für alle Antworten. Ich habe mich nun einmal etwas genauer über die Konstante SID belesen ... und ich glaube, daß diese aufgrund der Php.ini Einstellungen nicht mit übergeben wird. Transparente Übergabe der Sessionvariable heisst das (LINK) http://de.php.net/manual/de/ref.session.php#session.idpassing.
Und der entsprechende Eintrag ist auch in der Php.ini auf 0 gesetzt:

// SESSION:
session.use_trans_sid = 0

Das werde ich nun einmal auf meinem tollen Php5 Entwicklunghssystem testen... dann weiss ich ja ob es daran liegt.

Bis später,

das Theremin
 
:rolleyes:
Zurück auf Start... Daran liegt es nicht, aber auch die oben beschriebenen Lösungen bringen mich nicht weiter. Rufe ich Print_r($_SESSION) im ersten Script auf, werden alle Variablen gelistet, im 2. Script sind sie weg. Auf meinen Lokalen Systemen und bei Domainfactory ist alles fein, aber auf dem Server wo es laufen soll klappt es nicht.

Bis Morgen

Theremin ;)
 
@Theremin:
Welches PHP5 ? Es hat ein Update auf PHP 5.02 gegeben, weil eben GPC-Funktionen buggy waren und damit einige Variablen auf dem Transferweg über HTTP in /dev/null verschwanden. Siehe http://www.php.net . Ein ähnliches update gab es auch für PHP4.

PHP5 gilt immer noch nicht als stabiles Produktivsystem (leider).
 
Das Update wurde auf dem besagten Server noch nicht eingespielt.
Es ist die Version PHP Version 5.0.0. Aber auch auf meinem Entwicklersystem läuft ein Php V. 5.0.0. Allerdings unter Windoof. Auf meinem Computer (G5) läuft eine stabile Php 4.1.3.
 
Wenn ich nun die SID folgendermassen übertrage :

header ("Location: ../start.php".SID);

Wie eröffne ich dann die Session in Script2, so dass ich alle in der Session gespeicherten Variablen wieder nutzen kann ??

PHP:
session_start ( ??? );
if (isset($_SESSION['sessLogin'])) {
   ....

Das Ding ist, ich kriege die Session_ID von dem einen in das andere Script über GET übermittelt. Aber was fange ich mir der Id wieter an ??? Und wieso geht das hier nicht so wie auf den anderen Systemen???

Ratlos
 
Das sollte eigentlich so klappen, SID ist schlußendlich ne System-"konstante". und session_start ist als void definiert:

bool session_start ( void )

die _SESSION-Variablen liegen beim Server und bleiben da. Die Session ID ist das einzige was mit muß und das sollte per SID gehen. Was ist denn, wenn Du use_trans_sid=1 setzt ?
 
Ich will dieses Thema mit einer Antwort beenden:

In meinem Fall gab es Serverseitig Probleme da die Rechte des Verzeichnisses, indem die Sessions abgelegt werden, nicht richtig eingestellt waren.

In der Sessionsektion von phpinfo.php kann man nachlesen, wo die Sessions gepeichert werden.
Dieses Verzeichniss, bei mir ( /private/tmp/ ) muss von den Rechten so aussehen:

0 drwxrwxrwt 19 root wheel 646 5 Oct 15:36 tmp

--> chmod -R 777 /private/tmp

Danke für Eure Mithilfe :)
 
Zurück
Oben Unten