• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP übergibt die Session nicht.

Status
Für weitere Antworten geschlossen.
M

matibaski

Guest
Moin Leute.
Ich habe da eine Frage, ist zwar ein ganz einfacher Codeteil, doch ergeht irgendwie nicht.

Ich möchte, dass sich ein registrierter User über ein Formular einloggt (wie normal mit Name und Passwort Formular).
Die Datenbank überprüft, ob die Logindaten übereinstimmen und existieren. Wenn es stimmt, wird man von der index.php auf default.php weitergeleitet, zum geschützten Bereich.

Dass die Sessionen wirklich funktionieren, hat mein Sicherheitsschutz gezeigt.
Sieht so aus die Sicherheit (zwar klein, aber fein :D):
PHP:
$rnd = rand(1, 9999);
$_SESSION['secure'] = $rnd;
// Dann sind noch die Forms hier, mit denen man sich einloggt, möchte aber nicht posten =)
// Dann hats hier ne hidden-form mit der random Zahl drin. Also value="$rnd"

// Das ganze wird auch mit der POST Variable überprüft, wenn es geschickt wurde.
// Also so:
if(isset($_POST['login'])) // Prüft ob submitbutton gedrückt wurde
{
 if($_POST['secure'] == $_SESSION['secure']) // Prüft ob Session mit der geschickten Hidden Form übereinstimmt
 {
  // Nun MySQL verbinden, ect.
  // Prüfen ob benutzer stimmt
  $_SESSION['login'] = true; // Session setzen
  header('Location: default.php'); // Und weiterleiten
 }
}
Eigentlich ganz simpel, ne?

Nun wird auf der default.php geprüft, ob die Session stimmt, dann kann man den Inhalt sehen. Sieht so aus:
PHP:
<?php
if($_SESSION['login'] !== true)
{
 echo'Sie sind erfolgreich eingeloggt';
}
else
{
 echo'Sie haben sich nicht eingeloggt, oder Ihre Loginsession ist nicht mehr gültig.<br />
      Bitte loggen Sie sich <a href="index.php">hier</a> ein, um den geschützten Bereich zu betreten.';
}
?>
Also der Code ist nur kurz gemacht, um zu sehen ob er funzt.

Nun erscheint bei mir, dass die Loginsession (laut der Errormeldung) nicht gültig ist.
Nun frage ich mich, was da falsch ist.
Ich habe doch die Session gesetzt und weitergeleitet mit header();
Aber irgendwie leitet es die Session nicht weiter, was jedoch der Fall sein müsste.

Falls ihr einen Änderungsvorschlag habt, den sehe ich mir gerne an. Habe den Code ca. 15 Mal überprüft und nie einen Fehler gefunden. Vielleicht findet jemand von euch einen?


MfG, matibaski
 
Du musst bei jeder Datei, wo die Sessions genutzt werden sollen, folgendes am Anfang der Datei setzen:

PHP:
session_start();


Eine Frage habe ich aber auch noch. Was bringt bitte die Zufallszahl, wenn sie nicht übergeben wird und sonst auch nichts mit ihr gemacht wird?
 
Sie wird mehrmals verwendet, nur siehst du in dem Codeteil praktisch nix von dem ganzen Code.
Wenn du es persönlich wissen willst, schicke ich dir den Codeteil per private MSG.

Zurück zum Thema.

Komisch, aber ich habe bei der index.php und bei der default.php am Anfang eine session_start(); eingeschrieben.


MfG, matibaski

edit:
Also hier habe ich mal die default.php.
Die ist momentan nur kurz, da ich sie austeste:
PHP:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Language" content="de-ch" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<?php
if($_SESSION['login'] == true) { echo'<title>Sie sind eingeloggt</title>'; }
else { echo'<title>Ihre Loginsession ist nicht gültig - MyB CMS'; }
?>
<link rel="stylesheet" tpye="text/css" href="style.css" />
</head>

<body>

<?php
if($_SESSION['login'] !== true)
{
 echo'Sie sind erfolgreich eingeloggt';
}
else
{
 echo'Sie haben sich nicht eingeloggt, oder Ihre Loginsession ist nicht mehr gültig.<br />
      Bitte loggen Sie sich <a href="http://www.html.de/">hier</a> ein, um den geschützten Bereich zu betreten.';
}
?>

<br /><div style="z-index:3" class="smallfont" align="center"><!-- google_ad_section_start(weight=ignore) -->Search Engine Optimization by <a onclick="urchinTracker ('/outgoing/http_www_vbseo_com_622_');" rel="nofollow" href="http://www.vbseo.com/622/">vBSEO</a> 3.0.0<!-- google_ad_section_end --></div>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1671491-1";
urchinTracker();
</script>
</body>
</html>
Und so sollte es doch gehn, ne?


MfG, matibaski

edit:
Fehler Gefunden, kann geschlossen werden
 
Zuletzt bearbeitet von einem Moderator:
Ach seht mal hier:
PHP:
<?php
if($_SESSION['login'] !== true) // Hier hab ich !== gesetzt, also kam logischerweise immer die untere Nachricht
{
 echo'Sie sind erfolgreich eingeloggt';
}
else
{
 echo'Sie haben sich nicht eingeloggt, oder Ihre Loginsession ist nicht mehr gültig.<br />
      Bitte loggen Sie sich <a href="http://www.html.de/">hier</a> ein, um den geschützten Bereich zu betreten.';
}
?>
War nur ein dummer kleiner Denkfehler :D.


MfG, matibaski
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben