Passwortabfrage mit weiterleitung auf seite!

Halöle

hätt da noch ein anliegen :slight_smile:
ich möchte eine Passwortabfrage nur ein Passwort kein Name
wo der If dann auf eine .html Datei mit einem Formular verweißt.

und das Formular sollte auf eine .txt schreiben.

wenn ich dass heut noch schaffen würde wär ich ;Jump

wieso wollen alle immer nur mit dateien arbeiten?! mach’ das in eine DB, dann findest du hier sogar ein tutorial dazu.

Nils aka XraYSoLo

vlt liegt keine db vor?

wohl kaum, eher, weil man denkt, dass man auf txt mehr kontrolle ausüben kann und es leichter wird.

Nils aka XraYSoLo

jo

so denk ich :-?
is halt leichter wel sich die daten eben ständig andern und somit muss ma ned imma da rumfutzln :wink:

falsch gedacht, mit dateien ist es noch viel komplizierter.

Nils aka XraYSoLo

Also von Anfang an:

Dazu brauchst du 3 Dateien.
Bei dem hier arbeitet man mit Sessionen (kinderspiel).

Als erstes das Loginformular (index.php am besten)
[html]

Login

Passwort:

[/html] So.. diese ist ja ganz klein. Mehr brauchen wir ja auch nicht.

Nun kommt die login.php, die prüfen soll, ob das Passwort stimmt.
[php]

<?php // login.php $Passwort = "hierdeinpasswort"; $Uebernahme = $_POST['passwort']; // Die Übernahme des eingegebenen Passwortes // Nun die Abfrage: if($Uebernahme == $Passwort) { echo'Das eingegebene Passwort ist richtig'; } else { echo'Das eingegebene Passowrt ist falsch.
'; echo'Bitte gehen Sie zurück und versuchen Sie es erneut'; // Hier, wenn das Passwort falsch ist, soll ein Zurücklink erscheinen } ?>

[/php]
Nun das ist eigentlich schon eine Überprüfung.
Nun, wenn es stimmt, soll der ja etwas sehen.
Also starten wir bei login.php eine Session, die immer wieder geprüft wird, und leiten dann unseren Einlogger auf eine andere Datei.

Hier kommt die weiterleitung und die Sessionstartung:
[php]

<?php // login.php $Passwort = "hierdeinpasswort"; $Uebernahme = $_POST['passwort']; // Die Übernahme des eingegebenen Passwortes // Nun die Abfrage: if($Uebernahme == $Passwort) { session_start(); $_SESSION['passwort'] = $Zugangspasswort; // Hier geben wir der Session den Namen passwort echo'Sie sind erfolgreich eingeloggt!
'; // Und hier wird ein text kurz erscheinen. Dann wird man weitergeleitet. echo'Sie werden zur Administration weitergeleitet.

'; // Imfalle, dass der Besucher JavaScript deaktiviert hat, wird noch ein Link zum Login angeboten echo'Falls Sie nicht weitergeleitet werden, klicken Sie hier'; } else { echo'Das eingegebene Passowrt ist falsch.
'; echo'Bitte gehen Sie zurück und versuchen Sie es erneut'; // Hier, wenn das Passwort falsch ist, soll ein Zurücklink erscheinen } ?>[/php]

Zugleich soll man auf dieser Seite prüfen, ob die Session gültig ist. Sonst kann ja jeder die login.php öffnen und dann einfach den Link drucken.
Ausserdem muss (also so denke ich) session_start() vor dem restlichen Code erscheinen. Also machen wir eine ganze HTML Datei raus (mit head, body, etc)

Also müssen wir das Script umschreiben, dass es oben die Session startet, aber noch nicht prüft.
Etwa so:
[php]

