Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obsługa sesji w MySQL
Forum PHP.pl > Forum > PHP
koreja
Mam taki sobie skrypcik obsługi sesji:
  1. <?php
  2. require_once('config.inc.php');
  3.  
  4. $name = session_name($_SESSION['user'].'sess');
  5. $id = session_id();
  6.  
  7. //otwieranie sesji    
  8. function session_open()
  9.        {
  10.        return true;
  11.        }
  12.  
  13. //zamykanie sesji
  14. function session_close()
  15.        {
  16.        return true;
  17.        }
  18.  
  19. //odczytywanie sesji
  20. function session_read($id)
  21.        {
  22.        $query = "SELECT * FROM sesje WHERE id='".$id."'";
  23.        $results = mysql_query($query) or die(mysql_error());
  24.        if(mysql_num_rows($results) == 1)
  25.            {
  26.            $field = mysql_fetch_array($results);
  27.            return $field['data'];
  28.            }    
  29.        else
  30.            {
  31.            $query = "INSERT INTO sesje (id) values ('".$id."')";
  32.            $results = mysql_query($query) or die(mysql_error());    
  33.            return true;
  34.            }
  35.        }  
  36.  
  37. //zapis sesji
  38. function session_write($id, $data)
  39.        {
  40.        $query = "SELECT * FROM sesje WHERE id='".$id."'";
  41.        $results = mysql_query($query) or die(mysql_error());
  42.        while($line = mysql_fetch_array($results))        
  43.            {
  44.            $dane = $line['data'];
  45.            }
  46.        if($dane != $data)
  47.            {
  48.            $rdata = $dane . $data;
  49.            $query = "UPDATE sesje SET data='".$rdata."' WHERE id='".$id."'";
  50.            $results = mysql_query($query) or die(mysql_error());        
  51.            }
  52.        }
  53.  
  54. //usuwanie sesji
  55. function session_remove($id)
  56.        {
  57.        $query = "DELETE FROM sesje WHERE id='".$id."'";
  58.        $results = mysql_query($query) or die(mysql_error());        
  59.        return true;      
  60.        }
  61.  
  62. //automatyczne usuwanie starych sesji
  63. function session_gc($life)
  64.        {
  65.        $query = "DELETE FROM sesje WHERE time < '" . date("YmdHis", time() - $life) . "'";
  66.        $results = mysql_query($query) or die(mysql_error());          
  67.        return true;          
  68.        }
  69.  
  70. session_set_save_handler("session_open", "session_close", "session_read", "session_write", "session_remove", "session_gc");
  71.  
  72.        
  73. ?>


Jednak nie spełnia on swojej roli (nie zapisuje danych sesji do mysql. W czym może być problem?
prohol
jak dla mnie to brakuje mysql_connect w tych funkcjach.
Smoker
no tak smile.gif na samym początku jeszcze przed wykonywaniem tego skryptu przydaloby sie polaczyc z baza danych:
  1. <?php
  2. // nawiązujemy połącznie
  3. $connection = mysql_connect('localhost', 'uzytkownik', 'haslo');
  4. // wybieramy bazę
  5. $db = mysql_select_db('nazwa_bazy', $connection);
  6. // i gdzies na końcu skryptu zamykamy połącznie z bazą
  7. mysql_close($connection);
  8. ?>

koreja
Sorki, że dopiero tak późno odpisuję, ale dopiero wróciłem do domu winksmiley.jpg

Połączenie z bazą danych oczywiście jest w pliku config.inc.php, require'owanym na początku skryptu.
bartm
A nie lepiej wykorzystać gotowe adodb? smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.