per php neue Seite aufrufen
Mief
- php
0 Multi0 Mief0 Malcolm Beck´s0 Der Martin0 Multi0 Der Martin0 Multi
0 Malcolm Beck´s
Hallo Leute,
ich habe eine Internetseite mit einem Login-Window. Jetzt tut sich die Seite beim Absenden selbst aufrufen und führt ein Script aus. Jetzt kommt meine Frage: Wenn der Benutzer Name und Passwort richtig eingeben hat, dann soll eine neue Seite geöffnet werden, aber auch erst dann und nicht früher!! Welchen Befehl gibt es dafür?
Danke schonmal im voraus.
Welchen Befehl gibt es dafür?
Entweder bindest du die entsprechende Seite per include() oder require() ein oder leitest per header(Location: ); weiter.
Entweder bindest du die entsprechende Seite per include() oder require() ein oder leitest per header(Location: ); weiter.
Ich will nichts einbinden sondern weiterleiten. Habs schon mit header versucht, funktioniert aber nicht. Hier mal der Code:
<?php
$name = $_POST["name"];
$passwort = $_POST["passwort"];
if ($name=="Veit" && $passwort=="webprograming") {
header("Location:./planetstat/admin/");
}
?>
Der Code steht ganz oben, auch über dem Doctype-Element.
Hallo,
Ich will nichts einbinden sondern weiterleiten.
das hat einen gravierenden Nachteil: Jeder, der die Ziel-URL kennt, kann die Seite ebensogut direkt aufrufen.
<?php
$name = $_POST["name"];
$passwort = $_POST["passwort"];
if ($name=="Veit" && $passwort=="webprograming") {
header("Location:./planetstat/admin/");
}
?>
Das Umkopieren von $\_POST[] in eine weitere Variable ist unsinnig, und der Location-Header verlangt gemeäß der HTTP-Spec ein Leerzeichen nach dem Doppelpunkt und eine absolute URL. Das fehlende Leerzeichen ist vermutlich das, woran es hier scheitert, da die meisten Browser versuchen, auch relative URLs "irgendwie" zu verarbeiten.
> Der Code steht ganz oben, auch über dem Doctype-Element.
Also vor jeder anderen Ausgabe an den Client. Das muss auch so sein, damit header() überhaupt etwas ausrichten kann.
Ciao,
Martin
--
"So schnell waren wir noch nie am Unfallort", sagte der Polizist zu seinem Kollegen, als er einen Laternenmast gerammt hatte.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Als Ergänzung zu den beiden anderen Aussagen: Parameter ohne Prüfung zu übernehmen, ist mindestens fahrlässig. Hier kann dir ein böser Mensch Sachen unterjubeln, die du gar nicht willst.
Hallo,
Als Ergänzung zu den beiden anderen Aussagen: Parameter ohne Prüfung zu übernehmen, ist mindestens fahrlässig. Hier kann dir ein böser Mensch Sachen unterjubeln, die du gar nicht willst.
richtig, aber solange man die Parameter nur gegen Referenzwerte prüft, und nicht sonstwie weiter verwendet, sehe ich da keine Gefahr.
Ciao,
Martin
richtig, aber solange man die Parameter nur gegen Referenzwerte prüft, und nicht sonstwie weiter verwendet, sehe ich da keine Gefahr.
Solange Buffer-Overflow o.ä. eine reelle Gefahr darstellen können(nur weil aktuell PHP diesen Bug nicht hat, kann er in einer älteren oder zukünftigen Version vorhanden sein), halte ich es für grob fahrlässig, darin keine Gefahr zu sehen.
Hallo,
richtig, aber solange man die Parameter nur gegen Referenzwerte prüft, und nicht sonstwie weiter verwendet, sehe ich da keine Gefahr.
Solange Buffer-Overflow o.ä. eine reelle Gefahr darstellen können(nur weil aktuell PHP diesen Bug nicht hat, kann er in einer älteren oder zukünftigen Version vorhanden sein), halte ich es für grob fahrlässig, darin keine Gefahr zu sehen.
nein, keineswegs. Wenn dieses Risiko besteht und ausgenutzt wird, dann ist das Kind bereits in den Brunnen gefallen, wenn das Script startet. Durch das Lesen eines Variableninhalts und Vergleichen mit einer Konstanten entsteht kein Buffer Overflow. Der könnte erst zuschlagen, wenn ich mit dem Variablenwert eine Funktion aufrufe oder eine modifizierende Operation durchführe - sprich: wenn Daten intern wieder kopiert und/oder manipuliert werden.
Ciao,
Martin
مرحبا
Jetzt kommt meine Frage: Wenn der Benutzer Name und Passwort richtig eingeben hat, dann soll eine neue Seite geöffnet werden, aber auch erst dann und nicht früher!!
Das geht mit ein paar Zeilen PHP.
<?php
session_start();
error_reporting(E_ALL | E_STRICT);
if(isset($_GET['logout']))
if($_GET['logout'] == 1) {
session_destroy();
header('Location: http://'.$_SERVER['HTTP_HOST'].'/admin/');
exit;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
if ($_POST['username'] == $admin->name AND $_POST['passwort'] == $admin->pass)
$_SESSION['angemeldet'] = true;
if (!isset($_SESSION['angemeldet']) OR !$_SESSION['angemeldet']) {
echo <<<EOT
<!DOCTYPE html><html><head><meta http-equiv="Content-type" content="text/html; charset=utf-8" /><title>Login</title></head><body><form action="/admin/" method="post">
<p><label>Username: <input type="text" name="username" /></label>
<p><label>Passwort: <input type="password" name="passwort" /></label>
<p><input type="submit" value="Anmelden" /></form></body></html>
EOT;
}
else {
include_once 'login.inc.php'; // Login erfolgreich, irgendwelches zeug machen
echo '<p><a href="?logout=1">Logout</a></p>'; // Logout-Link
}
mfg