Session starten ?
Andreas
- php
0 Sönke Tesch0 Andreas
Hallo,
kann ich eine Variable "passwort" nach dem bestätigen eine gültigkeit zuweisen.
Ich überprüfe gleich am Anfang des Script das PW, stimmt es wird durch if die Seite angezeigt.
Nun habe ich aber mehrere Formulare innerhalb der PW-Abfrage und wenn ich auf den Button bestätige komme ich wieder zu Passwortabfrage zurück.
Man kann das doch sicher mit einer Session verhindern!?
So das die Variable "passwort" solang gülig ist bis die Seite geschlossen wird.
Wie starte ich eine Session und weise der den Wert zu?
Andreas
Wie starte ich eine Session und weise der den Wert zu?
Du hast die PHP-Anleitung gelesen, Kapitel Sessions (http://www.php.net/manual/de/ref.session.php)? Nein? Das solltest Du aber, denn man wird Dich nicht Dein ganzes Leben lang an die Hand nehmen, also fang mit dem Erstmal-selber-versuchen besser gleich an.
Du hast das Kapitel doch gelesen? Dann solltest Du den Anwesenden vielleicht verraten, was genau Du nicht verstanden hast. Denn mit dem Aus-der-Nase-ziehen verhält es sich ähnlich wie mit dem An-die-Hand-nehmen.
Gruß,
soenk.e
Hallo,
ja ich habe es etwas hinbekommen!
so sehen meine ersten Zeilen aus:
<?
if(isset($passwort))
{
if($passwort == "xxx")
{
@session_start();
@session_register(passwort);
$db = mysql_connect('localhost:3306');
@mysql_select_db("filmliste",$db);
Nur wenn ich jetzt einen Formularbutton anklicke komme ich wieder auf die Seite wo das PW abgefragt wird.
Wenn ich aber die Session gleich am anfang setze funktioniert es aber man dart dann kein falsches PW angeben da sonst dieses gespeichert wird.
Wie starte ich eine Session und weise der den Wert zu?
Du hast die PHP-Anleitung gelesen, Kapitel Sessions (http://www.php.net/manual/de/ref.session.php)? Nein? Das solltest Du aber, denn man wird Dich nicht Dein ganzes Leben lang an die Hand nehmen, also fang mit dem Erstmal-selber-versuchen besser gleich an.
Du hast das Kapitel doch gelesen? Dann solltest Du den Anwesenden vielleicht verraten, was genau Du nicht verstanden hast. Denn mit dem Aus-der-Nase-ziehen verhält es sich ähnlich wie mit dem An-die-Hand-nehmen.Gruß,
soenk.e
so sehen meine ersten Zeilen aus:
<?if(isset($passwort))
{
if($passwort == "xxx")
{
@session_start();
@session_register(passwort);
Der Einsatz von @ ist extrem unklug, da Du damit sämtliche Fehlermeldungen in's Nirvana schickst. Wie denkst Du, wirst Du ohne diese wertvollen Hilfen auf Fehler in Deinem Skript hingewiesen werden können?
Du solltest statt der @-Unterdrückung die Fehlermeldungen besser in der error_log ablegen lassen.
$db = mysql_connect('localhost:3306');
@mysql_select_db("filmliste",$db);Nur wenn ich jetzt einen Formularbutton anklicke komme ich wieder auf die Seite wo das PW abgefragt wird.
Das ist nur abhängig davon, an wen das Formular mit dem action-Attribut verschickt wird und was diese Seite macht.
Wenn ich aber die Session gleich am anfang setze funktioniert es aber man dart dann kein falsches PW angeben da sonst dieses gespeichert wird.
Du solltest den Anmeldevorgang etwas auseinanderklamüstern:
1. Formular mit einem <input>-Feld, in dem das Passwort eingegeben werden wird.
2. Formular wurde abgeschickt. Jetzt mußt Du in der empfangenden Seite prüfen, ob ein Passwort in dem Formular eingeben wurde. Mit isset($passwort) kommst Du da nicht weit, weil diese Funktionsweise nur noch bei hoffnungslos veralteten PHP-Versionen vorkommt und Du außerdem mit Deiner Sessionvariable $passwort in die Quere kommst (wie Du ja bemerkt hast).
Formulardaten kommen in einem Feld namens $_POST (alt, vor PHP 4.1.0: $HTTP_POST_VARS), der Inhalt von <input name="passwort"> erscheint also in $_POST["passwort"]. Prüfe als erstes, ob dieses Feld gesetzt ist und wenn ja, ob es richtig ist. Ist es falsch, gehe zurück zu Punkt 1, zeige das Passwortformular an und lösche sicherheitshalber eine möglicherweise existierende Session mit session_destroy(). Ist das Passwort richtig, speichere vielleicht sinnvollerweise nicht das Passwort selber, sondern eine einfache Boolsche Variabe, zum Beispiel $logged_in, die Du auf true setzt.
Ist das Feld $_POST["passwort"] _nicht_ gesetzt (Achtung: weder falsch noch richtig, sondern nicht gesetzt), prüfe, ob stattdessen $logged_in gesetzt ist. Falls ja, hat sich der Benutzer bereits angemeldet, falls nein, gehe wiederum zurück zu Punkt 1.
Damit Dir die Sessionvariablen ebenfalls nicht in die Quere schießen, solltest Du statt session_register() die Session-Variablen in dem Feld $_SESSION (alt: $HTTP_SESSION_VARS) setzen: $_SESSION["logged_in"] statt session_register($logged_in); .
Gruß,
soenk.e