Login-Script mit Fehlern
rafi
- php
Hallo,
ich schreibe das hier weil ich leider ein Problem hab. Ich möchte meine Seite per Browser konfigurieren usw - und das funktioniert coolerweise super, nur ist das ganze zu unsicher, weil kein Login stattfindet.
Mit Cookies habe ich das hinbekommen, aber ich möchte das lieber mit session-id's machen.
Also natürlich funktioniert das nicht so, wie ich es mir wünschen würde. Wäre echt super wenn mir jemand helfen könnte.
Ich habs übrigens an diese Anleitung hier anglehnt:
http://forum.de.selfhtml.org/archiv/2002/12/t32454/
Das Problem detailliert:
Anmelden funktioniert, nur speichert er dann weiter die Variable $logged_in nicht, und deshalb muss ich mich wenn ich die URL direkt nach eingabe neu aufrufe, wieder neu anmelden.
Vermutlich klappts mit den sess-id's nicht - aber was mache ich da falsch?
Schöne Grüsse
rafi
Der Code:
------------------------
<?php
$adminpasswort='test';
$passwortabfrage='Bitte gebe das Passwort ein: <form name="form2" method="post" action="'.$PHP_SELF.'">
<input type="password" name="passwort">
<input type="submit" name="Submit" value="Senden">
</form>';
$eingeloggt='du bist angemeldet <a href="'.$PHP_SELF.'" target="_top">neu laden</a>';
if(isset($_POST["passwort"]) && ($_POST["passwort"]=$adminpasswort)){
echo $eingeloggt.'2';
$logged_in = true;
$_SESSION["logged_in"];
}
elseif(($_POST["passwort"]="") && (isset($logged_in))){
echo $eingeloggt;
}
else {
die(print $passwortabfrage);
}
?>
Moin!
Mit Cookies habe ich das hinbekommen, aber ich möchte das lieber mit session-id's machen.
Da ist kein Unterschied. Sessions benutzen Cookies. Der Unterschied besteht darin, wo u.U. sensitive Werte gespeichert werden. Wenn man durch Einloggen aber sowieso die ganze Seite ändern kann, dürfte das weniger ein Problem sein.
Das Problem detailliert:
Anmelden funktioniert, nur speichert er dann weiter die Variable $logged_in nicht, und deshalb muss ich mich wenn ich die URL direkt nach eingabe neu aufrufe, wieder neu anmelden.
Wo wird denn die Session gestartet? Nirgendwo. Also funktioniert es nicht.
- Sven Rautenberg
Hallo rafi,
if(isset($_POST["passwort"]) && ($_POST["passwort"]=$adminpasswort)){
das ist wohl ein Fall für https://forum.selfhtml.org/?t=88857&m=530014 :-)
$logged_in = true;
$_SESSION["logged_in"];
mal abgesehen dass du - wie Sven schon schrieb - die Session überhaupt nicht startest, speicherst du hier auch nichts im Array $_SESSION, dafür müsstest du dem Array-Element den Wert schon zuweisen.
elseif(($_POST["passwort"]="") && (isset($logged_in))){
da bei dir register_globals auf on steht (sonst würde $PHP_SELF nicht funktionieren) und die Zuweisung $_POST["passwort"]="" vermutlich immer wahr ist, kann man sich durch anhängen von ?logged_in=1 an die Adresse einlogen. Du musst prüfen ob $_SESSION['logged_in'] gesetzt ist (warum $_POST['passwort'] leer sein muss, versteh ich allerdings nicht so ganz ...), außerdem solltest du register_globals auf off setzen ($PHP_SELF wird zu $_SERVER['PHP_SELF']).
Grüße aus Nürnberg
Tobias