[PHP] Probleme mit Sessions

HardwarePope

Cadet 4th Year
Registriert
Feb. 2004
Beiträge
114
Hallo Leute,

ich bin momentan grade dran mein Login-System für meine Seite zu programmieren und habe dabei einen schonmal von mir programmierten Code für eine andere Seite übernommen und angepasst. Dort funktioniert er bestens aber hier scheint mein Sckript die Session-Variablen nicht korrekt an die nächste Seite weiterzugeben.

Also, nach dem Login wird die Seite login.php aufgerufen (wobei config.php die Verbindungsdaten zur MySQL DB sind und functions.php ne Datei ist, um die Eingaben zu prüfen und manipulierbaren Code herauszufiltern), in der der relevante Code so aussieht:
PHP:
include("../scripts/config.php");
include("../scripts/functions.php");

$user = maskieren($_POST["user"]);
$passwort = maskieren($_POST["passwort"]);

$query = mysql_query("SELECT passwort FROM datenbankname WHERE username = '$user'");
$treffer = mysql_num_rows($query);
$ds = mysql_fetch_array($query);
$realname = $ds["realname"];

if(!empty($treffer) AND $ds["passwort"] == $passwort)
{
  session_start();

  $_SESSION["login"] = 1;
  $_SESSION["user"] = $user;

  mysql_query("UPDATE usa_userlist SET lastlogin = NOW() WHERE username = '$user'");
}

Wenn der Login erfolgreich ist wird per Meta Refresh zur Administrations-Startseite geleitet.
Dort wird die Datei session.php included, die dann überprüft, ob jemand eingeloggt ist oder nicht eingeloggt auf die Seite zugreifen will. Wenn das so ist, wird das Skript beendet und eine Fehlerseite aufgerufen (error.php)
PHP:
session_start();

if($_SESSION["login"] != 1)
{
  include("error.php");
  exit();
}
else
{
  $user = $_SESSION["user"];
}

Obwohl auf der Login Seite bei korrektem Login auch alles funktioniert und man korrekt weitergeleitet wird, wird auf der nächsten Seite versucht, "error.php" aufzurufen, sprich das Skript meint, man sei nicht eingeloggt. Per echo habe ich mal versucht die zwei Session Variablen auszugeben aber es kam nichts, woraus ich schließe, dass die Session-Variablen nicht korrekt übergeben wurden.

Kann mir bitte jemand helfen?

Danke schon einmal in Voraus und viele Grüße,


HardwarePope
 
Zuletzt bearbeitet:
wie uebergibst du denn die session_id? per url? wo ist der meta-refresh? poste mal mehr code.
 
Hier einmal der Meta refresh:

PHP:
if($_SESSION["login"] == 1)
  {
    echo "<meta http-equiv=\"Refresh\" content=\"2;url=http://svenlx.razorbg.de/usa06/administration.php\">";
  }
  else
  {
    echo "<meta http-equiv=\"Refresh\" content=\"3;url=http://svenlx.razorbg.de/usa06/index.php\">";
  }

Ich übergebe gar keine Session-ID, sondern nur so wie es in dem Beitrag da steht. Das funktioniert aber ohne jeglichen Probleme bei einer anderen Homepage, die ich gemacht habe, weshalb mir auch schleierhaft ist, wieso es hier nicht geht.

Gruß, HardwarePope


Edit: Scheint ja doch was komplizierteres zu sein, wenn bis jetzt immer noch niemand eine Lösung gefunden hat ;)
 
Zuletzt bearbeitet:
Vorsicht! Nicht jeder User/Browser lässt alle Daten raus. Auch Stichwort proxy.
Man muss beim Sessionmanagement immer 2 Möglichkeiten in petto haben.
sprich einmal die Cookievariante etc. und einmal die Ausweichmöglichkeit per URL oder hiddenfield.
Das kann man per php checken und entsprechend setzen.

Es gibt auch ein Script/ class, was einen derartigen Session-Fallback realisiert, zb. hier oder googlen:
http://www.php-center.de/faq/faq-version4_session.html#version4_session-1
 
Zuletzt bearbeitet:
Glücklicherweise hat sich jetzt das Problem mit den Sessions gelöst. Ein Freund von mir, auf dessen Server meine Seite gehostet ist, hat jetzt das Problem in der Config gelöst. Es war nicht eingestellt, dass Sessions auch ohne Cookies funktionieren. Ich hatte dummerweise Cookies deaktiviert und somit hat sich das ganze Problem nach viele Frustration lösen lassen.

Trotzdem danke an diejenigen, die sich meines Problems angenommen haben und versucht haben zu helfen oder sich einfach nur den Kopf zerbrochen haben ;)

Grüße, HardwarePope
 
Zurück
Oben