Witam,

mam pewien problem. Otóż wzorowałem się na klasie sesji od punbb i mam pewien problem. Otóż za każdym przeładowaniem strony zmienia mi się session_id(). Oto kod:
  1. <?php
  2. class Session {
  3. var $sess_info = array();
  4.  
  5. function Start() {
  6.  global $config;
  7.  session_save_path($config['session_save_path']);
  8.  session_set_cookie_params($config['session_max_lifetime']*60, $config['cookie_path'], $config['domain'], 1);
  9.  session_name($config['session_name'].'_sid');
  10.  
  11.  if ( !ini_get('session.auto_start') )
  12.  $_SESSION['previous_visit'] = ( !empty($_SESSION['previous_visit']) ) ? $_SESSION['previous_visit'] : 0;
  13.  $_SESSION['viewed_topics'] = ( isset($_SESSION['viewed_topics']) && is_array($_SESSION['viewed_topics']) ) ? $_SESSION['viewed_topics'] : array();
  14.  $_SESSION['latest_post'] = ( !empty($_SESSION['latest_post']) ) ? $_SESSION['latest_post'] : 0;
  15.  
  16. }
  17.  
  18.  
  19. function Update($user_id=NULL) {
  20.  global $db, $config;
  21.  
  22.  $current_time = time();
  23.  $ip_addr = ( !empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : getenv('REMOTE_ADDR');
  24.  
  25.  $result = $db->query("SELECT s.user_id, s.started, s.ip_addr, u.* FROM sessions s LEFT JOIN members u ON u.id = s.user_id WHERE sess_id = '".session_id()."'");
  26.  $user_data = $db->fetch_result($result);
  27.  
  28.  if ( is_array($user_data)) {
  29.   $session_started = true;
  30.  
  31.   $current_sess_info = array(
  32.    'user_id' => $user_data['user_id'],
  33.    'started' => $user_data['started'],
  34.    'ip_addr' => $user_data['ip_addr']
  35.   );
  36.  
  37.   if ( $current_sess_info['user_id'] )
  38.    unset($user_data['user_id'], $user_data['started'], $user_data['slocation'], $user_data['pages'], $user_data['ip_addr']);
  39.   else
  40.    unset($user_data);
  41.  
  42.  } else {
  43.   unset($user_data);
  44.   $session_started = false;
  45.  }
  46.  
  47.  if ( $session_started && $current_sess_info['ip_addr'] !== $ip_addr ) {
  48.  
  49.   setcookie($config['session_name'].'_sid', '', null, $config['cookie_path'], $config['domain'], 1);
  50.   $url=str_replace($SID, '', $_SERVER['REQUEST_URI']);
  51.   header('Location: '.$url);
  52.   die('<meta http-equiv="refresh" content="0;URL='.$url.'" />');  
  53.  
  54.  }
  55.  
  56.  
  57.  if ( $user_id !== NULL && abs(intval($user_id))==$user_id) {
  58.   $user_data = $this->get_user_data($user_id);
  59.   $user_id = ( is_array($user_data) && $user_data['id']==$user_id ) ? $user_id : 0;
  60.  
  61.  } elseif ( !$session_started || !$current_sess_info['user_id'] ) {
  62.   if (!empty($_COOKIE[$config['session_name'].'_al']) ) {
  63.  
  64.    list($userid, $passwd) = unserialize($_COOKIE[$config['session_name'].'_al']);
  65.    $user_data=$this->check_user($userid);
  66.    $user_id = ( $passwd == $user_data['password'] && $this->check_user($user_data) ) ? $userid : 0;
  67.    
  68.   } else {
  69.     $user_id = 0;  
  70.   }
  71.  
  72.  } else {
  73.  
  74.   $user_id = ( $this->check_user($user_data['id']) ) ? $user_data['id'] : 0;
  75.  
  76.  }
  77.  
  78.  $new_sess_info = array(
  79.   'user_id' => $user_id,
  80.   'started' => ( $session_started ) ? $current_sess_info['started'] : $current_time,
  81.   'updated' => $current_time,
  82.   'ip_addr' => $ip_addr
  83.  );
  84.  if ( ( !$session_started && $new_sess_info['user_id'] ) || ( $session_started && $new_sess_info['user_id'] > $current_sess_info['user_id'] ) ) {
  85.   do {
  86.    
  87.    $new_sid = md5(uniqid(mt_rand(), true));
  88.    $return = $db->query("SELECT COUNT(*) AS exist FROM sessions WHERE sess_id = '".$new_sid."'");
  89.    $exists = $db->fetch_result($return);
  90.    $exists = (bool)$exists['exist'];
  91.    
  92.   } while ( $exists );
  93.  
  94.   $old_sid = session_id($new_sid);
  95.  
  96.   setcookie($config['session_name'].'_sid', $new_sid, null, $config['cookie_path'], $config['domain'], 1);
  97.  
  98.  }
  99.  
  100.  if ( $session_started ) {
  101.   if ( isset($old_sid) ) {
  102.    $update_query = "UPDATE sessions SET user_id = ".$new_sess_info['user_id'].", updated = ".$new_sess_info['updated'].", ip_addr = '".$new_sess_info['ip_addr']."', sess_id = '".$new_sid."'
  103.    WHERE sess_id = '".$old_sid."'";
  104.   } else {
  105.    $update_query = "UPDATE sessions SET user_id = ".$new_sess_info['user_id'].", updated = ".$new_sess_info['updated'].", ip_addr = '".$new_sess_info['ip_addr']."' WHERE sess_id = '".session_id()."'";
  106.   }
  107.  } else {
  108.   $update_query = "INSERT INTO sessions VALUES ('".session_id()."', ".$new_sess_info['user_id'].", '".$new_sess_info['ip_addr']."', ".$new_sess_info['started'].", ".$new_sess_info['updated'].")";
  109.  
  110.  }
  111.  $db->query($update_query);
  112.  if ( $new_sess_info['user_id'] ) {
  113.   $add_to_update_query = ( !$session_started || $current_sess_info['user_id'] !== $new_sess_info['user_id'] ) ? ', last_login = '.$current_time : '';
  114.   $db->query("UPDATE members SET last_forum = ".$current_time.$add_to_update_query." WHERE id = ".$new_sess_info['user_id']);
  115.  
  116.  }
  117.  
  118.  $this->sess_info = array_merge($new_sess_info, array(
  119.   'sess_id' => session_id()
  120.  ));
  121.  
  122.  $_SESSION['previous_visit'] = ( $new_sess_info['user_id'] && ( !$session_started || $current_sess_info['user_id'] !== $new_sess_info['user_id'] || empty($_SESSION['previous_visit']) ) ) ? $user_data['last_forum'] : $_SESSION['previous_visit'];
  123.  
  124. }
  125.  
  126. function check_user($user_id) {
  127.  global $db;
  128.  
  129.  $result = $db->query("SELECT * FROM members WHERE id = ".abs(intval($user_id))." ");
  130.  return $db->fetch_result($result);
  131. }
  132.  
  133. }
  134. ?>


Gdzie popełniłem błąd? Dziękuję za pomoc

Dobra już nie aktualne... Chwila na świeżym powietrzu pomogła przy znalezieniu błędu: session_save_path($config['session_save_path']); winksmiley.jpg