yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Einfaches Login-Script



Manchmal ist es nötig, eine bestimmte Datei besonders zu schützen. Die sicherste Methode ist da zwar immer noch .htaccess. Wer aber diese Methode nicht nutzen kann/will/darf, der kann ganz einfach auf PHP umsteigen.

Hierfür sind zwei Dateien nötig: login.html und datei.php. login.html enthält das Formular, wo man sein Passwort eingeben muss, datei.php enthält die geheime Datei samt Check auf richtiges Passwort.

login.html:
Code:
<html>
<head>
<title>Login</title>
</head>
<body>
<center>Bitte gib das richtige Passwort ein</center>
<form action="datei.php" method="post">
<p>
<b>Passwort: </b> <input type="password" name="pw" /> <input type="submit" value="Einloggen" />
</p>
</form>
</body>
</html>


datei.php:
PHP-Datei:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$passwort
="geheim";

if(
$_POST['pw']==$passwort) {
?>
// Hier geheimer Inhalt
<?
} else {
?>
// Hier Fehlermeldung
<?
}
?>

Den Inhalt der login.html ist reines HTML, das sollte bekannt sein. Ansonsten verbleibt der Verweis auf die Formular-Referenz von SelfHTML.
Und die datei.php ist auch sehr einfach gehalten. Unter
Code:
$passwort
gibt man an, wie das Wort lauten soll, unter dem der Zutritt gewährt wird. Da man auf normalen Weg nie den Quelltext einer PHP-Datei sieht, kann das Passwort auch nicht ausspioniert werden.
Nun wird unter
Code:
if($_POST['pw']==$passwort) {
überprüft, ob das gesendete Passwort mit dem Wort unter
Code:
$passwort
übereinstimmt. Tut es dies, so wird der Teil ausgegeben, wo jetzt noch
Code:
// Hier geheimer Inhalt
steht.
Stimmt es nicht überein, so wird der Teil
Code:
// Hier Fehlermeldung
ausgegeben.
Das wars!




Natürlich kann man noch einige Modifikationen vornehmen:
Möchte man, dass auf eine andere Seite als die datei.php umgeleitet wird, so nimmt man anstelle von
Code:
// Hier geheimer Inhalt
folgendes:
Code:
Header("Location: neuedatei.php");
. Nun wird, sofern das Passwort richtig ist, sofort auf die Datei neuedatei.php umgeleitet.

Möchte man auch noch einen Namen abfragen, so erweitert man die login.html dementsprechend durch ein Eingabefeld, z.B. mit dem Namen
Code:
loginname
. Dann benötigt man nach
Code:
$passwort
eine weitere Variable
Code:
$name
, wo man den Namen, unter dem der Zugriff gewährt werden soll, eingibt:
Code:
$name="bernhard";
.
Nun noch in der datei.php die Zeile
Code:
if($_POST['pw']==$passwort) {
in
Code:
if(($_POST['pw']==$passwort) && ($_POST['loginname']==$name)) {
ändern, dann hat man auch das.

Geschrieben von Phil Marx am 18.06.2004 (33118x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

So kann man das machen, wenn man nur EINE Datei schützen möchte. Ich würde das aber mit Sessions machen! Dann kann man nämlich auch nachfragen ob die Session registriert ist mit session_is_registert("name"); und so mehrere dateien schützen. Eine andere Möglichkeit wäre, dass mit Cookies zu machen...
Geschrieben von michi
das funtz net
Geschrieben von Micha
Was funzt net?



Der eigentliche Code funktioniert, vielleicht haste was falsch kopiert oder etwas falsch hinzugefügt?
Geschrieben von Phil Marx
Das funzt nicht habe es so kopiert und auch nochmal so abgeschrieben das basís model zeigt mir defenitive immer an das das pw falsch ist.



wäre super wenn du dich melden könntest deswegen
Geschrieben von Chris
Ich hab die beiden Dateien genau so übernommen, wie es angegeben wurden, mitsamt der Dateinamen.
Wenn ich allerdings jetzt etwas in das Passwort-Feld eingebe (egal was) öffnet sich immer die php-datei und man sieht alles was drin steht.

Was hab ich falsch gemacht?
Geschrieben von Jonas
hallo,

wie trage ich da mehrere USER ein? Und wie stelle ich es an, wenn z.b. User1 auf datei.php weitergeleitet wird, aber User2 soll nur auf datei2.php weitergeleitet werden. Wie sieht dann das script für datei.php aus?

LG,

NiMi
Geschrieben von NiMi
Hallo,

wollte fragen wie man das machen soll:

Code:
// Hier geheimer Inhalt ersetzen durch

Code:
Header("Location: neuedatei.php")

Leider geht das nicht, denn nun wird, wenn man das richtige PW eingegeben hat
Header("Location: neuedatei.php")
angezeigt und nicht versucht weiterzuleiten.

Warum nicht??

DANKE
Geschrieben von Michael
Hallo, des funzt soweit sehr gut... Aber bei mir ist der geschützte Inhalt mit einigen Funktionen versehen, die jetzt nicht mehr ausgeführt werden (Popup Fenster, SQL DB Änderung). Es wird nur die Fehlermeldung angezeigt die man eingeben kann.

Gibt es eine Möglichkeit diese funktionen trotzdem auszuführen?
Geschrieben von marcgm
hallo,

könnte man in der "datei.php"

anstelle des direkten passwortest nicht auch noch ein include auf eine datei eingeben, die das eigentliche passwort beinhaltet?
oder liege ich mit meinen gedankengang falsch?

MfG freakyno1
Geschrieben von freakyno1
hi Michael

wenn du die Header ("location...

durch

<?
header ("location...
?>

ersetzt funktioniert es,

Gruss Mülly
Geschrieben von Mülly
Hi,
Ich hab alle Dateien so übernommen aber egal welches Passwort ich eingebe, es wird mir immer der komplette Inhalt der Datei "datei.php" angezeigt! Kann mir irgendwer helfen? Antworten bitte an sitemaster@marvins-website.de
Geschrieben von marvin
Ich habe eine kostenlosen Webspace den ich mit einem pw versehen wollte. Ich habe mir alles mehrmals durchgelesen und ausprobiert. Was ich auch mache....funkt nich! Bei mir kommt egal ob ich das richtige pw, ein falsches oder gar keins angebe:

"// Hier geheimer Inhalt // Hier Fehlermeldung"

Es wär nett wenn mir irgendwer helfen könnte...
schon mal im voraus:thx
Geschrieben von Max
Shcon interessant, dass die einfachsten Beispiele auf der Seite die meisten Fragen aufwerfen :)
Geschrieben von Steven
hi, hab n problem und zwar... wenn ich auf eine neue php datei verlinke kommt anstatt der neuen seite diese Meldung: header ("location: bilder.php")!

bitte um schnelle antwort!
Geschrieben von Mayk
bei mir zeigt es immer an datei konnte nicht gefunden werden(datei.php)!Habe es mit einem editor abgespeichert!
Geschrieben von emi
Bei mir klappt das von vorn bis hinten nich, der zeigt mir die PHP datei als text an also den teyxt der da drinsteht wenn ich auf einloggen klicke, egal ob PW richtig oder falsch
Geschrieben von Goasler
Parse error: syntax error, unexpected T_BOOLEAN_AND in /srv/www/httpd/phost/s/com/pytalhost/slot/web/test/datei.php on line 5

if($_POST['pw']==$passwort) && ($_POST['user']==$name)) {

was is verkehrt?
Geschrieben von Goasler
hallo ihr müsst "location" durch den ziel ordner bei mir (statt location)"news.htm"

ich hoffe das hilft euren problemen weiter
Geschrieben von peter