Session weg nach redirect

Hallo

ich habe folgendes Problem.
Ich habe für den Login eine PHP Seite, die per Submit die Daten per POST an einen Servlet.php schickt, die nur die DB ABfrage macht, und dann bei richtigem Login in das eigentliche "Programm" weiterleitet.
Nun hab ich das Problem, dass die Session von der Login.php in die Servlet.php (keine html Ausgabe, nur DB Zugriffe) bestehen bleibt, aber durch den redirect im Servlet.php dann auf der nächstenSeite verloren geht und dementsprechend eine neue Session aufgebaut wird.

ich redirecte so:
if(bla)
{
header("Location: programm.php");
}

dabei geht mir die Session verloren... ich habe dann auf der Programm.php eine neue SessionID.

Es ist dabei zu sagen, dass ich eine Sessionklasse verwende, die eine SessionID erzeugt und registriert...falls noch keine besteht.

Wie muss man redirecten, damti die Session nicht verloren geht?

Gruss
Stefan
 
Sicherste Lösung: Die Session an die URL anhängen.

PHP:
header ("Location: programm.php?".SID);
// oder
header ("Location: programm.php?".session_name()."=".session_id());
 
session

das problem ist, dass ich diese selbst geschriebene Sessionklasse verwende, um eine get und set methode zu simulieren...
wie sie bei jsp´s bestehen

das ist das Problem
 
sorry Leute... hatte vergessen den code rein zu pasten


<?php

class Session
{
function Session() {
global $_sessionId, $_sessionAttributes;

session_start();
if(isset($_SESSION["_sessionId"])) {
echo "<p> Die Session ist bereits angelegt <p>";
$_sessionId = $_SESSION["_sessionId"];
$_sessionAttributes = $_SESSION["_sessionAttributes"];
}
else {
// Erzeugen der Session-ID
$tmp = explode(" ", microtime());
$_sessionId = md5($u_name.$tmp[0]);
//echo "<p> Die Session mit der SessionID ".$_sessionId." wurde erzeugt<p>";
// Session-ID und die Daten des eingeloggten Users in der Session registrieren.
session_register("_sessionId");
session_register("_sessionAttributes");
}
}

function getAttribute($name) {
global $_sessionAttributes;
return $_sessionAttributes[$name];
echo "Lese " . $_sessionAttributes[$name] . " ...";
}

function getId() {
global $_sessionId;
return $_sessionId;
}

function removeAttribute($name) {
global $_sessionAttributes;
unset($_sessionAttributes[$name]);
}

function setAttribute($name, $attribute) {
global $_sessionAttributes;
$_sessionAttributes[$name] = $attribute;
echo "Setze " . $_sessionAttributes[$name] . " ...";
}
}

// Anlegen des globalen Session-Objekts (wie JSP)
$session = &new Session();
?>
 
Du musst keine Klasse coden wenn du nicht mal Eigenschaften nutzt, hier könntest du beispielsweise $_sessionAttributes als Eigenschaft speichern und somit die Verwaltung über den globalen Weg weglassen.
 
Zurück