Geschrieben von kenny197902 am 21.05.2005, 06:52

Mal angenommen, ihr wollt einen Administrationsbereich entwickeln, oder einen anderen Bereich, der nur für euch bestimmt ist, und kennt euch nicht mit Login-Scripten oder Cookies aus, dann habe ich genau das richtige.
Innerhalb kurzer Zeit habe ich euch einen Script in PHP geschrieben, womit ihr eure .html oder .php Dateien auch ohne .htacess schützen könnt.
Hinweis: Die HTML-Dateien müssten in .php geändert werden (sowie dort auch die entsprechenden Links angepasst werden). Eine weitere Erklärung gibts am Ende der Scripte

1. Schritt: Der Loginbereich (login.php):
============================

<?
$dpasswort='deinpasswort'; // Ändere das in dein Passwort. Die Anführungsstriche müssen bleiben!!!
$afterlogin='index.php'; // Die Datei, die nach richtigem Login aufgerufen wird.
$unterseite=''; // nicht ändern
if (isset($_COOKIE['adminkey']) && !isset($_POST['loginpass']) && $_COOKIE['adminkey'] != MD5($dpasswort)) $unterseite='formular'; // Aufruf der Loginseite, wenn der Cookie falsch ist und keine Formulardaten gesendet wurden
if (!isset($_COOKIE['adminkey'])) $unterseite='formular'; // Aufruf der Loginseite, wenn kein Cookie besteht.
if (isset($_POST['loginpass'])) $unterseite='check'; // Prüfen des Passworts, wenn Login-Daten gesendet wurden
if (isset($_COOKIE['adminkey']))
{
if ($_COOKIE['adminkey'] == MD5($dpasswort)) echo 'Du bist bereits schon eingeloggt!';
}
if ($unterseite=='formular')
{
echo '<html><head><title>Login-Bereich</title></head><body>';
echo '<table border="0" width="400" cellpadding="0" cellspacing="0"><tr><td>';
echo 'Login<br><br><form action="login.php" method="POST">Bitte gebe das Passwort ein: ';
echo '<input type="password" maxlength="32" name="loginpass">';
echo '<input type="submit" name="loginbutton" value="Einloggen"></form>';
echo '</body></html>';
}
if ($unterseite=='check')
{
if ($_POST['loginpass'] == $dpasswort)
{
setcookie('adminkey', MD5($dpasswort), time()+2419200); // Login bzw. Cookie ist für 4 Wochen gültig (aktuelle Zeit plus 2419200 Sekunden)
echo '<html><head><script language="JavaScript">location.replace("'.$afterlogin.'")</script></head><body><a href="'.$afterlogin.'">Du wurdest erfolgreich eingeloggt. Solltest du nicht in wenigen Sekunden weitergeleitet werden, dann klicke auf diesen Text!</a></body></html>';
}
else
{
echo 'Das Passwort ist falsch!!!<br><br><a href="login.php">Zurück</a>';
}
}
exit; // Beenden des Scripts
?>

2. Schritt: Der Script, welcher die User filtert (sec.php):
======================================

<?
$dpasswort='deinpasswort';
if (isset($_COOKIE['adminkey']))
{
if ($_COOKIE['adminkey'] != MD5($dpasswort))
{
echo 'Zu diesem Bereich fehlen die die erforderlichen Rechte<br><a href="login.php">Zum Login</a>';
exit; // Abbruch bei falschem Cookie
}
}
else
{
echo 'Zu diesem Bereich fehlen die die erforderlichen 2Rechte<br><a href="login.php">Zum Login</a>';
exit; // Abbruch bei fehlendem Cookie
}
?>

3. Der Logout (logout.php):
===================

<?
$afterlogout='login.php'; // Die Datei, die nach richtigem Login aufgerufen wird.
setcookie('adminkey', '', 0); // Cookiegültigkeit wird auf 1. Januar 1970 um 1:00 Uhr gesetzt (also somit abgelaufen)
echo '<html><head><script language="JavaScript">location.replace("'.$afterlogin.'")</script></head><body><a href="'.$afterlogin.'">Du wurdest erfolgreich ausgeloggt. Solltest du nicht in wenigen Sekunden weitergeleitet werden, dann klicke auf diesen Text!</a></body></html>';
exit;
?>

4. Der Einbau in die Datei:
==================

<?
include("sec.php");
?>

=====================================
Das sind die Codes. Diese könnt ihr so übernehmen, oder von folgender URL downloaden: http://www.community-and-more.de/lima-city/tutorials/cookielogin.zip
Jetzt zur Erklärung des 4. Teils.
Dieser Teil muß UNBEDINGT AM ANFANG der Datei stehen, da die Prüfung als allererstes stattfinden soll (es sollen ja schließlich keine Daten gesendet werden, wenn man nicht die Rechte dazu hat).
Die Script ist ziemlich simpel gebaut. Er benötigt KEINEN Usernamen, sondern nur ein Passwort. Also ist es eine ganz einfach Methode zum Schutz. Und davon abgesehen. Wenn es jemand auf eure Daten abgesehen hat, wird der ja bestimmt auch deinen Usernamen wissen.

ACHTUNG!!!!
Dieser Script kann andere Scripte untauglich machen. Die anderen Scripte dürfen...
a) nicht die gleichen Variablen beinhalten. Diese stören den Ablauf mit anderen Ergebnissen. Daher sollten in diesem Falle die Variablen mit unset gelöscht werden.
b) Es funktionieren danach keine Header-Befehle mehr. Durch die Übermittelung von Cookies wird ein bereits Dateiheader geschrieben. (Header allready sent by ... lautet der Fehler dann). Daher solltet ihr zuvor ein Backup anlegen, bevor ihr euch den ganzen Aufwand macht, und nachher alles zurücksetzen müsst, weil es aufgrund der genannten Konfliktmöglichkeiten zu Fehlern kommt.
Diese Fehler sind übrigends Standardfehler bei Cookiescripten. Man kann z.B. nicht erst den Dateitype als Cookie festlegen, und im Nachhinein die GD-Libary abrufen (durch header(Content-Type)) oder Ming-Flash / gzip oder ähnliche externe Dateiformate außer HTML. Dieses wäre der gleiche Effekt, als wenn ihr in eine Datei als .mpg kennzeichnen würdet, dann ein bisschen Film drin habt, und plötzlich mp3-Daten in der Datei wären. Das würde kein Programm akzeptieren.

[u]Rechtlicher Hinweis:[u] Ich erlaube die Nutzung des Scriptes komplett kostenlos, sowie die Abänderung zu eigenen Zwecken. Jedoch erlaube ich NICHT die Vervielfältigung auf anderen Seiten. Schon gar nicht zum eigenen Vorteil. Dieses Tutorial wurde am 21. Mai 2005 von Simon Kaaf (aka kenny197902) geschrieben. Bei weiteren Fragen stehe ich gerne per PN zur Verfügung.

Ich hoffe, ihr kommt mit dem Script gut klar (außreichend dokumentiert sollte dies eigentlich auch sein), und wünsche euch viel Spaß beim programmieren

Euer kenny197902

Bewertung Anzahl
6
70,0 %
7 Bewertungen
5
30,0 %
3 Bewertungen