Hallo,
Ich bin gerade dabei einen kleinen Passwortschutz in PHP und Sessions zu programmieren. Das ist mit meinen rudimentären Kenntnissen ein recht grosses problem, und ich habe schon einige Seiten durchgelesen, aber ich bin glaube ich einfach zu dumm dazu.
Hier die Quelltexte:
------------------------
Datei 1: "logon.php"
<?php
$usrname = "julian";
$pass = "test"; // Definition Username und Passwort
if($gesendet) {
//Mache die PW-Überprüfung nur, wenn das Formular gesendet wurde (siehe submit-button)
if($usr == $usrname && $pw == $pass) { //Überprüfe ob PW und Usern OK
session_start(); //Wenn ja erstelle Session
session_register("zugriff");
$zugr = "ok"; // Schreibe in Session die Variable zugriff = ok
//Gib Header aus mit automatischer Weiterleitung:
echo "<html><head><meta http-equiv="refresh" content="0; URL=geheim.php"></head>"; }
else { //Wenn PW Falsch gebe Fehlermeldung aus
echo "<html><head><title>Falsches Passwort!</title>
<script language="JavaScript">alert('Username oder Passwort falsch!');</script></head>"; }
}
else { // Gebe normalen head-bereich aus.
echo "<html><head><title>Es wird ein Passwort benötigt!</title></head>"; } ?>
<BODY>
Username: <input type="text" name="usr"><br>
Passwort: <input type="password" name="pw"><br>
<input type="submit" value="Abschicken" name="gesendet">
</form>
</BODY>
</HTML>
------------------------
Erläuterung Datei 1: Das Script soll bei richtigem Passwort eine Session erstellen und in sie die Variable "$zugriff = ok" schreiben, danach soll sie eine weiterleitung auf die geheim.php machen.
------------------------
Datei 2: geheim.php
<?php
session_start(); //Lade Session ein
$db1 = session_encode();
$db2 = session_decode($db1); //Dekodiere Session
if($zugriff != "ok") {
echo "<html><head><meta http-equiv='refresh' content='0; URL=logon.php'></head></html>";
}
?>
<html><body>NORMALER INHALT DER SEITE, WENN DAS PASSWORT OK IST.</body></html>
------------------------
Erläuterung Datei 2: Erst wird die Session eingeladen, anschliessend dekodiert und getestet, ob in der Session die Variable "$zugriff == ok" ist, wenn nicht, wird auf die logon.php weitergeleitet.
Das Problem: Wird die geheim.php ohne Variable einfach in die Adresszeile eingegeben, wird auf die logon.php weitergeleitet. Wird aber in die adresszeile des Browsers "geheim.php?abc=xyz" oder so, wird der Inhalt der geheim.php (ohne Passwortabfrage) angezeigt.
Kann mir hier jemand helfen???
MFG Julian