else weiterleitung im loginscript
Max
- php
0 MasonB0 David Tibbe
Hi Leute.
Ich habe eine Frage:
Ich habe mit einem Loginscript angefangen. Ich muss zugeben dass ich den größten Teil bisher kopiert habe weil ich noch ein totaler Anfänger in Sachen PHP bin.
Ich möchte erreichen dass, wenn jemand auf eine Seite möchte die man nur nach Login sehen kann, weitergeleitet wird auf eine andere Seite auf der dann wieder meine Login-Felder sind und drüber steht dass er sich einloggen muss. Bisher steht dann auf einer blank seite einfach nur "Sie sind nicht eingeloggt".
Am Anfang vom Code habe ich hierfür:
<?php
session_start();
if($_SESSION["logedin"] == TRUE) {
echo "Sie sind eingeloggt.<br><a href=\"index_index.php?site=logout\">Ausloggen</a>";
?>
und am Ende:
<?php
} else {
echo "Sie sind nicht eingeloggt.";
}
?>
Wie kann ich jetzt erreichen dass im Falle "Nicht eingeloggt" eine Weiterleitung erfolgt?
Vielen Dank für eure Hilfe!
Gruß,
Max
Hi,
gib in diesem Fall im <head> Bereich der Seite eine normale HTML Weiterleitung aus:
<meta http-equiv='refresh' content='0; URL=seite.php'>
Damit wird die Seite nach 0 Sekunden neu geladen mit der URL Seite.php
Ciao MasonB
Hallo Max,
Wie kann ich jetzt erreichen dass im Falle "Nicht eingeloggt" eine Weiterleitung erfolgt?
Wenn die Weiterleitung sofort erfolgen soll, sende einen entsprechenden Location-header. Andernfalls gebe einen Link und ggf. ein Meta-Refresh an.
Grüße
David
Vielen Dank für die promten Antworten.
@David
Ich hab es jetzt so versucht:
<?php
} else {
header("Location: login.php");
exit;
}
?>
Aber ich bekomme nur einen Fehler.
Was hab ich da falsch gemacht?
@Mason:
Deine Lösung wird eifnach ignoriert. Da gibt mir der Browser doch wieder nur die Blank-Page mit dem Text ausgegeben.
Gruß,
Max
Hallo Max,
header("Location: login.php");
Location-Header müssen absolut sein.
Aber ich bekomme nur einen Fehler.
Meinst du der könnte unwichtig sein und deswegen postest du ihn nicht?
Was für eine HTTP-Response bekommst du?
Grüße
David
Hallo,
Der Meta-Refrsh kann nicht nur die Seite neu laden, sondern auch eine andere Seite laden!
Bye
Location-Header müssen absolut sein.
Was heißt das?
Die Fehlermeldung lautet
Warning: Cannot modify header information - headers already sent by (output started at D:\htdocs\systestgen_new\PHP_Test\Page11\eingeloggt.php:4) in D:\htdocs\systestgen_new\PHP_Test\Page11\eingeloggt.php on line 81
Hi,
vor dem Header darf nicht stehen, noch nicht mal ein Blank
=> die Seite muss mit <?php anfangen und es darf keinerlei Ausgabe erfolgen bevor der Header gesendet wurde
Ciao
Okay.
Vielen Dank.
Ich werde mich erstmal noch weiter mit "header" auseinandersetzen weil ich die Lösung noch nicht verstehe.
Aber vielen Dank euch beiden. Dass ichs nicht verstehe liegt jetzt erstmal an mir ;)
Gruß,
Max
Hier auf der Seite des PHP-Manual steht relativ gut beschrieben wie die Funktion Header funktioniert.
Das wichtigste ist das du sicherstellst das keinerlei Ausgabe gemacht wird ( auch Blanks oder so im Quelltext ) bevor der Header gesendet wird also muss das ERSTE!!! das im Quelltext deiner PHP-Seite zu lesen ist <?php sein.
http://de3.php.net/header
Ciao
Sry, hab eben vergessen:
Die Fehlermeldung die du bekommen hast bedeutet das schon etwas gesendet wurde.
Sobald du irgendwelche Ausgaben hast sendet der Webserver den Standard Header, danach die Ausgabe und ab diesem Zeitpunkt ist ein ändern des Headers unmöglich