php + session + probs

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

  • php + session + probs

    hi leutz


    hab nen portal gecodet. sicherlich der blanke horrorquellcode für dich. aber es lööft ABER ich hab nen fehler. ich arbeite mit sessions und das glaub ich will nicht so richtig.

    also.
    PHP-Code:
                       @session_start();
                       
    session_register("kuserid","sidname","sidsid","mod");

                       
    $sidnamesession_name();
                       
    $sidsidsession_id(); 
    so starte ich meine session und register die. in $kuserid les ich die userid des users der sich eingeloggt hat aus der db aus und speicher sie in $kuserid. diese sollte nun in der session sein.

    auf den anderen seiten gehts immer am start so los:

    PHP-Code:
                       @session_start(); 
    dann greife ich auf die $kuserid zu und hol mir die userid die ich zum arbeiten und auslesen der db brauche.

    doch es passiert das er ab und zu die daten verliert. der hat auf einmal keine sessionid mehr und keine userid. da zerhaut mir mein ganzes projekt.

    vor allem weil ich beim einloggen den user in eine tabelle "online" eintragen lasse. bei jedem aufruf wird geprüft ob der user noch online ist. wenn nicht updaten der onlinezeit. und danach werden alle user gelöscht die 5min nicht aktiv waren also wo sich die onlinezeit nicht verändert hat.

    eintragen:

    PHP-Code:
                       $sql3="INSERT INTO kabuzo_online (kuserid,nick,age,geschlecht,zeit) VALUES ('$kuserid','$nick','$alter','$geschl',NOW(''))";
                       
    mysql_query($sql3); 
    updaten:

    PHP-Code:
            $sqloff3="UPDATE kabuzo_online SET zeit=(NOW('')) WHERE kuserid='$kuserid'";
            
    mysql_query($sqloff3); 
    löschen:

    PHP-Code:
          $sqloff4="DELETE FROM kabuzo_online WHERE zeit < DATE_SUB(NOW(), INTERVAL '0 0:5:0' DAY_SECOND)";
          
    mysql_query($sqloff4); 

    also in der tabelle useronline stehen die $kuserid, nick, geschlecht, alter und die onlinezeit. doch wenn er mitten im script die session verliert weiß er auc nicht mehr die $kuserid des user. kann deshalb keinen update vornehmen weil in der tabelle "online" die kuserid nicht zu finden ist und trägt deshlab einen neuen user ein.

    und das soll nicht sein!!!

    normal siehts so aus:

    m26 Madison << das lass ich in einer box anzeigen (alle user die in der onlinetabelle sind untereinander)

    und wenn er die session daten verliert steht dann...

    m25 user
    w23 userin
    m2006 << da is der fehler

    der user ist aufeinmal identitäslos und kann nix mehr machen, keine userid mehr da, da er plötzlich m2006 is und die sessionid is auch weg.

    ich geh kaputt. weiß net mehr weiter. was mach ich falsch?


    bei jedemseitenaufbau wird die check.php included die guckt ob der user noch online ist, das update macht, enu einträgt oder die suer die 5min idlen rauslöscht.


    PHP-Code:
    <?php
    @session_start();

          
    $treffer=0;

          
    //gucken ob der user in der online liste ist
          
    $sqlsuche="SELECT kuserid FROM kabuzo_online";
          
    $result mysql_query($sqlsuche);
          
    $anz mysql_num_rows($result);

          for(
    $i=0$i  $anz$i++)
                  {
                  
    $nick1=mysql_result($result,$i,"kuserid");
                  if (
    $nick1 == $kuserid)
                    {
                    
    $treffer=1;
                    }
                  }

          
    //wenn er in online liste die zeit hochsetzen
          
    if ($treffer == 1)
           {
            
    $sqloff3="UPDATE kabuzo_online SET zeit=(NOW('')) WHERE kuserid='$kuserid'";
            
    mysql_query($sqloff3);
           }

           
    //erst er nicht mehr drin weil er zu lange geidelt hat dann wieder eintragen
           
    if ($treffer == 0)
              {
                    
    $sql1="SELECT pass,user_ID,aktiv,nick,geschl,tag,monat,jahr FROM kabuzo_user WHERE user_ID='$kuserid'";
                    
    $result mysql_query($sql1);
                    
    $pass mysql_fetch_array($result);

                    
    //in onlinetabelle eintragen

                    //geburtsdatum ermitteln
                    
    $int_day $pass[5];
                    
    $int_month $pass[6];
                    
    $int_year $pass[7];

                    
    //aktuelles datum ermitteln
                    
    $now_year=date("Y");
                    
    $now_month=date("n");
                    
    $now_day=date("d");
                    
                    
    $age $now_year $int_year;
                    
                    if((
    $now_month == $int_month AND $now_day $int_day) OR $now_month $int_month$age--;

                    
    $alter $age;
                    
    $nick $pass[3];
                    
    $geschl $pass[4];

                    
    $sql3="INSERT INTO kabuzo_online (kuserid,nick,age,geschlecht,zeit) VALUES ('$kuserid','$nick','$alter','$geschl',NOW(''))";
                    
    mysql_query($sql3);
           }
           
           
           
          
    //alle user die 5min nichts gemacht haben austragen aus der onlineliste
          
    $sqloff4="DELETE FROM kabuzo_online WHERE zeit < DATE_SUB(NOW(), INTERVAL '0 0:5:0' DAY_SECOND)";
          
    mysql_query($sqloff4);

    ?>
    is daran was falsch? oder register ich die session schon falsch?

    wei nimmer weiter wieso der immer die daten verliert die doch in den session registered sind. oder andere lösung nehmen?

  • #2
    session_register ist veraltet, nimm $_SESSION.
    mfg - sagg

    Kommentar


    • #3
      das hilft mir nicht wirklich weiter bei meinem problem.

      und sagg

      ich komm ganz aus deiner nähe. so klein ist die welt. mfg aus marienberg =)

      Kommentar


      • #4
        Bitte Code umbrechen!
        http://www.php-resource.de/forum/sho...threadid=50454
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          -- sorry war fehlbedienung --
          Zuletzt geändert von globqluqqlo; 13.03.2006, 15:48.

          Kommentar

          Lädt...
          X