Frage(n) zu Cookies & Sessions

Oben:
PHP:
if (isset($_POST['test']) AND $_POST['test'] == 1)
Über dem Formular:
PHP:
if (!isset($_POST['test']))
Und zum Schluss für Dein echo():
PHP:
echo "test hat folgenden Wert :".(isset($_POST['test'])?$_POST['test']:'nix')."<br>";
Habe ich jetzt aber nicht getestet.
 
Danke an den Doc.
Hat gefunzt.

Jetzt nochmal ne andere Frage. Ich habe es so gemacht, das die Session startet, wenn der Login erfolgreich war.
Habe vorher den Anmeldename, das Passwort und die NutzerID in $_SESSION gespeichert.
Nach session_start () ist das Array allerdings leer.
Das will mir vielleicht auch noch einleuchten, da das Array wahrscheinlich gelöscht wird, damit keine alten Reste drinstehen.
Jetzt habe ich allerdings nur die SessionID. Damit könnte ich ja prüfen, ob jemand berechtigt ist die Seite zu sehen, die er aufruft.
Nur wie übergebe ich Variablen an das Array Session, damit diese dann z.B. bei MySQL-Querys nutzen kann ?
Muss ich nun erneut eine Verbindung zur DB aufbauen, die Daten, die ich brauche auslesen und dann in $_SESSION speichern?
Wie sieht so ne Prüfung nach der SessionID aus?
PHP:
<?php if (SID == $_COOKIE['PHPSESSID']) { berechtigt }?>
Ansonsten habe ich den Sinn und Zweck, dieser Sessions, wohl noch nicht verstanden.
 
Wenn Du die NutzerID zuvor schon aus der Datenbank abgefragt hast, brauchst Du sie nurnoch mit der entsprechenden Variable aus der Session vergleichen.
Z.b. so:
PHP:
<?php
if($_SESSION['NutzerID'] == $row['NutzerID']) {
     echo "Du bist eingelogt.";
} else {
     echo "Du bist nicht eingelogt.";
}
?>
 
Wie gesagt, dass habe ich bereits gemacht, als ich den Anmeldenamen und das Passwort aus der DB geholt habe.
Danach kommt die Prüfung ob die beiden Sachen in Ordnung sind und dann erst der Sessionstart.
Ist es überhaupt nötig den Sessionstart vom Login abhängig zu machen?
 
illuminatus26 hat gesagt.:
Ist es überhaupt nötig den Sessionstart vom Login abhängig zu machen?
Ob es nötig ist weiss ich nicht.
Die NutzerID ist ja erst nach dem Login bekannt..... und kann somit natürlich auch erst nach dem Login in die Session geschrieben werden.
Also wozu die Session schon starten bevor man sich einlogt?! ;)

Bei einem Online-Shop könnte die Sache schon wieder anders aussehen.
Z.b. um vor dem Login den Warenkorb zu füllen.
Oder um z.b. Links zu bereits betrachteten Waren einzublenden (so wie es z.b. bei conrad.de der Fall ist).

