PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wieder mal: Session Problem



Hondapower
23-01-2003, 17:03
Hallo, ich weiss, zum 1000sten Mal: Sessions
Habe allerdings in der Suche nichts brauchbares gefunden :(

Wollte jetzt auf meiner HP endlich mal eine Session Funktionalität einbauen.
Funktioniert aber leider irgendwie nicht!

Ich bekomme immer folgende Fehlermeldung am Ende meiner Seite:
"Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
"

Habe auch phpinfo() ausgeben lassen
--> session.save_path = /tmp

Hier mal noch der Code mit dem ich versuche die Session zu starten...



session_start();
if($HTTP_COOKIE_VARS[session_id_set]) {
session_id($HTTP_COOKIE_VARS[session_id]);
echo $HTTP_SESSION_VARS[user];
}
else {
$session_id = session_id();
setcookie("session_id_set","$session_id",time()+9999999,"", ".tunemaster.de", "");

session_register("user");
$user = "beispieluser";
}


Danke für die Hilfe!

const_char
23-01-2003, 17:51
1. verwende statt $HTTP_COOKIE_VARS einfach $_COOKIE[] -> das is neuer - aber das is ja nicht dein Problem - nur als Tipp!

2. wenn du Sessions "offline" testest musst du in C:\ ein Ordner namens tmp erstellen. (meistens)

3. was willst du eigentlich machen? also rein theoretisch - ich glaube für dein prob gibts ne ganz einfache lösung

Hondapower
23-01-2003, 18:07
Okay... habe mal auf die "neuere" $_COOKIE Variante umgestellt.

Ich teste meine Scripte immmer gleich online... von daher kann das eigentlich nicht das Problem sein.

Zur Zeit sieht das extrem primitiv aus, was ich machen will...
Die Variable $user nehme ich nur zum testen, ob die Session funktioniert.

Wenn das dann passt, dann habe ich vor einige Userdaten, usw. mittels der Session Funktion bereitzuhalten,
da sich die Daten mit dieser recht komfortabel handhaben lassen.

mehlvogel
23-01-2003, 19:06
Verwaltest du den Server ? Es scheint als wenn er die Session Daten nicht auf die Platte schreiben könnte (fehlende Rechte?).

Noch als Tipp: Der session Cookie wird auch automatisch gebildet, wenn der Browser dasunterstützt, ansonsten hängt er die Session ID an die Links.

Hondapower
23-01-2003, 19:14
Original geschrieben von mehlvogel
Noch als Tipp: Der session Cookie wird auch automatisch gebildet, wenn der Browser dasunterstützt, ansonsten hängt er die Session ID an die Links.

Aber dann ist die Session weg, wenn der Browser zu ist, glaube ich...

Aber das wäre doch schon irgend einem anderem aufgefallen, wenn das /tmp Verzeichnis schreibgeschützt ist, denke ich... :confused:

Werde mal bei meinem Provider anfragen, wie das mit den Sessions ausschaut!

Melde mich dann wieder...

const_char
23-01-2003, 19:54
Aber dann ist die Session weg, wenn der Browser zu ist, glaube ich...

Sessions sind immer weg, sobald der Browser geschlossen wird. Länger können Sie nicht leben.

silvercross
23-01-2003, 19:59
Solltest du auf ein Login Formular mittels MYSQL abziehlen, kann ich dir helfen mit dem Script. Wenn nicht schau dir alles genau an, vielleicht brauchst du etwas davon

.... mysql werte und select table .......




// Die MySQL Abfrage

$query = mysql_query("Select * from tabelle where Username='$Username' and Passwort='$Passwort' ");

// Prüfen .. und zuordnen

if ($daten = mysql_fetch_object($query) {

$user->Username = $daten->Username; // muss in der DB existieren
$user->Email = $daten->Email; // muss in der DB existieren

// Session registrieren

session_register("user");

// Weiterleitung wenn OK

header("location : login_ok.php");

}

// Daten falsch ..

else {

header("location : login_falsch.php");

}

Hondapower
23-01-2003, 20:18
@silvercross: Vielen Dank, so ähnlich soll es werden :)

Habe das Problem gelöst :rolleyes:
War mein Fehler!!!




setcookie("session_id_set","$session_id",time()+9999999,"", ".tunemaster.de", "");
.
.
.
session_id($HTTP_COOKIE_VARS[session_id]);


Konnte nicht funktionieren.
Ich ordne das Cookie 'session_id' zu, obwohl ich es 'session_id_set' genannt habe.
*andenKopfhau*

Jetzt habe ich allerdings das nächste Problem :(

Ich nutze auf der Seite fast nur Subdomains...
Leider wird die Session, welche ich auf sub1.domain.de eröffne auf sub2.domain.de nicht erkannt.
Wie kann ich das anstellen?
Hängt doch sicher mit dem Cookie zusammen, oder?

mehlvogel
23-01-2003, 20:22
ich denke das hängt mit der übergebenen Domain zusammen. Nehm doch einfach den Standardcookie - bzw. die Linkvervollständigung - obwohl - ich weis nicht, ob das diese subdomainwechsel auch mitmacht... *hmmm*

Vielleicht hilf das hier Klickst du (http://de3.php.net/manual/en/function.session-set-cookie-params.php)

silvercross
23-01-2003, 20:40
sobdomains zerstören die sessions ... du musst wohl oder übel auf diese verzichten

mfg
Michael

Hondapower
23-01-2003, 21:00
So... jetzt hab ich es :D

Auf der Startseite (http://www.domain.de/) wird ein Cookie gesetzt:



session_start();
$user_session_id = session_id();
setcookie("session_id_set","$user_session_id",time()+9999999,"", ".domain.de", "");

session_register("tm_user");
$tm_user = 1;


Und in den Subdomains wird am Anfang jeder Datei mittels include dieser Code eingebunden:



session_set_cookie_params ( time()+9999999 , "" , ".domain.de" );

if ($_COOKIE[session_id_set]) {
session_id($_COOKIE[session_id_set]);
}
session_start ();
echo $HTTP_SESSION_VARS[tm_user];
$tm_user++;


Man kann den Wert der Variablen ändern...
Zur Zeit wird die Variable bei jedem Aufruf um eins erhöht.
Dies funktioniert jetzt auch über die Subdomains hinweg *freu*

Und danke für eure Hilfe!!!

Dies funktioniert allerdings nur dann, wenn das erste Cookie auf der Startseite gesetzt wird!!!

silvercross
24-01-2003, 09:07
Ja, gute Lösung .. Gratuliere