<?php $Zugangspasswort = "deinpasswort"; if($_POST['Login'] && $_POST['passwort'] == $Zugangspasswort) { session_start(); $_SESSION['passwort'] = $Zugangspasswort; } ?> <?php if($_SESSION['passwort'] == $Zugangspasswort) // Hier prüft es die obig-registrierte Session. { echo"Sie sind erfolgreich eingeloggt!
Sie werden zur Administration weitergeleitet.
"; // Nun eine Rückgabe, für die die JS deaktiviert haben: echo'Falls Sie nicht automatisch weitergeleitet werden, klicken Sie hier'; } else { // Und hier die Meldung, wenn es nicht gültig ist echo 'Sie sind nicht befugt, diese Seite anzusehen
Möglicherweise ist das eingegeben Passwort falsch.

'; echo 'Bitte loggen Sie sich hier erneut ein.'; } ?> [/php]

So… Das wäre die Session-Startung und die Prüfung.
Nun gehen wir zur Datei, die geschützt ist.
Wir nennen diese Datei admin.php

Zuerst wird wieder als erstes die Session gestartet.
[php]

<?php session_start(); ?>

[/php]
Das kommt noch vor hin.
Nun kann man, wie gewohnt weitermachen, bis zum Body.
[php]

<?php session_start(); ?> Geschützter Bereich [/php] Nun soll man den Inhalt nur ausgeben, wenn die Session auch gültig ist. Dazu prüfen wir wieder: [php] <?php session_start(); ?> Geschützter Bereich <?php $Zugangspasswort = "deinpasswort wie bei login.php"; if($_SESSION['passwort'] == $Zugangspasswort) { echo'Hier ist der geschützte Bereich'; // Hier kann man weitere Dinge eingeben, dass sie geschützt sind. // Wenn man weitere Dateien dazu braucht, empfielt sich das include, da man sonst bei jeder Datei die Session prüfen muss } else { echo'Ihre Session ist nicht gültig
Loggen Sie sich hier erneut ein'; } ?> [/php] Und nun, wenn man nicht immer echo's verwenden will, kann man das ganze zwischendruch "unterbrechen". Etwa so siehts dann aus: [php] <?php session_start(); ?> Geschützter Bereich <?php $Zugangspasswort = "deinpasswort wie bei login.php"; if($_SESSION['passwort'] == $Zugangspasswort) { ?> Hier ist der geschützte Bereich. Nun kann ich hier HTML verwenden, ohne echo oder sonstiges zu verwenden. (Nachteil: Wenn man auf der geheimen Seite PHP verwendet, ist es besser mit echos zu arbeiten). <?php } else { ?> Hier der Error im HTML-Modus. <?php } ?> [/php]

Und nun haben wir ja das ganze komplett.
Mein ihr?
NEIN!
Denn man soll sich auch ausloggen können, das nachher kein Unbefugter darauf zugriff hat.
Also erstellt man noch eine logout.php.

Die sieht so aus:
[php]

<?php session_start(); if($_SESSION['passwort'] == $Zugangspasswort) { session_destroy(); echo'Sie wurden erfolgreich ausgeloggt.'; } else { echo'Sie sind nicht befugt diese Seite zu "betrachten". Loggen Sie sich hier ein.'; } ?>

[/php]

So, das war mal ein kleines Tutorial.
Ich werde es in die Tutorialkategorie zusätzlich „kopieren“.

TIP:
Anstatt bei admin.php und bei login.php immer das Passwort ändern, wäre es von Vorteil, eine Datei anzulegen, namens config.php.
Da kann man den Code hier einfügen:
[php]

<?php $passwort = "deinpasswort"; ?>

[/php]
Dann müsste man bei admin.php, login.php und bei logout.php den Code abändern.
So etwa:
[php]

<?php include"config.php"; // config.php wird eingefügt $Zugangspasswort = $passwort; // $passwort wurde in config.php bestimmt ?>[/php]

MfG, matibaski

WARNUNG: Ich nehme keine Garantie auf Fehler (Code, sowie mein Deutsch), da ich alles schnell aus dem Kopf geschrieben habe.