Nochmal zum Problem:
Du logst Dich ein, dann werden die Daten aus dem Loginformular mit denen aus der Datenbank verglichen.
PHP:
if($_POST['anmeldename'] == $row['anmeldename'] AND $_POST['passwort'] == $row['passwort']) {
Wenn dieses erfolgreich war, wird die Session mit session_start() gestartet.
Anschliessend wird die NutzerID aus der Datenbank in die Session geschrieben.
PHP:
session_start();
$_SESSION['NutzerID'] = $row['NutzerID'];
Und falls der Anmeldename und/oder das Passwort falsch war, kannst Du auf z.b. die login.php umleiten.
PHP:
} else {
     header("Location: login.php");
}
Nun steht die NutzerID beim erfolgreichen Login in der Session und Du kannst überall wo Du die NutzerID brauchst mit $_SESSION['NutzerID'] darauf zugreifen.
PHP:
if(!empty($_SESSION['NutzerID']) {
     echo "Hallo ".$row['anmeldename']."!";
} else {
     header("Location: login.php");
}
 
illuminatus26 hat gesagt.:
Ist es überhaupt nötig den Sessionstart vom Login abhängig zu machen?
Nein. Man weiss ja eh nicht ob der User eingeloggt ist bis die Session gestartet wird.
Auf meiner Website laufen alle Scripts zweigleisig, wenn man nicht eingeloggt ist (oder als normaler User) sieht man ganz normal die Ausgabe, als Admin eben die Verwaltungsseite (damit der Admin dann den Content sehen kann gibt's einen zusaetzlichen Parameter). Und da bei mir alles ueber index.php laeuft und der Rest includet wird starte ich grundsaetzlich eine Session.
Das nutze ich z.B. auch dafuer um festzustellen ob der User JavaScript oder Cookies aktiviert hat, das wird dann in der Datenbank zusammen mit der SessionID festgehalten. So kann ich dann z.B. ueber JavaScript realisierte Extras (wie z.B. Buttons zur Formatierung von Posts) anbieten, halt vorausgesetzt JS ist aktiv.
Hier auf der Arbeit nutze ich das zusaetzlich noch dazu um festzustellen wie viele User gerade auf der Seite sind. Falls ein User sich einloggt wird dies auch in dieser Tabelle zur SessionID geschrieben und ich kann auch noch unterscheiden wie viele eingeloggte User online sind und wie viele nicht eingeloggt sind.

Also, lange Rede kurzer Sinn: session_start() ist einer der ersten Befehle der in meinem Script ausgefuehrt wird, und das eben immer.
 
Klar, es kommt natürlich darauf an, wofür die Session verwendet wird.
Aber wenn die Session nicht gebraucht wird, halte ich es auch für überflüssig sie zu starten. ;)
 
Sauber Jungs........
Jetzt bin ich auch nicht schlauer......
:-) :-) :-)

Vielleicht zähle ich nochmal kurz auf, was ich habe und sage nochmal, was ich gerne hätte und wie ich es mir vorgestellt habe.
Also habe in meiner DB eine Tabelle, welche Nutzername, Passwort und die NutzerID enthält.
Dann prüft mein Loginskript, ob die Eingabe mit den Werten aus der DB übereinstimmt.
Das ist der jetzige Stand der Dinge.

Jetzt muss ich mir ja noch überlegen, wie ich prüfe, ob der User berechtigt ist bestimmt Inhalte zu sehen. Es soll ja möglichst sicher sein.
Also habe ich mir überlegt, die Session nach erfolgreichem Login zu starten.
Daraufhin, speicher ich die SessionID in einer Tabellle und mache auf der zu schützenden Seite eine Abfrage, ob die SessionID aus der DB mit der im Cookie übereinstimmt.
Ist dies der Fall, darf der Nutzer die geschützen Inhalte sehen.
Ist das eine Vorgehensweise die sinnvoll ist?
Ist das sicher genug?
 
Um zu bestimmen wer welche Inhalte sehen darf hab ich bei mir Userlevel eingefuehrt. Also im Grunde numerische Gruppen. Wer den Userlevel 255 hat ist Admin, Userlevel 1 entspricht normalen Usern. Dazwischen hab ich bisher nichts, aber halt genug Platz fuer weitere Stufen. ;)
 
Sowas hatte ich auch noch vor, da ich ein paar Freunden die Möglichkeit geben wollte, die Seite, in bestimmten Bereichen dann auch mit Inhalt zu füllen.

Aber ich würde gerne nochmal auf die SessionID zurückkommen.
Ich versteh, glaub ich, immer noch nicht so ganz, wofür die da ist.
Also der User hat sie in Form eines Cookies auf seinem Rechner.
Aber wie identifiziere ich den User nun anhand der SessionID ?

Wenn ich nun seine NutzerID im Array $_SESSION speicher, um personalisierte Sachen aus der DB zu holen, was passiert, wenn ein 2. User online kommt und sich ebenfalls einloggt?
Gibt es dann für jede Session ein seperates Array mit der jeweiligen NutzerID, oder überschreibt die NuzterID des 2. Logins die der 1.?
 
Zurück