PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was mache ich falsch?


Yermil
01.07.2008, 10:57:29
Huhu,

ich hab noch nicht viel Ahnung von PHP. dieses Script hab ich mir krampfhaft angelernt aber es funktioniert noch nicht wie ich möchte :(

<?php
include("pwd.php");
if (($benutzer == "$username") and ($passwort == "$password")) {
location.href = "geheim.htm";
} else {
location.href = "index.htm";
}
?>

Habe ne pwd.php erstellt in dem User und Pass hinterlegt ist, das klappt auch.
Nun möchte ich eben das bei richtiger Eingabe die geheim.htm aufgerufen wird und bei falscher Eingabe einfach die index.htm auf der das Loginfeld ist neu geladen wird.


Was mache ich falsch? :(

kokklo
01.07.2008, 11:46:46
Hi,

versuch mal:


<?php

include("pwd.php");

if( ($benutzer == $username) AND ($passwort == $password) )
{
header('Location: geheim.htm');
}
else
{
header('Location: index.htm');
}

?>


Um Variablen brauchst du keine Anführungszeichen setzen.

location.href ist soweit ich das jetzt beurteilen kann doch ein Befehl aus dem JavaScript-Bereich oder? Den kannst du natürlich nicht im PHP-Code benutzen.

Verwende hier header('Location: example');

Lg, kokklo

Yermil
01.07.2008, 12:00:00
Schade hilft auch nicht.

bei falscher pw eingabe:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/....php:4) in /home/www/....php on line 21

und bei richtiger:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/....php:4) in /home/www/....php on line 17


in den Zeilen steht jewels
header('Location: geheim.htm');

und
header('Location: index.htm');

kokklo
01.07.2008, 12:06:29
Diese Fehlermeldung bekommst du wenn bevor der header()-Befehl genutzt wird eine Ausgabe gemacht wird.

Wie wird denn das Script aufgerufen?
Was ist noch alles an Text in dieser Datei vorhanden?

lukgestach
01.07.2008, 12:13:27
location.href ist soweit ich das jetzt beurteilen kann doch ein Befehl aus dem JavaScript-Bereich oder? Den kannst du natürlich nicht im PHP-Code benutzen.

Sicher geht das! Er muss es einfach in ein JS Block einbinden:
if()
{
echo "<script type='text/javascript'>location.href = 'geheim.html';</script>";
}
else
{
//das andere
}

kokklo
01.07.2008, 12:17:09
Ok, da ich selber selten bis überhaupt kein JavaScript nutze muss ich zurückstecken.

Die Frage ist nur welche Lösung komfortabler ist. Vermutlich eine Streitfrage.
Allerdings schließen wir hier alle User aus, die JavaScript deaktiviert haben.

Hier nochmal ein paar Links bezüglich der Fehlermeldung:

http://www.php-faq.de/q/q-fehler-header.html

http://faq.php-quake.net/#redirect

Yermil
01.07.2008, 12:21:38
jau vielen dank kokklo für deine hilfe aber lukgestach's lösung klappt wunderbar.
danke jungs super forum!

lukgestach
01.07.2008, 14:09:13
bitte, gern geschehen ;-)

kokklo
01.07.2008, 15:51:50
jau vielen dank kokklo für deine hilfe

Gern geschehen.

aber lukgestach's lösung klappt wunderbar.

Solange der jeweilige Benutzer JavaScript in seinem Browser zulässt, ja.

Ich empfehle dir trotzdem auch noch andere Wege und Lösungen auszuprobieren.
"Learning by trial and error" ;)

Schönen Tag noch ;)

Lg, Kokklo

lukgestach
01.07.2008, 17:19:06
eine andere Lösung ist mit dem META Tag von HTML...

<meta http-equiv="refresh" content="0; url=geheim.html">

kokklo
01.07.2008, 17:41:20
Die gibt es, allerdings..

In HTML gibt es eine Möglichkeit, mittels einen Meta-Element dem Besucher auf eine andere Seite weiterzuleiten. Diese Möglichkeit wird aber nicht vom W3C offiziell anerkannt, das sollte man immer im Hinterkopf behalten.

Dann hätten wir die 3 Möglichkeiten, per header-Befehl, JavaScript und Meta-Element. Was für dich nun die beste Lösung ist findest du am besten selbst heraus.

Ich bin der Meinung das die header()-Lösung am effektivsten ist. Alternativ kannst du auch einfach ein ob_start() in die erste Zeile setzen. Dann bekommst du auch keine Fehlermeldung mehr wenn Text ausgegeben wird bevor der header()-Befehl genutzt wird.

Lg, kokklo

mc220487
01.07.2008, 18:00:16
ich muss zugeben ich habe jetzt nicht alles gelesen weil ich kein bock hatte... aber wenn du den header benutzen möchtest, dann darf davor keine einzige ausgabe stehen, sprich kein echo befehl! nicht in der php seite wo du das header verwendest noch in darf kein einziges echo in der include datei sein! dann und nur dann funktioniert es! ansonsten über javascript...