Einzelnen Beitrag anzeigen

Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#2

Re: [PHP] Eigenes Loginscript

  Alt 24. Sep 2008, 17:33
Hi!

Also dein Ansatz ist leider völlig falsch! So wird das nichts. Das nennt man Security by Obscurity und sollte tunlichst vermieden werden. Besonders in so einer einfachen Form wie hier.

Richtig geht es so: Nachdem du die Daten in POST auf Richtigkeit geprüft hast, musst du dem User eine Session geben. Dafür hat PHP schon fertige Funktionen, die sogar echt einfach zu verwalten sind. Als erstes musst du ganz (!) am Anfang jeder Datei, noch bevor jeder (!) Ausgabe die Funktion session_start(); aufrufen. Wenn die Login-Daten dann richtig sind, kannst du in die globale Array-Variable $_SESSION dann z.B. einen Wert "true" reinschreiben, auf den du dann immer überprüfst. Beim Logout dann einfach ein false rein. Kurzes, ungetestetes Beispiel:

Code:
session_start();
if ($_POST['name'] == $name && $_POST['password'] == $password) { // Warum denn 2 Abfragen?
  $_SESSION['login'] = true;
} else {
  // Fehlermeldung ausgeben
}

// [...]

if ($_SESSION['login']) {
  // geheime Inhalte anzeigen
} else {
  // "Sie sind nicht berechtigt" ...
}
Edit:// Vielleicht noch ein paar Worte zu den Sessions. Die Daten, welche du in $_SESSION speicherst bleiben erhalten, solange der User eingeloggt ist und sind bei jedem Script-Aufruf wieder verfügbar. Der User bekommt von PHP einen Cookie mit einem 32 Zeichen langen Zufalls-String. Dieser wird vom Browser bei jedem Seitenaufruf an den Server geschickt. Der Server sucht in seiner Session Datenbank nach diesem Zufalls-String (die Session-ID). Hat er was gefunden, läd er die Daten in die $_SESSION-Variable und führt das Script aus. Wichtig zu erwähnen ist es dann wohl, dass all diese Daten Server-gespeichert sind. Das heißt, es ist Problemlos möglich, statt einem "true" auch eine ID möglich, die den gerade eingeloggten User identifiziert. Der User kann diese Daten weder sehen noch ändern.

Mit freundlichen Grüßen,

Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat