• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Sessions

Status
Für weitere Antworten geschlossen.

Icy

Neues Mitglied
Hallo!
Hab da mal eine Frage :)
Ich hab mir ein kleines Admin Menü für meine Seite gebastelt, was mit Sessions läuft. Hab das so gelöst:
In der index.php gibt man ein Passwort ein. Es wird überprüft, ob das PW stimmt. Wenn es das Richtige ist, wird eine Session gestartet und $_SESSION['admin'] = 1 gesetzt. Danach wird man zur admin.php weiter geleitet. In dieser admin.php wird dann überprüft, ob $_SESSION['admin'] == 1 ist, damit man nicht ohne Anmeldung die Seite betreten kann. Wenn also der Wert 1 ist, dann wird einem der Admin-Bereich angezeigt.

Dazu habe ich nun ein paar Fragen. Erst einmal ob diese Methode sicher ist. Zweitens habe ich schon oft was von einer Session-ID geh
ört, die ja bspw auch beim Burning Board oben am Link angehängt wird. Wozu ist die gut? Wo kann/muss ich die in meinem Script einsetzen?

Wäre dankbar über eien Antwort, aber bitte einfach zu verstehen denn ich habe noch nicht wirklich mit Sessions gearbeitet :-)

MfG Icy
 
Im Grunde ist diese Methode sicher.

Eine Session hat immer eine ID. An dieser ID ist sie eindeutig wiederzufinden. Es kann ja sein, dass mehrere Sessions gleichzeitig laufen (weil mehr als ein Besucher auf der Seite ist). Dann kann man sie Anhand dieser sessionIDs zuordnen.

Normalerweise wird diese SessionID in einem Cookie gespeichert. Somit wird sie "unsichtbar" übergeben, und auf der nächsten Seite kann die Session dann wieder gefunden werden.

Für benutzer die keine Cookies erlauben, gibt das aber ein Problem, weil die ID ja nicht übergeben werden kann. Deshalb kann man die SessionID an den Link hängen.

Wegen der Sicherheit, es wird erst unsicher wenn die Sessions nicht verfallen, und du jemandem eine Sessionid, die eingeloggt ist, gibst.
Zum beispiel du loggst dich ein und gibts mir die Session ID (mit session_id() kriegt man die). Dann kann ich mich, wenn die Session noch nicht verfallen ist, mit dieser Session in deinem Admin Center bewegen.

Wann die Sessions verfallen steht in der php.ini, Standard ist eigentlich nach 38000 Sekunden inaktivität
 
Das heißt für mein Admin-Menü, in dem nur ich mich bewege, benötige ich also keine Session-ID wenn ich das richtig verstanden habe?

MfG Icy
 
SESSIONEN ???? SESSIONS wenn dann bitte....
Das heißt für mein Admin-Menü, in dem nur ich mich bewege, benötige ich also keine Session-ID wenn ich das richtig verstanden habe?

Nein du brauchst auch eine, jede Session die du startest hat eine ID, sonst würde der Bezug zwischen Besucher und Daten verloren gehen.
Allerdings brauchst du diese ID nicht in der URL übergeben solange du deine COOKIES nicht deaktivierst.
 
Alles klar, nun habe ich es verstanden!
Ich bedanke mich für eure schnelle und ausführliche Hilfe :-)

MfG Icy
 
speicher den benutzernamen des admins in einer session und das md5 codierte passwort und überprüfe es bei jedem aufruf ....

so würde ich es machen ....
 
Mach es nach dem Prinzip, wie es alle machen.
Und das ist so, wie es Frank scho sagte.

Ne DB machen, PW und Namen reinschreiben, PW mit der Checksumme md5() eintragen, und dann prüfen, und wenns stimmt, einloggen lassen und Session setzen.



MfG, matibaski
 
Naja also da ich das Script allein nutze, hab ich das PW direkt in die Datei eingetragen und nicht in eine DB gepackt :)

MfG Icy
 
und? dann lässte den DB-teil weg. trotzdem musste so verfahren, wie matibaski das schon angedeutet hat.

Nils aka XraYSoLo
 
Und um den Satz von XraY in Code umzuwandeln, dann so:
In der Datei passwort.php steht ne Variable, namens Passwort, oder egal wie auch immer. Wir verwenden hier halt $passwort.

So sieht die Datei mit PW aus:
PHP:
<?php
$passwort = "passwort";
?>
Nun die index.php, auf der man sich einloggt:
PHP:
<form method="post" action="login.php">
 Passwort:<br />
 <input type="password" name="passwort" value="" /><br />
 <br />
 <input type="submit" name="login" value="Login" />
</form>
So.. Ganz einfach.

Nun die login.php, auf der gecheckt wird:
PHP:
<?php
session_start(); // Immer session_start am Anfang!!!
include "config.php"; // Auf dieser Datei ist das Passwort

if(!isset($_POST['login'])) // Wenn nichts mit dem Formular gesendet wurde,
{
 header("Location: index.php"); // Auf die Loginseite weiterleiten
}
elseif($_POST['password'] !== $passwort) // Wenn doch was geschickt wurde, checken ob das Passwort nicht stimmt, um Meldung auszugeben
{
 // Also wenn es nicht stimmt, Meldung ausgeben:
 die("Das eingegebene Paswort ist falsch");
}
elseif($_POST['passwort'] == $passwort) // Wenn das Passwort doch stimmt
{
 $_SESSION['login'] = 'true'; // Session setzen
 echo "Das eingegebene Passwort ist richtig<br />Bitte <a href=\"admin.php\">hier</a> klicken, um in dern Adminbereich zu kommen";
}
?>
So...
Nun haben wir alles für die Überprüfung.
Wenn jemand oben login.php eingibt, dann wird er sofort auf index.php weitergeleitet.

Nun die admin.php, in der der geschützte Inhalt kommt:
PHP:
<?php
session_start(); // Wieder Session starten
// Nun prüfen ob die Session gültig oder vorhanden ist
if($_SESSION['login'] !== 'true')
{
 die("Ungültige Session"); // Wenn sie nicht = true ist, dann Meldung ausgeben
}
else // Wenn sie true ist, dann kann der Inhalt ruhig kommen
{
 echo "Geschützter Inhalt";
}
?>
So, das wars.
Wenn jemand admin.php oben ins URL-Feld gibt, dann kommt ne Meldung.

Und nun, zum ausloggen.
Man kann beim geschützten Inhalt einen Link machen, zur logout.php
In dieser steht folgendes:
PHP:
<?php
session_start(); // Muss man machen!
// Und dann nur Session zerstören:
session_destroy();
?>
Eine alternative wäre:
PHP:
<?php
session_start();
unset($_SESSION['login']);
?>
So würde man nur die Session 'login' zerstören.


Nun muss man nur noch was grafisches und so reinhauen, und fertig.



MfG, matibaski
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben