Session und weiterleitung
ToshiOzumi
- php
Hallo,
ich habe da ein Problem. Ich arbeite gerade an dem Login auf meiner Seite.
Es soll abhängig davon ob es ein Admin oder Mittarbeiter auf die passende Seite weitergeleitet werden.
Dazu würde ich gerne einige Infos über den Angemeldeten in einem sessioncookie speichern. Wenn ich aber die Weiterleitung mit
header("Location: mitarbeiter.php"); mache werden die Daten nicht mitgeliefert.
Wie kann ich eine Weiterleitung bekommen ohne einen Link verwenden?
Ich weiß es ist alles ziemlich wage. Ich wollte mich nur kurz fassen, da der Rest eigentlich funktioniert.
Toshi
Hi,
Dazu würde ich gerne einige Infos über den Angemeldeten in einem sessioncookie speichern. Wenn ich aber die Weiterleitung mit
header("Location: mitarbeiter.php"); mache
... dann ist das schon mal falsch, weil ein Location-Header einen vollständigen URL *erfordert*.
werden die Daten nicht mitgeliefert.
Zu dem Problem hatten wir erst kürzlich eine Diskussion, </archiv/2009/3/t184428/>
MfG ChrisB
Hallo
... dann ist das schon mal falsch, weil ein Location-Header einen vollständigen URL *erfordert*.
ganz so falsch scheint es ja nicht zu sein denn auch auf der PHP Seite so verwendet wird.
Zu dem Problem hatten wir erst kürzlich eine Diskussion, </archiv/2009/3/t184428/>
Ja, ich habe es gerade durchgelesen aber es ist nicht ganz so mein Problem.
Ich habe jetzt von da versucht mit session_write_close(); die Daten in ein Cookie zu schreiben, allerdings hat es nicht zum Erfolg geführt.
Im Moment ist es so das ich zum Anmelden vier Seiten habe. index.php in der man Benutzernamen und Passwort eingibt, sie dann per Formular
an login.php weiterleitet. Die login.php vergleicht die Daten mit der SQL Datenbank und authentifiziert den Benutzer. Diese Daten werden
dann gleichzeitig in die sessens geschrieben. Danach wird man per Location-Header auf die Seite admin.php oder mitarbeiter.php weitergeleitet.
Wo ich erstmal eine einfache Begrüßung mit dem entsprechenden Namen haben will.
MfG Toshi
Und wo ist das Problem, da Du eh eine Session hast, die Namen etc. in einer Session zu speichern?
Gruß
GermanysNextTopfmodel
Hallo
Und wo ist das Problem, da Du eh eine Session hast, die Namen etc. in einer Session zu speichern?
»»
Ich speichere die Daten in einer Session aber das Problem ist das ich die Daten Verliere, wenn ich per location-Header
weiterleite. Es ist so das ich die Daten auf der nächsten Seite nicht aufrufen kann. Auch die Prüfung auf empty() sagt mir das da nichts ist.
hier kurzer Auszug aus dem Code.
Seite login.php
<?php
ini_set("session.use_cookies", 1);
ini_set("session.use_only_cookies". 1);
ini_set("session.use_trans_sid", 0);
session_name("Test2");
session_start();
.
.
.
$_SESSION['Name'] = $name;
$_SESSION['Admin'] = $admin;
session_write_close();
if (isset($_POST['pas']) && $_POST['pas'] == $password)
{
if ($admin == 1)
{
header("Location: admin.php");
exit();
}
else
{
header("Location: mitarbeiter.php");
exit();
}
}
.
.
.
und dann der aufruf in z.B. admin.php
<?php
ini_set("session.use_cookies", 1);
ini_set("session.use_only_cookies". 1);
ini_set("session.use_trans_sid", 0);
session_name("Test2");
session_start();
$name = $_SESSION['Name'];
?>
<!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">
<head>
<title>Hello!</title>
</head>
<body>
<?php
echo("<h1>Admin</h1>");
echo "<p>Hallo ".$name."!!!</p>";
?>
</body>
</html>
Es kommt dann einfach als Ausgabe "Hallo !!!" und nicht der Name denn ich übergeben habe. Ich habe überprüft in der login.php
ist die variable $name vorhanden und passend gefühlt.
Toshi
$_SESSION['Name'] = $name;
$_SESSION['Admin'] = $admin;
Hast du dir hiermal $_SESSION ausgeben lassen (print_r) ?
session_write_close();
Arbeitest Du mit Frames, oder warum hier das schliessen??
<?php
ini_set("session.use_cookies", 1);
ini_set("session.use_only_cookies". 1);
ini_set("session.use_trans_sid", 0);
session_name("Test2");
session_start();
hier mal nen print_r auf $_SESSION gemacht?
Gruß
GermanysNextTopfmodel
Hallo,
»» session_write_close();
Arbeitest Du mit Frames, oder warum hier das schliessen??
Nee, das war nur ein versuch es zu beheben, so wie es in der
Diskussion steht die Chris mir vorgeschlagen hat zu lesen.
Habe aber jetzt den Fehler gefunden. :)
»» <?php
»» ini_set("session.use_cookies", 1);
»» ini_set("session.use_only_cookies". 1);
»» ini_set("session.use_trans_sid", 0);
»» session_name("Test2");
»» session_start();
wenn man mein Code anguckt dann ist das ein Fehler in der
dritten Zeile, dieses Fehler hat wahrscheinlich eine Ausgabe
erzeugt, so das ein Cookie nicht mehr ging.
So schnell kann es gehen.
Ich danke euch.
Toshi
Hallo
So jetzt habe ich eine Lösung gefunden, aber die ist nicht besonders elegant. Also ich nutze
Funktion Redirect, die für mich ans Location-Header die SID übergibt und somit auch die Daten
die ich brauche. In der URL Adresse ist jetzt aber die ID zu sehen, was ich eigentlich vermeiden wollte.
Toshi