Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sesje, unset?
MateuszS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


Hey. Chciałem zrobić aby wylogowywało po okreslonym czasie. Znalazlem takie cos:

  1. <?php
  2. if(!isset($_SESSION['last_trace']))
  3. {
  4.    $_SESSION['last_trace'] = $now;
  5. }
  6. elseif ((int)$_SESSION['last_trace'] + $expiryTime < $now)
  7. {
  8.    $sessionName = session_name("Sesja");    
  9.    $_SESSION = array();
  10.    if (isset($_COOKIE[$sessionName]))
  11.    {
  12.        setcookie($sessionName, '', $now-40, '/');
  13.    }
  14.        
  15.    $online_off = mysql_query("UPDATE `konta` SET `online`='0' WHERE `username`='".$uzytkownik."'") or die(mysql_error());
  16.    session_destroy();      
  17.    echo '<script language="JavaScript">window.location="index.php?opcja=logowanie";</script>';
  18. }
  19. ?>


I owszem zawsze wylogowuje po tych 40 sek...ale... nawet gdy user jest aktywny ;/ Nie chcielibyscie aby was wylogowalo podczas pisania postu lub przegladania tematów prawda?
Dodałem kod, ktory powinien po kazdym refreshu liczyc czas od nowa. Jednak zalogowany jestem nawet po przekroczeniu tego czasu

  1. <?php
  2. $now = time();
  3. $expiryTime = 20;
  4.  
  5. if(isset($_SESSION['last_trace']))
  6. {
  7. unset($_SESSION['last_trace']);
  8.  
  9. }
  10.  
  11. if(!isset($_SESSION['last_trace']))
  12. {
  13.    $_SESSION['last_trace'] = $now;
  14. }
  15. elseif ((int)$_SESSION['last_trace'] + $expiryTime < $now)
  16. {
  17.    $sessionName = session_name("Sesja");    
  18.    $_SESSION = array();
  19.    if (isset($_COOKIE[$sessionName]))
  20.    {
  21.        setcookie($sessionName, '', $now-40, '/');
  22.    }
  23.        
  24.    $online_off = mysql_query("UPDATE `konta` SET `online`='0' WHERE `username`='".$uzytkownik."'") or die(mysql_error());
  25.    session_destroy();      
  26.    echo '<script language="JavaScript">window.location="index.php?opcja=logowanie";</script>';
  27. }
  28. ?>


pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
MateuszS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

Ostrzeżenie: (0%)
-----


Tu nie ma mojego skryptu ilu jest online ;]

Oto i on:
  1. <?php
  2. $zapek = mysql_query("SELECT * FROM `konta` WHERE `online`='1'") or die(mysql_error());
  3.  
  4.  
  5. while($row = mysql_fetch_assoc($zapek))
  6. {
  7. echo '<input type="hidden" value="'.$row['online'].'" name="'.$zliczam++.'">';
  8. }
  9. if($zliczam >= 1)
  10. {
  11. echo 'Na stronie jest ';
  12. }
  13. if($zliczam >= 2)
  14. {
  15. echo '<font color="green"><b>'.$zliczam.' </b></font>zalogowanych użytkowników.';
  16. }
  17. elseif($zliczam == 1)
  18. {
  19. echo '<font color="green"><b>1 </b></font> zalogowany użytkownik.';
  20. }
  21. elseif($zliczam == 0)
  22. {
  23. echo 'Brak zalogowanych użytkowników.';
  24. }
  25. ?>


Ale nie o niego tu chodzi. Pewnie masz racje, moze jest zwykla prowizorka, to ty tu jestes szefem ale mi chodzi o ten skrypt w pierwszym poscie. Z sesjami nie dawno zaczalem i nie znam sie jeszcze na nich dlatego potrzebuje dobrej instrukcji. Nie dalo by sie dodac czegos do tego kodu zeby dzialal odpowiednio? Tzn zeby po kazdym refreshu i przejsciu na podstrony odliczal od nowa? Wydaje mi sie ze wystarczy unset() tyle ze moglem popelnic blad logistyczny. Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 08:46