session id

  • Themenstarter Themenstarter psycotis
  • Beginndatum Beginndatum
P

psycotis

hi,

ich hab ein problem mit sessions und ich will erst mal kurz mein problem schildern, also: ich habe eine login datei die nach name und passworteingabe die daten überprüft und dann bei erfolg die daten in einer session speichert und auf die hauptseite welchselt.

jedoch wird bei meiner url keine SID ausgegeben.

zum besseren verständnis poste ich hier mal den code

speicherung der variablen in die session
PHP:
         session_name('id');
         session_start();
         session_register('user_id');
         $user_id = $value['user_id'];

url zur weiterleitung
PHP:
         <? if ($fail == 3) { ?>
           <meta http-equiv="refresh" content="10; URL=main.php?=<? echo SID ?>">
         <? } ?>

also für antworten wäre ich sehr dankbar.

mfg
 
Zuletzt bearbeitet von einem Moderator:
Öhm also automatisch wird das auch in der Regel nicht gemacht (außer du stellst es in der php.ini ein). Das bedeutet, du musst schon deine URL mit der Session zusammenbauen, z.B.
PHP:
$url = 'seite.php?' . session_name() . '=' . session_id();

Achja, session_register sollte man nicht mehr verwenden. Freunde dich lieber mit dem superglobalen Array $_SESSION an und greife auch immer nur mit $_SESSION['variablenname'] auf deine Daten zu, die in der Session gespeichert wurden.
 
Das session_start(); muss GANZ am Anfang stehen, praktisch gleich nach dem einleitenden <?
Dann stimmt deine Reihenfolge nicht. Du registrierst die Variable $user_id bevor du sie überhaupt definierst. Außerdem würd ich Hasenohren nehmen statt einzelner Anführungszeichen (bei dem session_register()).
PHP:
session_start();

session_name(); // nicht id

$user_id = $value['user_id'];
session_register("user_id");
 
Original geschrieben von psycotis
jedoch wird bei meiner url keine SID ausgegeben.
Hängst Du denn manuell Deine Session-ID an die URL dran? In der PHP.INI gibt es die session.use_trans_sid Einstellung, die dafür Verantwortlich ist, dass die Session nicht an die URL drangehangen werden muss, die Session-ID aber im nächsten Script trotzdem erkannt wird (transparente SID-Unterstützung). Standardmäßig ist das aber deaktiviert, d.h. Du musst die Session-ID immer an die URL hängen.

http://de3.php.net/session
 
vielen dank für die antwort :D
hätt ich auch irgendwie draufkommen können

aber existiert dann SID gar nicht mehr?
mit $_SESSIONS geschrieben wäre dann für meine variable:
$_SESSIONS['user_id']

oder? :)
 
Kurze Frage an _voodoo:
außerdem würd ich Hasenohren nehmen statt einzelner Anführungszeichen.
Wieso?

Achja, wenn man der Session einen anderen Namen geben will, dann macht das psycotis schon richtig, indem er ein session_name('irgendwas'); _vor_ session_start(); setzt (nach dem Start der Session kann dies nämlich nicht mehr geändert werden!).

@psycotis: Ja :)
 
@vodoo: mhhh, also ich bin immer davon ausgegangen dass
session_name vorher kommt damit php weiss welche session es
starten soll...
ach und ja hasenohren wären doch von der ausführung her
langsamer...

@lutz: danke nochma für die schnelle hilfe :D
 
Zuletzt bearbeitet von einem Moderator:
Hasenohren = Gänsefüßchen ? :p

Der Unterschied zwischen einfachen Anführungszeichen und doppelten Anführungszeichen besteht darin, dass in doppelten Anführungszeichen Variablen durch ihren inhalt ersetzt werden und Dinge, wie \n und \t in Zeilenumbrüche oder Tabulatoren umgewandelt werden.

snuu
 
Ja snuu, das ist ja klar. Ich frage mich nur, warum _voodoo empfiehlt die Schlüssel in doppelte Anführungszeichen (ich glaube das ist die offizielle Bezeichnung :p ) statt in einzelne zu setzen.
Denn im Namen der Schlüssel kommen weder Variablen vor, noch \n's oder irgendwas, was von PHP durchlaufen werden müsste.
Naja, vielleicht gerät das hier auch nur zu leicht in eine große "Korinthenkackerei" :-)
 
Ich favorisiere ohnehin die einfachen Anführungszeichen (ausser bei SQL-Anweisungen), da ich Variablen ohnehin aus dem Striung herausnehme, um die Lesbarkeit zu erhöhen.
Ich finde das
PHP:
echo 'bla bla bla '.$variable.' bla bla bla';
lesbarer als das
PHP:
echo "bla bla bla $variable bla bla bla";

Sei's drum .. snuu
 
Zurück