variable weitergeben (login -> logout)

Alles, was PHP betrifft, kann hier besprochen werden.

variable weitergeben (login -> logout)

Postby aeroflex » 11. April 2006 09:11

Hallo,
bin recht am anfang meines wissens von php und versuche mich gerade an einem login

dieser klappt, jedoch ändert sich nach dem einloggen die navigation nicht mit. ich habe schon die bedingungen einzeln-und andersgeschrieben usw ausprobiert
(die nav richtet sich nach der var $s = session_id(), die beim loginvorgang gesetzt wird und per link b=$s weitergegeben wird)

dies steht in der index.php:
if (isset($_GET['b']) == '1') {
..... if ($_GET['b'] == 'session_id()') {
.......... if ($_GET['b'] != '') {
............... if ($_GET['b'] != '0') {
............... include "nav2.php";
............... echo $b;
............... }
............... else {
............... include "nav1.php";
............... echo "teil 4";
............... echo $b;
............... }
.......... }
.......... else {
.......... include "nav1.php";
.......... echo "teil 3";
.......... echo $b;
.......... }
..... }
..... else {
..... include "nav1.php";
..... echo "teil 2";
..... echo $b;
..... }
}
else {
include "nav1.php";
echo "teil 1";
echo $b;
}

bei echo $b spuckt er nichts aus...
wenn ich nicht eingeloggt bin, kommt 'teil1' raus <- richtig
wenn ich mich einlogge, kommt 'teil2' raus <- falsch

außerdem: es steht (ob eingeloggt oder nicht) immer Notice: Undefined variable: b....

dennoch steht in der url b=*die session_id() ausgeschrieben* nach dem einloggen
aeroflex
 
Posts: 8
Joined: 09. February 2006 19:37

Postby gfaust » 12. April 2006 21:11

1.) $b = $_GET['b'] fehlt
2.) session_id gibt nicht an, ob jemand eingeloggt ist.
=> selber nach dem einloggen Variable in der Session setzen, z.B.:
$_SESSION['loggedIn'] = true

Guido
gfaust
 
Posts: 41
Joined: 06. December 2005 18:31

Postby aeroflex » 13. April 2006 09:41

hab die login datei mit dem befehl erweitert:

Code: Select all
      session_start();
      $s = session_id();
      $_SESSION['loggedin'] = 'true'; 
      mysql_query("UPDATE member SET session='$s' WHERE id = '$userid';", $db_link) OR die(mysql_error());
      echo "<center>";
      echo "<br><br><br>";
      echo "<a href= '../index.php?a=logout&b=$s'>Willkommen im Adminbereich! Klicken Sie hier um fortzufahren!</a>";
echo "</center>";


und die navigationsabfrage ebenfalls:

Code: Select all
if (isset($_GET['b']) == '1') {
   .....if (isset($_SESSION['loggedin'])) {
       ..........if ($_SESSION['loggedin'] == 'true') {
          ...............if ($_GET['b'] != '') {
             ....................if ($_GET['b'] != '0') { ...


dennoch, wenn ich mich einlogge, bleibt er bei der zweiten bedingung hängen
aeroflex
 
Posts: 8
Joined: 09. February 2006 19:37

Postby gfaust » 13. April 2006 18:53

Hallo,

beim ausloggen muss natürlich

$_SESSION['loggedin'] = false

gesetzt werden, oder ein

unset( $_SESSION['loggedin'] )

woher soll er denn sonst wissen, dass sich der User ausgeloggt hat?

Guido

P.S.: Eine weitere Möglichkeit wäre, beim ausloggen die Session explizit zu beenden (s. PHP-Referenz).
gfaust
 
Posts: 41
Joined: 06. December 2005 18:31

Postby aeroflex » 13. April 2006 20:49

das mit dem ausloggen habe ich so geregelt, obwohl ich ja da noch nicht war ;)
(btw: da sind auch probs mit den variable b o_O)
Code: Select all
<?

if ($_GET['a'] == 'logout2' AND $_GET['b'] != 0 AND $_GET['b'] != '') {
   mysql_query("UPDATE member SET session='' WHERE session = '$s';", $db_link) OR die(mysql_error());
   session_destroy();
   echo "<center>\n";
   echo "<a href= '../index.php?a=login&b=$s'>Sie haben sich ausgeloggt! Klicken Sie hier um fortzufahren!</a>\n";
   echo "</center>\n";
   }
else {echo "konnten nicht ausgeloggt werden";}

?>

aber es ging erstmal um *isset($_SESSION['loggedin'])*, dass es nicht anerkannt wird, dass diese var überhaupt gesetzt ist, obwohl es beim einloggen passiert sein sollte durch *$_SESSION['loggedin'] = true;*

die dritte bedingung soll ja sein, ob $_SESSION['loggedin'] dem wert true entspricht
aeroflex
 
Posts: 8
Joined: 09. February 2006 19:37

Postby gfaust » 14. April 2006 19:36

Hallo,

in der PHP-Referenz gibt es mehrere Bemerkungen, dass isset() nicht immer korrekt funktioniert.

Eine weitere Möglichkeit wäre mit !empty() statt isset() zu arbeiten.

Guido
gfaust
 
Posts: 41
Joined: 06. December 2005 18:31


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests