Geschützer Bereich in PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfragen
anfang
anwender
array
augenwischerei
code
datenbank
falsche eingabe
http
korrekte eingabe
login
machen
problem
session
setzen
testen
url
vorgang
zugreifen
zugriff
-
Hallo zusammen,
ich möchte auf meiner Website gerne einen kennwortgeschützten Bereich einbauen. Dazu habe ich einen Login nach dieser http://html-php.de/index.php?seite=p_formular Anleitung gebaut, beim Testen aber festgstellt, dass das ja eigentlich nur Augenwischerei ist, weil die Seite an sich ja nicht geschützt ist sondern nur der Zugriff, sprich über den Link kann ich einfach auf die Seite zugreifen. Meinen beschränkten Programmierkentnissen nach, muss ich beim Login Vorgang eine Variable auf True setzen und diese dann am Anfang der Seite abfragen lassen, oder? Beim Logout Vorgang würde ich die Variable dann ja einfach wieder auf False setzen. Aber wie setzte ich das in PHP um? Und funktioniert das auch für mehrere Seiten, also über einen gespeicherten Login?
Vielen Dank schon mal
crazybanana -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo
crazybanana schrieb:
[...]weil die Seite an sich ja nicht geschützt ist sondern nur der Zugriff, sprich über den Link kann ich einfach auf die Seite zugreifen. Meinen beschränkten Programmierkentnissen nach, muss ich beim Login Vorgang eine Variable auf True setzen und diese dann am Anfang der Seite abfragen lassen, oder? Beim Logout Vorgang würde ich die Variable dann ja einfach wieder auf False setzen.
Eigentlich macht man so etwas mit cookies/sessions.
mfg -
crazybanana schrieb:
Ich denke, du redest von diese Skript:
[...] beim Testen aber festgstellt, dass das ja eigentlich nur Augenwischerei ist, weil die Seite an sich ja nicht geschützt ist sondern nur der Zugriff, sprich über den Link kann ich einfach auf die Seite zugreifen. [...]
<?php $user = $_POST['name']; $pass = $_POST['pass']; $okuser = "Anwender" ; $okpass = "Passwort" ; if ($user == $okuser && $pass == $okpass) { echo "Korrekte Eingabe" ; } else { echo "Falsche Eingabe" ; } ?>
Das ist so völlig in Ordnung. Der kleine Hinweistext "Korrekte Eingabe" ist geschützt und kann nur mit korrekten Zungangsdaten aufgerufen werden.
Wie voloya schong geschrieben hat, kannst du Sessions verwenden, um einen Login zu speichern.
Ich verlinke mal da drauf: http://www.schattenbaum.net/php/sessions.php -
Ok, mein Problem ist jetzt nur, wie ich es hin Kriege mehrere Seiten zu schützen. Wenn ich jetzt von der Geschützen Seite normal verlinke, ist die Seite ja zwar nicht direkt über die Bavigation erreichbar aber einfach so mit dem Link. Also wie Bau ich sowas? Mit Sessions kann ich jetzt mal gar nichts anfangen, da ich wirklich nur das allernötigste weiß
EDIT: hab Grade auch nochmal den Link gelesen. Ist ja ziemlich gut erklärt. Werde erstmal versuchen das nachzubauen. Wenns Probleme gibt meld ich mich nochmal
Beitrag zuletzt geändert: 27.8.2014 21:24:41 von crazybanana -
Hi,
ich kenne mich mit der Materie leider nicht so gut aus, dass ich dir einen hilfreichen Tip bzgl. deinem Script geben kann. Aber schau dir mal die Site an. Ich habe das in Verwendung und bin eigentlich ganz zufrieden damit.
Gruß Reinhold
http://www.marlight-music.de/ -
Ich nutze Kekse (Cookies) und Sessions für mein Login und checke beim Anmelden der Nutzer in einer Datenbank, ob es ihre eingegebene Email gibt und ob ihr Passwort, welches eingegeben wurde der verschlüsselten Version in der Datenbank entspricht.
Jede Seite, auf der nur spezielle User Rechte haben sollen, teste ich nach Cookies/Sessions
if(($_SESSION['name']||$_COOKIE['name'])&&($_SESSION['pass']||$_COOKIE['pass'])) {if($_SESSION['name']==$_COOKIE['name']&&$_SESSION['pass']==$_COOKIE['pass']) {if($_COOKIE['name']=="zugellassenername"&&$_COOKIE['pass']=="zugelassenespasswort") {TUEDASHIER} } }
Ich hoffe ich konnte Helfen. -
Also über Session lässt sich das relativ einfach lösen.
Ich gehe jetzt mal vom Scriptbeispiel oben aus.
$user = $_POST['name']; $pass = $_POST['pass']; $okuser = "Anwender" ; $okpass = "Passwort" ; if ($user == $okuser && $pass == $okpass) { echo "Korrekte Eingabe" ; } else { echo "Falsche Eingabe" ; }
Als erstes musst Du auf der Seite eine Session initialisieren, das muss IMMER als erstes passieren. Es reicht teilweise schon ein Lehrzeichen und das Script bockt rum.
Darum als erstessession_start();
In Deiner Abfrage setzt Du nun im Erfolgsfall die Sessionvariable für den User.
$user = $_POST['name']; $pass = $_POST['pass']; $okuser = "Anwender" ; $okpass = "Passwort" ; if ($user == $okuser && $pass == $okpass) { // Der User ist berechtigt und bekommt eine session $_SESSION["user"] = $user; } else { // wenn das Login falsch war würde ich zurück auf die Loginseite gehen. echo "Falsche Eingabe" ; }
Nun liegt die Variable für den weiteren gebruach in der Session, wenn Du nun auf weiteren Seiten prüfen willst ob der User berechtigt ist, musst Du auf diesen Seiten auf die Session prüfen.
Dabei gilt wieder, als ERSTES die Session !!
session_start(); if(!$_SESSION["user"]) { echo "Keine Berechtigung"; } else { // Erfolgreich geprüft, hier kommt der weitere Seiteninhalt }
Vieleicht hilft Dir das ja ein wenig weiter, was Du allerdings unbedingt noch Machen solltest ist dich vor sql injection schützen. Alles was der User eingibt sollte in Frage gestellt werden und geprüft.
$user = mysql_real_escape_string($user), $pass = mysql_real_escape_string($password));
LG Marco
Tante Edit:
Am Ende natürlich die Session löschen wenn der User sich ausloggt.
Wenn Du mehrere Sessions hast dann kannst Du die über ein Array löschen,
alternativ halt jede einzeln...
$_SESSION = array(); session_destroy();
Beitrag zuletzt geändert: 28.8.2014 10:05:47 von aff3m1tw4ff3 -
Danke, der letzte Post hat mir auch noch geholfen, ich konnte mich nach meinem Seitenupdate nicht ohne EditMyCookie abmelden...
Da ich die Sessions nicht null setzen konnte. -
Zwar ein wenig veraltet, aber bei dem folgenden Link werden auch einige Sicherheitsaspekte behandelt die Du auf jeden Fall beachten solltest: http://tut.php-quake.net/de/login.html
-
Da bisher schon einiges zur Lösung des Problems genannt wurde möchte ich nicht das alles noch einmal wiederholen.
Ich werde allerdings einen sicherheitsrelevanten Aspekt ergänzen:
Bei solchen Dingen die Nutzereingaben betreffen wäre folgendes auch nicht schlecht zu nutzen.
http://php.net/manual/en/function.filter-input.php
Ich habe für meine Seiten dafür spezielle Sicherheitsmechanismen gebastelt die diese Bereinigungen zu Beginn jedes Durchlaufs machen.
Wer eine komplexere Seite erstellen will, zum Beispiel ein CMS, sollte sich überlegen ob die zu empfangenden Inhalte nicht auch vorher mit einem Typ gekennzeichnet registriert werden sollten. Dadurch kann man jegliche nicht registrierten Übergabewerte schon einmal aussortieren und stellen ein noch geringeres Sicherheitsrisiko dar. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage