Probleme mit sessions

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit sessions

    Hallo, also ich dachte eigentlich das ich das mit den sessions hinbekommen hatte, doch heute schau ich einfach mal in meine db, als ich eingeloggt war und sehe da das in der db gar keine sess-id steht...ist das normal, oder hab ich da was falsch gemacht?

    also so sieht das bei mir aus...

    loginn.php(wo man sich einloggn kann):

    PHP-Code:
    <?php include 'check.php'?>
    <?php 
    include 'sessionhelpers.inc.php'
    if (isset(
    $_POST['login'])) 

        
    $userid=check_user($_POST['username'], $_POST['userpass']); 
        if (
    $userid!=false) {
            
    login($userid); 
            
        
    $sqlt="UPDATE layer_daten SET LetzterLogin='".date("Y-m-d H:i:s")."' WHERE id='$userid'";
        
    mysql_query($sqlt); 

            
            
            echo 
    '
            <script type="text/javascript">
            document.location.href="mstart.php"
            </script>
            '
    ;}
        else 
            echo 
    'Ihre Anmeldedaten waren nicht korrekt!'

        echo 
    '<br><br><form method="post" action="login.php"> 
            <label>Benutzername:</label><input name="username" type="text"><br> 
            <label>Passwort: </label><input name="userpass" type="password" id="userpass"><br> 
            <input name="login" type="submit" id="login" value="Einloggen"> 
        </form>'
    ;
    ?>
    sessionshelpers.inc.php:

    PHP-Code:
    <? 
    include 'check.php';
    function connect() 

        $con= mysql_connect('xxx','xxx','xxx') or die(mysql_error()); 
         mysql_select_db('xxx',$con) or die(mysql_error()); 


    function check_user($name, $pass) 

        $sql="SELECT id 
        FROM layer_daten 
        WHERE nick='".$name."' AND passwort='".$pass."' 
        LIMIT 1"; 
        $result= mysql_query($sql) or die(mysql_error()); 
        $use=mysql_fetch_assoc($result);
        $user = $use ['id'];
        if ( mysql_num_rows($result)==1) 
        { 
    $aktiv = mysql_query("SELECT aktiv FROM layer_bin WHERE id='$user' LIMIT 1");
    $aktiv2 = mysql_fetch_array($aktiv);
    $aktiv3 = $aktiv2['aktiv'];

    $gesperrt = mysql_query("SELECT gesperrt FROM layer_bin WHERE id='$user' LIMIT 1");
    $gesperrt2 = mysql_fetch_array($gesperrt);
    $gesperrt3 = $gesperrt2['gesperrt'];

    $loeschen = mysql_query("SELECT loeschen FROM layer_bin WHERE id='$user' LIMIT 1");
    $loeschen2 = mysql_fetch_array($loeschen);
    $loeschen3 = $loeschen2['loeschen'];

    if ( $aktiv3 == "1" and $gesperrt3 == "0" and $loeschen3 == "0" ) {

            return $user['id']; 
        } 
        else 
            return false; 
        } 
        else 
            return false; 


    function login($userid) 

        $sql="UPDATE layer_sess 
        SET sess='".session_id()."' 
        WHERE id='".$userid."'";
         mysql_query($sql); 


    function logged_in() 

        $sql="SELECT id 
        FROM layer_sess 
        WHERE sess='".session_id()."' 
        LIMIT 1"; 
        $result= mysql_query($sql); 
          return ( mysql_num_rows($result)==1); 


    function logout() 

        $sql="UPDATE layer_sess 
        SET sess=NULL 
        WHERE sess='".session_id()."'"; 
         mysql_query($sql); 


    connect(); 
    ?>
    die logged_in.php:

    PHP-Code:

    <? 
    session_start(); 
    include 'sessionhelpers.inc.php'; 
    echo 'Sie sind '; 
    if (!logged_in()) 
        echo 'nicht '; 
    echo 'eingeloggt.<p />'; 
    echo '<a href="login.php">Start</a>'; 
    ?>
    und die logout.php

    PHP-Code:

    <?php include 'top.php'?>

    <?php

        $con
    mysql_connect('xxx','xxx','xxx') or die(mysql_error()); 
         
    mysql_select_db('xxx',$con) or die(mysql_error()); 
        
    $sql="UPDATE layer_sess 
        SET sess=NULL 
        WHERE sess='"
    .session_id()."'"
         
    mysql_query($sql); 
     
    echo 
    'Sie sind nun ausgeloggt.'
    ?>
    Also ich dachte das geht so, aber irgendwie scheint das nicht so zu laufen wie es soll, weil jetzt glaub ich das ich mich zwar einloggn kann, aber zum beispiel glaub ich kann sich kein zweiter neben mir einloggn, weil es ja gar keine sess-id in die db schreibt...sondern nur statt NULL schreibt es "nix" rein, also macht ein leeres feld :-)

    Sieht da jmd spontan den fehler?

  • #2
    Re: Probleme mit sessions

    Original geschrieben von DonCor2007
    ist das normal
    Nein, es ist nicht normal [1], ohne jegliches Debugging und jegliche Fehlerbehandlung erstaunt den Mund weit auzusperren, und "funzt nicht" zu sagen.

    "Normal" ist, die entsprechenden Debug-Schritte zu unternehmen, um zu schauen, wo das Verhalten vom gewünschten abweicht.



    [1] höchstens "newbee-normal"
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ok gut, ich versuche erstmal ein wenig was auszuschließen...

      die logout.php muss ok sein, denn s schreibt ja NULL rein, wenn man nicht eingeloggt ist...also muss es den fehler im reinschreiben haben...

      ok, also reinschreiben tut es ja auch was...zwar nix...aber das ist ja auch was, also muss der fehler im erstellen liegen...

      das währe ja hier(die check.php):

      PHP-Code:
      <?php session_id(); ?>
      aber das sehe ich eigentlich auch als richtig an, weil die session_id() ja eine neue session anlegt, wenn keine vorhanden ist...hm...

      Kommentar


      • #4
        Nanu...hab das session_id() mal mit session_start() ausgetauscht...nu schreibt es auch ne seesion id in die db...tjaja, ich muss wohl erstmal debugn lernen :-)

        Kommentar

        Lädt...
        X