WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Nach Login entweder 1 Seite oder eine andere Seite laden » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
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.

Nach oben