Weiterleitung
Dirk
- php
0 Sven Schrodt0 Dirk0 Dirk0 Shadowcrow0 Dirk
0 Thorsten0 EKKi0 ritschmanhard
Hi, ich habe ein kleines php script gefunden in dem ein user und password abgefragt wird. Da ich mich mit PHP überhaupt nicht auskenne, benötige ich Hilfe. Ich möchte, das nach richtiger Eingabe der Zugangsdaten nicht im Fenster "Zugangsdaten i.O." erscheint sondern der User auf eine webseite "www.troopersoft.de" weitergeleitet wird. Durch welchen Befehlt muß ich diese Zeile ersetzen?
Gruß Dirk
<html>
<head>
<title>www.troopersoft.de</title>
</head>
<body>
<?php
include("pwd.php");
if (($benutzer == "$user") and ($passwort == "$pass"))
{
echo "
<html>
<head>
<title>Der Login</title>
</head>
<body>
Zugangsdaten i.O.
</body>
</html>
";
}
else
{
echo "Falsche Zugangsdaten.";
}
?>
</body>
</html>
Hallo Dirk,
Du suchst die Funtkion header - damit kannst Du einen HTTP-Header setzen - aber zuvor darf keine Ausgabe erfolgt sein.
Also in deinem Beispiel:
<?php
include("pwd.php");
if (($benutzer == "$user") and ($passwort == "$pass")) {
header('Location: http:www.troopersoft.de');
}
?>
Gruß Sven
P.S. wo kommen die obigen Werte für Benutzer und Kennwort her?
Erstmal Danke für die schnelle Hilfe.
Die Werte für den Benutzer und das Kennwort ist in der pwd.php Datei hinterlegt.
pwd.php
<?php
$benutzer="test";
$passwort="test";
?>
Gruß Dirk
Hallo Dirk,
Die Werte für den Benutzer und das Kennwort ist in der pwd.php Datei hinterlegt.
Ok! Und $user und $pass kommen die aus einem POST- oder GET-Request?
Wenn ja dann sieht es so aus, als wäre register_globals auf on gestellt.
Info: http://de.php.net/manual/de/security.globals.php
Gruß aus Moers
Sven
Wenn ich das so einfüge bekomme ich eine Fehlermeldung
Parse error: parse error, unexpected T_ELSE in /homepages/20/d13517314/htdocs/Premium League/inhalt.php on line 23
Meine Datei sieht so aus
<html>
<head>
<title>www.troopersoft.de</title>
</head>
<body>
<?php
include("pwd.php");
if (($benutzer == "$user") and ($passwort == "$pass")) {
header('Location: http:www.troopersoft.de');
}
{
echo "
<html>
<head>
<title>Der Login</title>
</head>
<body>
Richtige Zugangsdaten
</body>
</html>
";
}
else
{
echo "Falsche Zugangsdaten.";
}
?>
</body>
</html>
Hallo Dirk,
Du suchst die Funtkion header - damit kannst Du einen HTTP-Header setzen - aber zuvor darf keine Ausgabe erfolgt sein.
Also in deinem Beispiel:
<?php
include("pwd.php");
if (($benutzer == "$user") and ($passwort == "$pass")) {
header('Location: http:www.troopersoft.de');
}?>
Gruß Sven
P.S. wo kommen die obigen Werte für Benutzer und Kennwort her?
hi $name,
Meine Datei sieht so aus
<html>
<head>
<title>www.troopersoft.de</title>
</head>
<body>
<?php
include("pwd.php");
if (($benutzer == "$user") and ($passwort == "$pass")) {
header('Location: http:www.troopersoft.de');
} <----- die klammer ist falsch
{ <----- die klammer ist auch falsch
echo "
<html>
<head>
<title>Der Login</title>
</head>
<body>
Richtige Zugangsdaten
</body>
</html>
";
}
else
{
echo "Falsche Zugangsdaten.";
}
?>
</body>
</html>
du schließt die if abfrage VOR dem ersten echo, deswegen ist das else für den parser fehl am platz.
aber leider wird das ganze nicht funktionieren, wie dir sven schon gesagt hat MUSS der header VOR der ersten ausgabe gesendet werden.
gruss
shadow
Danke für die Info. Fehlermeldung ist weg und funktioniert nicht wie Du gesagt hast.
Wo genau muß ich es einbinden damit es so klappt? Bin ein totaler php Laie.
Gruß Dirk
hi $name,
Danke für die Info. Fehlermeldung ist weg und funktioniert nicht wie Du gesagt hast.
:-)
Wo genau muß ich es einbinden damit es so klappt? Bin ein totaler php Laie.
ich auch :-) meine php erfahrung läßt sich noch in stunden angeben, ohne eine 3stellige zahl zu bekommen.
ok here we go (wenn ich richtig verstanden habe was du willst):
das script das die passwort eingabe bearbeitet - nennen wir es prüfen.php:
<?php
include("pwd.php");
if (($benutzer == "$user") and ($passwort == "$pass")) {
header('Location: http:www.troopersoft.de');
else
{
echo "
<html>
<head>
<title>Login failed</title>
</head>
<body>
Falsche Zugangsdaten
</body>
</html>
";
}
?>
sonst darf/soll/muss da nichts drin stehen.
wie gesagt VOR dem senden des headers darf nichts stehen, und da du zu einer seite weiterleitest ist es unsinnig "zugangsdten ok" auszugeben, da das der user garnicht sieht, ganz davon ab, hättest du
<html>
<head>
<title></title>
</head>
<body>
im erfolgsfall doppelt gehabt (ohne weiterleitung). auf der troopersoft.de kööntest du dann den user aufmerksam machen, das er sich erfolgreich eingelogt hat, da er ja während einer sitzung (möglicherweise) die seite mehrmals besucht, in der form von: sie sind eingelogt.
du solltest dich aber wirklich mit dem E-V-A prinzip beschäftigen.
gruss
shadow
Hi,
die Antwort hast du von Sven Schrodt gekriegt.
Nur eines solltest du noch beachten:
<html>
<head>
<title>www.troopersoft.de</title>
</head>
<body>
<?php
include("pwd.php");
if (($benutzer == "$user") and ($passwort == "$pass"))
{
echo "
<html>
<head>
<title>Der Login</title>
</head>
<body>
Zugangsdaten i.O.
</body>
</html>
";
}
else
{
echo "Falsche Zugangsdaten.";
}
?>
</body>
</html>
Erstens, ein Doctype fehlt komplett.
Zweitens, falls hier in den Else-Zweig gewechselt wird, fehlt der "<html>-bis-<body>"-Block.
Viele Grüße
Thorsten
Mahlzeit,
nur als Ergänzung der beiden bisherigen Antworter:
<html>
<head>
<title>www.troopersoft.de</title>
</head>
<body>
<?php
include("pwd.php");
Du machst erst HTML-Ausgaben und anschließend includest Du ein Skript, das irgendwas verarbeitet - ich würde Dir empfehlen, Dich über das EVA-Prinzip zu informieren. Das ist grundsätzlich und prinzipiell besser als Code-Kuddelmuddel - und in diesem Fall höchst hilfreich, da Du mit "header()" nur zu einer anderen Adresse weiterleiten kannst, wenn noch keine Ausgabe erfolgt ist (wie Thorsten schon beschrieb).
if (($benutzer == "$user") and ($passwort == "$pass"))
{
echo "
<html>
<head>
<title>Der Login</title>
</head>
<body>
Zugangsdaten i.O.
</body>
</html>
Du gibst hier nochmal ein (nahezu) komplettes HTML-Dokument aus - im <body> eines bestehenden. Das KANN gar nicht gutgehen. Aber Du willst im Erfolgsfall ja sowieso woanders hin weiterleiten ... nur so als Ergänzung für Deine nächsten Versuche: schau Dir GENAU an, was letztendlich im Browser ankommt. :-)
MfG,
EKKi
Hi Dirk!
Nur noch so als Anmerkung:
Dir ist schon klar, dass jemand, der direkt "http:www.troopersoft.de" in seine Adresszeile eingibt, auch ohne deine Passwortabfrage dorthin gelangt?
Deshalb verstehe ich nicht so ganz den Sinn dieser Aktion...
Viele Grüsse,
Richard