Passwort mit PHP
Simsso
- php
0 Der Martin0 Sven Rautenberg0 hotti
Hallo,
ich habe mal den Code hier geschrieben:
<?php
$A = '<form method="post" action="Geschuetzter_Bereich.php" name="Passwort" class="Eingabe_0"><input type="password" name="XXX" /><input type="submit" value="Enter" /></form>';
$B = 'Geschützter Bereich!';
if ($_POST["XXX"] == "XXX") {
setcookie("Cookie", "Positiv", time()+60*10); [Hier ist Line 44!]
}
if ($_COOKIE["Cookie"] != "Positiv") {
echo $A;
}
if ($_COOKIE["Cookie"] == "Positiv") {
echo $B;
}
?>
Damit möchte ich einen Teil der Seite nur zeigen, wenn man das Passwort eingibt.
Wisst ihr wo der Fehler ist.
Ich bekomme die Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /hp/bw/ab/mc/www/Ablage/Geschuetzter_Bereich.php:5) in /hp/bw/ab/mc/www/Ablage/Geschuetzter_Bereich.php on line 34
Die Linie wurde oben markiert!
Gruß
Hi,
Wisst ihr wo der Fehler ist.
Ich bekomme die Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /hp/bw/ab/mc/www/Ablage/Geschuetzter_Bereich.php:5) in /hp/bw/ab/mc/www/Ablage/Geschuetzter_Bereich.php on line 34
steht doch klar und deutlich da: In Zeile 5 fand bereits eine Ausgabe statt, die HTTP-Header sind dadurch längst abgeschlossen und können nicht mehr verändert oder ergänzt werden.
Die Linie wurde oben markiert!
Du hast angeblich Zeile 44 markiert, die Fehlermeldung nennt aber Zeile 34.
Ciao,
Martin
Moin!
Ich bekomme die Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /hp/bw/ab/mc/www/Ablage/Geschuetzter_Bereich.php:5) in /hp/bw/ab/mc/www/Ablage/Geschuetzter_Bereich.php on line 34
Die Linie wurde oben markiert!
Hast du gegoogelt? Hast du da nix gefunden zu dieser Fehlermeldung?
Abgesehen davon ist deine Vorgehensweise sehr fragwürdig, denn man sieht den geheimen Teil nicht nur, wenn man das Passwort eingibt, sondern schon dann, wenn man einfach das richtige Cookie "Cookie" mit dem Inhalt "positiv" mitsendet. Man kann also auch ohne Passwort an die Info rankommen.
Benutze Sessions für dieses Problem! Sessions erzeugen ein Cookie mit zufälliger ID, die man nicht raten oder ausprobieren kann. Speichere dann in $_SESSION, ob das Passwort korrekt war, anstelle im Cookie.
Und noch ein Problem wird dein Code haben: Wenn du setcookie() aufrufst, entsteht nicht direkt ein gleichnamiger Eintrag in $_COOKIE, sondern erst beim nächsten Request. Nur falls du dich wunderst, dass der geheime Text noch nicht sofort nach Passworteingabe erscheint.
- Sven Rautenberg
Hallo,
kannst du mir den code mit sessions schicken
weil wie das geht weiß ich nicht.
Gruß
Moin!
Hallo,
kannst du mir den code mit sessions schicken
weil wie das geht weiß ich nicht.
Der Artikel wäre eigentlich hier: http://aktuell.de.selfhtml.org/artikel/php/loginsystem/
Weil aber der Server gerade down ist, nimm den Google-Cache: http://webcache.googleusercontent.com/search?q=cache:5nUSnQTBgTwJ:aktuell.de.selfhtml.org/artikel/php/loginsystem/+selfhtml.org+php+session&cd=1&hl=de&ct=clnk&gl=de&client=opera&source=www.google.de
- Sven Rautenberg
hi,
setcookie("Cookie", "Positiv", time()+60*10); [Hier ist Line 44!]
Warning: Cannot modify header information - headers already sent by (output started at /hp/bw/ab/mc/www/Ablage/Geschuetzter_Bereich.php:5) in /hp/bw/ab/mc/www/Ablage/Geschuetzter_Bereich.php on line 34
Jow. Ab Zeile 34 (lt. Fehlermeldung) beginnt die Ausgabe, d.h. PHP generiert dazu einen HTTP-Header. Du möchtest nun in Zeile 44 selbst einen Header senden (Cookie) und kriegst die Meldung, weil PHP schon einen Header gesendet hat.
Damit möchte ich einen Teil der Seite nur zeigen, wenn man das Passwort eingibt.
Dein Script macht was es soll: Es zeigt die Seite schon, bevor Du das möchtest. Wenn Du das nicht möchtest, dann muss Deine PHP-Datei links oben mit
<?php
// beginnen
// und ganz unten mit
?>
enden. Vor und nach diesen Token darf nichts stehen (kein Leerzeichen, kein Zeilenumbruch, keine BOM). Und dazwischen keine Spaghetties.
Hotti