Session Variablen... zum Xten Mal! Sorry :(

BigChicken

Mitglied
Hi,

mittlerweile habe ich alle Forumsthemen zu diesem Thema durch aber konnte mein Problem nicht beheben.

Also ich benutzte PHP 5.1.2 mit ner MySQL Datenbank auf nem Windows-WebServer. Mein Seite besteht nur aus einer Seite (Main.php) welche andere Seiten included. In dieser Datei steht natürlich auch als erster Befehlt session_start(). Demnach müssten ja die Session auf der ganzen Seite verfügbar sein.

Ich schreibe auf der Seite immer mit $_SESSION['varname']="blabla" Werte in die Session. Am Ende der Seite lasse ich mir mit print_r($_SESSION) dieses Array auch ausgeben. Mein Problem ist nun das einfach VariablenWerte aus der Session verschwinden. Es sind grundsätzlich nur die Werte im Array, die ich gerade bei diesem Seitenaufruf neu angelegt habe, alle Variablen die ich in vorherigen Druchläufen in die Session geschrieben habe sind verschwunden.

Woran liegt das? Muss ich auf jeden meiner Seiten session_start() machen, also auch auf den die ich in die Hauptseite include? Die ID wird übrigens auch richtig mit übergeben (lasse mir auch mit print_r($_REQUEST) die Request-Parameter ausgeben und dort ist die PHPSESSID gesetzt.

Langsam verzweifle ich echt... hoffe jemand kann mir helfen.

Danke!

André
 
Zuletzt bearbeitet:
Ja es ist immer diegleiche.. habe gerade nochmal nachgeguckt. Es wirkt so als würde er die Varibalen auf Null resetten oder sowas. Daher auch meine Frage ob es mit Referenzen zu tun hat.. also das z.B. die Varibale die zugewiesen hab ihre gültigkeit verliert und somit auch aus der Session verschwindet. Hm.. langsam fallen mir keine Erklärungen mehr ein :(!!

Hier vielleicht auch noch ein paar mehr Information: (Auszug aus phpinfo(): )

session
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx

Directive Local Value Master Value
session.auto_start Off Off
session.bug_compat_42 Off Off
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 1000 1000
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.hash_bits_per_character 5 5
session.hash_function 0 0
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path d:/sessions d:/sessions
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid 0 0

Habe ich vielleicht etwas falsch konfiguriert?
 
Zuletzt bearbeitet:
Ist es möglich, dass die Sitzungsdaten serverseitig nicht korrekt gespeichert werden, da beispielsweise session.save_path den falschen Wert hat oder das angegebene Verzeichnis nicht existiert oder beschrieben werden kann?
 
Daran liegt es leider auch nicht. Auf dem Server werden in dem entsprechenden Verzeichnis auch Dateien angelegt und anschliessend wieder gelöscht.

Achso vielleicht sollte ich noch erwähen das register_globals=off gesetzt ist. Dazu benutze ich folgendes Workaround-Skript (das sollte aber eigentlich die Sessions nicht beeinflussen):

Code:
/* array_to_st
    converts an array ($arr) to a string formatted in the same
    style as a URL for parsing using parse_str	    */
    function array_to_str($arr)
    {
    $s = "";
    if (is_array($arr))
    foreach ($arr as $key => $value)
    $s .= $key . "=" . urlencode($value) . "&";
    return $s;    
    }
    
    // Convert variables in your query string to PHP variables
    parse_str(getenv("QUERY_STRING"));
    
    // Convert variables passed by POST to PHP variables
    $str = array_to_str($_POST);
    parse_str($str);
    
    //convert get to php vars
    $str = array_to_str($_GET);
    parse_str($str);
    
    //convert request to php vars
    $str = array_to_str($_REQUEST);
    parse_str($str);
 
Steht in den Sitzungsdaten-Dateien auch etwas drin?

Du solltest übrigens lieber mit den vordefinierten Variablen arbeiten, statt sie lokal zu registrieren, da bei letzterem die Herkunft der Variablenwerte nicht klar bestimmt werden kann, was eine Sicherheitslücke darstellt. Auch könnten dabei bereits existierende Variablen überschrieben und einst „sichere“ Werte korrumpiert werden.
 
Hi,

so ich hab gerade nochmal ein wenig auf der Server debuggt. Also die Session-Datei hat den richtigen Namen und es stehen auch die richtigen Werte drin. Allerdings sobald ich in einen meiner Formular auf einen button clicke, wird die Session Datei gelöscht und eine neue angelegt. Das erklärt natürlich warum meine alten Variablen immer weg sind.. aber wieso überschreibt er die Datei den einfach? Habe ich doch etwas falsch konfiguriert? Oder reicht ein einfaches session_start() nicht aus? Muss ich vorher auch noch einen eindeutigen Namen festlegen? also mit session_name("blub") und session_id($PHPSESSID) arbeiten bevor ich die session_start() aufrufen?

André
 

Neue Beiträge

Zurück