Refresh nach Login
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
akzeptieren
anzahl
ausgabe
benutzername
brauchen
browser
code
erfolg
funktion
header
http
login
sekunde
senden
teddy
url
vorangegangenen ausgabe
vorteil
weiterleitung
zahl
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo kill-a-teddy,
bei einem Login arbeite ich mit der header-Funktion. Habt dir hier mal ein kleines Beispiel zusammengestrickt.
<?php if (isset($_POST["benutzername"]) && isset($_POST["passwort"])) { $benutzername = $_POST['benutzername']; $passwort = $_POST['passwort']; if ($benutzername == "Karl" && $passwort == "geheim") { header("location: angemeldet.php"); } else { echo "Falscher Benutzername oder falsches Passwort!"; } } ?> <form method="post" action=""> <input type="text" name="benutzername" value="Dein Benutzername" size="20" /> <input type="password" name="passwort" value="Passwort" size="20" /> <input type="submit" value="Anmelden" /> </form>
Natürlich solltest du das Passwort nicht unverschlüsselt abfragen. In der angemeldet.php kommt der Inhalt dessen, was angezeigt werden soll, wenn man angemeldet ist.
Zusätzlich kannst du noch einen Cookie setzen, bevor der Header geändert wird.
Grüße Ploco -
kill-a-teddy schrieb:
beinahe so, wie @ploco es schreibt.
Hallo, wie mach ich einen Refresh nach dem Login?
ploco schrieb:
warum nicht ganz genau?
...
...<?php ... header("location: angemeldet.php"); ... ?>
1. z.b. weil 'angemeldet.php' hartcodiert ist? [ja und??? fragt der ganz schlaue!!!]
2. z.b. weil 'Location: ... ' SO aussehen muss?
für faule, zitat:
Hinweis:
HTTP/1.1 verlangt einen absoluten URI inklusive dem Schema, Hostnamen und absoluten Pfad als Argument von » Location:, aber manche Clients akzeptieren auch relative URIs. Gewöhnlich können Sie mittels $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] und dirname() aus einem relativen Link einen absoluten URI selbst erstellen
jetzt können natürlich haarspalter sagen: 'ja! "aber manche Clients akzeptieren auch relative URIs"'
na dann spielts nur damit ;o) [oder doch lieber standards??]
lg -
<?php session_start(); require("connect.inc.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>LogIn zum Adminbereich</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <?php if(!isset($_POST['submit'])) { ?> <form action="<?php $PHP_SELF ?>" method="post"> <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center"> <tr> <td bgcolor="#e7e7e7" align="center" colspan="2"> <b>Bitte erst anmelden</b> </td> </tr> <tr> <td width="170" bgcolor="#e7e7e7">Benutzername</td> <td width="230" bgcolor="#ffffff"> <input type="text" name="username" size="20" class="input" <?php if($_POST['username'] != "" ) {echo ' value="'.$_POST['username'].'"';} ?>></td> </tr> <tr> <td width="170" bgcolor="#e7e7e7">Passwort</td> <td width="230" bgcolor="#ffffff"> <input type="password" name="password" size="20" class="input"></td> </tr> <tr> <td bgcolor="#e7e7e7" align="center" colspan="2"> <input type="submit" name="submit" value="Anmelden" class="button"> </td> </tr> </table> </form> <?php }elseif(!$_POST['username'] || $_POST['username'] == "") { echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br /><br /> <a href="index.php">Zurück</a></p>'; }elseif(!$_POST['password'] || $_POST['password'] == "") { echo '<form action="index.php" method="post">'; echo '<p align="center">Ein Passwort brauchen wir schon ;-)<br /><br />'; echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; echo '<input type="submit" name="zurueck" value="Zurück">'; echo '</p>'; echo '</form>'; }else{ $password = md5($_POST['password']); $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".mysql_real_escape_string($_POST['username'])."'"); $result = @mysql_fetch_array($query) or die('<p align="center"> Sorry, aber dieser Benutzername existiert nicht!<br /><a href="index.php">Zurück</a></p>'); if($password != $result['pass']){ echo '<form action="index.php" method="post">'; echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br /><br />'; echo '<input type="hidden" name="username" value="'.$_POST['username'].'">'; echo '<input type="submit" name="zurueck" value="Zurück"></p>'; echo '</form>'; die; }else{ $user = $result['user']; session_register('user'); echo '<p align="center">LogIn erfolgreich! :-)<br /><br /> <a href="sichere_seite.php">Weiter</a></p>'; } } if(isset($_POST['submit'])){ } ?> </body> </html> ?>
Wo müsste ich denn dort header einfügen? weil unter der session register geht's net...
-
header musst du senden bevor die erste ausgabe kommt. Danach ist es zu spät.
Ich empfehle dir alle ausgaben in einer variable zu speichern und sie am ende mit einem echo auszugeben.
Beispiel:
<?php $content = "<html><head><title>Some Title</title></head><body>" [....] $content .= "<table>" foreach ($someArray as $key => $value) { $content .= "<tr><td>".$key."</td><td>".$value."</td></tr>"; } $content .= "</table> [...] $content .= "</body></html> [...] echo $content; ?>
So kannst du an jeder beliebigen Stelle header senden. Auch wenn du mit includes oder requires arbeitest, kannst du diese variable global nutzen. So ersparst du dir an einigen stellen viel denkerei wenn du doch mal wieder spontan header senden willst ;)
grüße
Doomdrake -
Alternativ könntest du auch eine Weiterleitung per "Meta-Refresh" machen:
echo "<meta http-equiv=\"refresh\" content=\"0; URL=angemeldet.php\" />";
Die Zahl nach "content= " gibt die Anzahl der Sekunden an, die vor der Weiterleitung gewartet werden soll.
Der Vorteil ist, dass die Weiterleitung per "Meta-Refresh" auch nach einer vorangegangenen Ausgabe erfolgen kann.
Beitrag zuletzt geändert: 12.6.2011 12:52:48 von alfr3d -
alfr3d schrieb:
Alternativ könntest du auch eine Weiterleitung per "Meta-Refresh" machen:
echo "<meta http-equiv=\"refresh\" content=\"0; URL=angemeldet.php\" />";
Die Zahl nach "content= " gibt die Anzahl der Sekunden an, die vor der Weiterleitung gewartet werden soll.
Der Vorteil ist, dass die Weiterleitung per "Meta-Refresh" auch nach einer vorangegangenen Ausgabe erfolgen kann.
Danke, funktioniert Prima! ;P -
meta-refresh funktioniert aber auch nicht in jedem browser und lässt sich clientseitig beeinflussen. Hingegen funktionieren redirect-header immer, da schon die browseranfrage umgeleitet wird und nicht erst dem browser gesagt wird, das er einen redirect machen soll.
mfg
Doomdrake -
heroes-of-legends schrieb:
meta-refresh funktioniert aber auch nicht in jedem browser und lässt sich clientseitig beeinflussen...
Dass der "Meta-Refresh" nicht in jedem Browser funktioniert konnte ich noch nicht feststellen, dass er sich allerdings clientseitig beeinflussen lässt ist klar. Deshalb sollte aufjedenfall die Header-Funktion vorgezogen werden, aber so wie ich die PHP-Kenntnisse des Threaderstellers einschätze wäre das ein riesen Aufwand (auch für uns ) geworden, das Skript anzupassen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage