[PHP] - Sessionabfrage will nicht...



  • Hi Zusammen!

    Eigentlich hatte ich vor, dass wen 'username' registriert, also sich vorher eingeloggt, ist, dass dann im Menu LOGOUT, angezeigt wird, ansonsten Login!

    <?php
    if(!session_is_registered('username'))
    
    echo "<br><a href=\"log_in.php\">Login</a>";                              
    else
    
    echo "<br><a href=\"logout.php\">Logout</A>";
    ?>
    

    nun, in der log_in.php kann man sich einloggen! GEHT WUNDERBAR! Ich komme so auf jede Seite wo es logins braucht, da ich eingeloggt bin!
    Doch im menu wird immer nur Login angezeigt, AUCH wenn ich EINGELOGGT bin... komisch!
    Gibts da noch eine Lösung oder ist das gar nicht möglich?? 😕

    mfg
    Pro 🕶



  • Hmmmm... ich kenne session_is_registered() gar nicht. Könntest auch 'ne Variable in der Session anlegen und falls diese vorhanden ist, dann machst du echo "logout" und wenn sie nicht angelegt ist machst du echo "login"
    Wäre 'ne Möglichkeit, aba da gibts unter Garantie was besseres 😉
    MfG

    Tobsen



  • Original erstellt von Tobsen:
    **
    Wäre 'ne Möglichkeit, aba da gibts unter Garantie was besseres 😉
    MfG

    Tobsen**

    du sagst es... die variable is username... ausschnitt der login.php:

    <?php
    session_start();
    session_register("username");
    ?>
    
    <?
    include ("config.php");
    
    $password=crypt($password,$schluessel);
    $password .= "\n";
    $log=0;
    
    $userdatei = fopen ("member_log_pwd.txt","r"); //In dieser "u_pass.txt" werden alle Userdaten gespeichert!
    //Damit nicht jeder die Passwörter auslesen kann, sind sie verschlüsselt!
    while (!feof($userdatei))
    {
    $zeile = fgets($userdatei,50);
    $userdata = explode("|", $zeile);
    if ($userdata[0]==$user
    
    .......
    ...
    


  • <?php

    if(login_erfolgreich == true)
    {
    session_start();
    $_SESSION['username'] = $username;
    }

    if(empty(\_SESSION['username']) || !isset(_SESSION['username'])
    {
    echo "login";
    }
    else
    {
    echo "logout";
    }
    ?>



  • ok. thx, habe jetzt

    <?php
                                    if(empty($_SESSION['username']) || !isset($_SESSION['username']))
                                    {
                                    echo "<br><a href=\"log_in.php\">Login</a>";
                                    }
                                    else
                                    {
                                    echo "<br><a href=\"logout.php\">Logout</A>";
                                    }
                                    ?>
    

    und in der Login.php

    <?php
    session_start();
    session_register("username");
    $_SESSION['username'] = $username;
    ?>
    

    keine Ahnung, aber es will immer noch net klappen... ... komisch! wirlich komisch.. 😃 Oder bin ich zu blöd??? 😃



  • session_register() kannste schon mal weglassen. Und wenn usernameleerist,wirdimmerloginangezeigt,dajadannempty(username leer ist, wird immer login angezeigt, da ja dann empty(_SESSION['username']) true ist.



  • okay.. warte..
    Hier mal den ganzen code der Login.php

    <?php
    session_start();
    session_register("username");
    $_SESSION['username'] = $username;
    ?>
    
    <?
    include ("config.php");
    
    $password=crypt($password,$schluessel);
    $password .= "\n";
    $log=0;
    
    $userdatei = fopen ("member_log_pwd.txt","r"); //In dieser "u_pass.txt" werden alle Userdaten gespeichert!
    //Damit nicht jeder die Passwörter auslesen kann, sind sie verschlüsselt!
    while (!feof($userdatei))
    {
    $zeile = fgets($userdatei,50);
    $userdata = explode("|", $zeile);
    if ($userdata[0]==$username && $userdata[1]==$password)
    {
    $log=1;
    }
    }
    fclose($userdatei);
    if ($log==1)
    {
    ?>
    
    <br><br><br><br><br><br><hR><center><b>Login erfolgreich!</b> Bitte klicke <a href="index.php">hier</a></center><hr>
    <?
    }
    else
    {
    die ("Benutzername oder Passwort falsch!<hr><a href=\"log_in.php\">Erneut versuchen</a>");
    }
    ?>
    

    Könnte es sein, dass ich _SESSION['username']=username zu früh gesetzt habe?



  • Also ich sehe da mehrere Fehler:

    1. if (userdata[0]==username && userdata[1]==password)
    - da scheint $username leer zu sein. (sehe jedenfalls nicht wo du es definierst!?

    2. session_register() kannst du echt einfach weglassen

    3. Du sollst $_SESSION['username'] = $username erst dann der session zuweisen, wenn der login erfolgreich war.

    Also z.B. if(login == erfolgreich)
    {
    weise session die variable username zu -> $_SESSION['username'] = $username;
    }

    sonst ist die bedingung ja immer true!
    so das wars nach erstem überfliegen. 😉

    Falls es immer noch nicht klappt, schreib nochmal!
    MfG

    Tobsen



  • also.

    1. FEHLER SIND ES KEINE!
    a) Denn der Login klappt auch sonst IMMER wunderbar!
    b) Der Bezug kommt aus dem Formular <input type="text" name=username....
    c) das Forumar verweist auf <form action="member_login.php" method=....

    2. Eben dorthin, wo der COder der login.php ist...
    a) Hab _SESSION['username']=username; nach IF gesetzt...
    b) Funktioneirt leider immer noch nicht
    c) 😕 😕

    Mfg
    Pro



  • 1. ok, tschuldigung! 😉
    2. schick nochmal den code so wie du ihn jetzt hast, dann schau ich mir das nochmal offline an.
    MfG

    Tobsen



  • <?php
       session_start();
    ?>
    
    <?
    include ("config.php"); 
    
    $password=crypt($password,$schluessel);
    $password .= "\n";
    $log=0;
    
    $userdatei = fopen ("member_log_pwd.txt","r"); //In dieser "u_pass.txt" werden alle Userdaten gespeichert!
    //Damit nicht jeder die Passwörter auslesen kann, sind sie verschlüsselt!
    while (!feof($userdatei))
    {
      $zeile = fgets($userdatei,50);
      $userdata = explode("|", $zeile);
      if ($userdata[0]==$username && $userdata[1]==$password)
      {
        $_SESSION['username'] = $username;   
        $log=1;  
      }
    }
       fclose($userdatei);
    if ($log==1)
    {
      echo "<br><br><br><br><br><br><hR><center><b>Login erfolgreich!</b> Bitte klicke <a  href='index.php'>hier</a></center><hr>";
    }
    else
    {
       die ("Benutzername oder Passwort falsch!<hr><a href=\"log_in.php\">Erneut versuchen</a>");
    }
    ?>
    
    //Dann in der index.php folgendermaßen anfangen:
    
    <? session_start();
       if(empty($_SESSION['username']) || !isset($_SESSION['username']))
       {
        echo "Login";
       }
       else
       {
        echo "Logout";
       }
    ?>
    

    [ Dieser Beitrag wurde am 01.05.2003 um 13:33 Uhr von Tobsen editiert. ]



  • Ok. Vielen Dank!
    Klappt so! 😃


Anmelden zum Antworten