| von admin-cb |
Jetzt musst du nur aufpassen, dass niemand die URL des geschützten Bereiches erfährt, sofern dort keine zusätzliche Absicherung drin ist.
Dein ursprüngliches Problem lag darin, dass du die Datei im Wurzelverzeichnis des Servers öffnen wolltest, wo sie sicherlich nicht liegt. Du musst bei include oder fopen die Serverpfade angeben, also entweder relativ (ohne führenden /) oder absolut im Filesystem (je nach Provider z.B. /var/www/kunde/e/example.com/geschuetzt.html).
Der absolute Pfad der aktuellen Datei steht in $_SERVER["SCRIPT_FILENAME"]
Das ob_start() wäre auch nur einmal erforderlich gewesen. Beendet wird das per ob_end_flush() oder ob_end_clean(). php.net weiß mehr. |
| von theotoffel |
Hi Baldur,
Dein Tipp war Gold wert, so klappt es nun:
<?php
ob_start("");
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
if(isset($_POST['pass'])){
if($_POST['pass']=="PETER"){
//echo "<h3>Geschützter Bereich</h3>";
//echo "<p> Hier stehen die geheimen Inhalte ... </p>";
//include 'Geschuetzt.html';
ob_start("");
header("Location: http://$host$uri//Geschuetzt.html");
exit;
}
else {
//echo "<p> Leider kennen Sie das Passwort nicht ... </p>";
ob_start("");
header("Location: http://$host$uri//Gaeste.html");
exit;
}
}
else{
echo"<h3>Wie lautet das Passwort?</h3>";
echo"<form action='passwort2.php' method = 'POST'>";
echo"<input type='text' name='pass'/>";
echo"<input type='submit' value='Senden' />";
echo"</form>";
echo"<p><hr></p>";
}
?>
Vielen herzlichen Dank, Das ist jetzt klasse! |
| von Baldur |
Das Problem ist : Vor header () darf keinerlei Ausgabe erfolgen.
Mal als erste Zeile ob_start(""); einfügen.
Dann wird die Ausgabe vorab in einen Puffer geladen und der header immer zuerst gesendet.
|
| von theotoffel |
Hallo chip,
erst einmal danke für den Tipp, ich habs ausprobiert und prompt ärgert mich mein skript mit einer neuen Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at D:\Server\htdocs\PHP_Kurs\passwort.php:2) in D:\Server\htdocs\PHP_Kurs\passwort.php on line 19
hier nochmal die ganze phpdatei, die ich starte:
<?php
echo"<h3>Wie lautet das Passwort?</h3>";
echo"<form action='passwort.php' method = 'POST'>";
echo"<input type='text' name='pass'/>";
echo"<input type='submit' value='Senden' />";
echo"</form>";
echo"<p><hr></p>";
?>
<?php
if(isset($_POST['pass'])){
if($_POST['pass']=="PETER"){
//echo "<h3>Geschützter Bereich</h3>";
//echo "<p> Hier stehen die geheimen Inhalte ... </p>";
//include 'Geschuetzt.html';
header("Location: /Geschuetzt.html");
}
else {
//echo "<p> Leider kennen Sie das Passwort nicht ... </p>";
header("Location: /Gaeste.html");
}
}
?>
ist ganz schön umgewöhnungsbedürftig zu vb oder vba 
außer in den html-Dateien ist kein "head" getaggt, da hab ich noch ein grundsätzliches Verständnisproblem.
Kannst nochmal helfen? Vielen dank!
Reinhard
|
| von chip |
Mit header() kannst du das relativ einfach lösen.
1: | header("Location: /Gaeste.html"); |
leitet einfach auf die Seite Gaeste.html weiter, die hier relativ zum Wurzelverzeichnis angegeben wurde (deshalb der /). Sie muss sich also hier direkt im Wurzelverzeichnis befinden. |
|