PHP Session ID

ronin

Erfahrenes Mitglied
Hallo zusammen.

Ich hab mich durch php.net gelesen, sowie durchs Forum. Vieles probiert, nix geklappt.
Jetzt brauch ich echte Hilfe! ;-)


Ich habe mich an dem Session-Login-Tutorial von tutorials.de orientiert und aufgrund dessen die Seiten aufgebaut.
Das Problem ist jetzt folgendes:

Ich logge mich von der Seite index.php ein. Das Formular geht nach checkuser.php und bei Erfolg werden diverse Daten in die Session registriert und ich werde mit den Daten und einer sid nach index.php?page=login&sid=$sid geheadert.

In der index.php steht zuallererst das:
PHP:
<?php
  session_start();
  $sid = session_id();
  if ((session_is_registered("user_eingeloggt")) && ($_SESSION["user_eingeloggt"])) {
    $login  = TRUE;
  } else {
    $login  = FALSE;
  }
?>

Solange ich mich dann auf der Seite index.php?page=login&sid=$sid befinde, bin ich eingeloggt und alles funzt prima.

Wenn ich jetzt per Link nach index.php?page=andere_seite&sid=$sid gehe, fliege ich raus und die Session-Daten sind weg.
Wo liegt mein Fehler?

Die beiden unterschiedlichen $page-Werte haben keinen Einfluß, dort findet keine Sessionverwaltung statt.


Könnte mir jemand ein paar Tips geben? Ich hab echt nen Hänger ...


Grüße und Danke, Ronin
 
hmm ...
egal was ich mache, die Session heißt PHPSESSID.
Das ändert aber leider auch nix am Ergebnis ^^


//edit
Nun kann ich den Session-Namen doch umbenennen. Allerdings habe ich
1) an jeden möglichen Link schon ein sid=$sid gehängt (brauch das also nicht) und
2) bleibt das Problem immer noch

Einen Klick später flieg ich wieder raus ...
 
Zuletzt bearbeitet:
Wenn irgend möglich, wäre es eventuell eine Lösung die Session ID via Cookie zu verwalten, dann könntest du dir das Übergeben per URL sparen, hat auch sicherheitstechnisch den einen oder anderen Vorteil.
 
Naja, technisch gings das schon.
Müßte mir das nochmal ansehen ...


Aber so rein interessehalber, wie geht das per URL-Übergabe? das fuxt mich jetzt echt ...
 
die sessionid in $sid zu speichern ist quatsch.

wenn du einen anderen namen als PHPSESSID haben willst mußt Du auch mit session_name() einen anderen registrieren.

die sessionid mußt Du nich jedesmal übergeben. Dein Skript greift von alleine auf diese zu.

am besten überprüfst Du ob die Login werte in der session stehen

PHP:
<?
if(!$HTTP_SESSION_VARS['username'])
  {
    echo "nö";
  }
else
  {
    echo "jepp";
  }
?>

mfg
novara
 
die sessionid mußt Du nich jedesmal übergeben. Dein Skript greift von alleine auf diese zu.
Das ist aber nur dann der Fall, wenn in der php.ini der Cookie-Mode für die Speicherung der Session-ID's aktiviert ist, ansonsten musst du es schon übergeben.
 
Ok, abschließende (hoffe ich zumindest) Verständnisfrage:

Ich setze das session_name("welcher_name_auch_immer"); an den Anfang und der Variablen-Name in der die Session-ID übergeben wird; hier also "welcher_name_auch_immer".

Die Sessionverwaltung setzt dann automatisch den entsprechenden Zusatz "&welcher_name_auch_immer=******************". -> 1)




Fragen:
1) Erhöht das automatische Anfügen nicht automatisch die Serverlast?
2) Wenn ich die Links nicht anfüge und das auch nicht automatisch geschieht, muß ich dazu noch etwas für die Cookieverwaltung machen oder kommt das dann automatisch von den Sessions?



Danke und Grüße, Ronin
 
1) marginal
2) Durch setzen der Einstellung session.use_cookies = 1 in der php.ini dürfte alles geklärt sein.
 
session.use_cookies = on
session.use_trans_sid = 1

sollte also funzen. ^^


Aber irgendwie haut das Ganze nicht hin.
Solange ich auf der weitergeleiteten Login-Seite bin, geht alles. Geh ich ne Seite weiter, sind alle Daten weg und ich bin nicht mehr eingeloggt.

index.php
PHP:
<?php
  session_start();
  if ((session_is_registered("user_eingeloggt")) && ($_SESSION["user_eingeloggt"])) {
    $login  = TRUE;
  } else {
    $login  = FALSE;
  }
?>

checkuser.php
PHP:
<?php
  session_start();
  $user_eingeloggt = TRUE;
  $nickname = "Ronin";
  session_register("user_eingeloggt", "nickname);
  header("Location: index.php?page=login");
?>

Solange ich jetzt auf der index.php?page=login bleibe oder auf eine deren diversen Aktionen wie z.B. index.php?page=login&action=show bin, ist alles ok.
Sobald sich die page-Variable ändert, ist alles weg. Ich bin nicht mehr eingeloggt :(


Hat da jemand einen Tip?
Danke , Ronin
 
Zurück