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:
<?php class Session { function Start() { session_set_cookie_params($config['session_max_lifetime']*60, $config['cookie_path'], $config['domain'], 1); $_SESSION['previous_visit'] = ( !empty($_SESSION['previous_visit']) ) ? $_SESSION['previous_visit'] : 0; } function Update($user_id=NULL) { $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()."'"); $user_data = $db->fetch_result($result); $session_started = true; 'user_id' => $user_data['user_id'], 'started' => $user_data['started'], 'ip_addr' => $user_data['ip_addr'] ); if ( $current_sess_info['user_id'] ) unset($user_data['user_id'], $user_data['started'], $user_data['slocation'], $user_data['pages'], $user_data['ip_addr']); else } else { $session_started = false; } if ( $session_started && $current_sess_info['ip_addr'] !== $ip_addr ) { } $user_data = $this->get_user_data($user_id); } elseif ( !$session_started || !$current_sess_info['user_id'] ) { $user_data=$this->check_user($userid); $user_id = ( $passwd == $user_data['password'] && $this->check_user($user_data) ) ? $userid : 0; } else { $user_id = 0; } } else { $user_id = ( $this->check_user($user_data['id']) ) ? $user_data['id'] : 0; } 'user_id' => $user_id, 'started' => ( $session_started ) ? $current_sess_info['started'] : $current_time, 'updated' => $current_time, 'ip_addr' => $ip_addr ); if ( ( !$session_started && $new_sess_info['user_id'] ) || ( $session_started && $new_sess_info['user_id'] > $current_sess_info['user_id'] ) ) { do { $return = $db->query("SELECT COUNT(*) AS exist FROM sessions WHERE sess_id = '".$new_sid."'"); $exists = $db->fetch_result($return); $exists = (bool)$exists['exist']; } while ( $exists ); setcookie($config['session_name'].'_sid', $new_sid, null, $config['cookie_path'], $config['domain'], 1); } if ( $session_started ) { $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."' WHERE sess_id = '".$old_sid."'"; } else { $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()."'"; } } else { $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'].")"; } $db->query($update_query); if ( $new_sess_info['user_id'] ) { $add_to_update_query = ( !$session_started || $current_sess_info['user_id'] !== $new_sess_info['user_id'] ) ? ', last_login = '.$current_time : ''; $db->query("UPDATE members SET last_forum = ".$current_time.$add_to_update_query." WHERE id = ".$new_sess_info['user_id']); } )); $_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']; } function check_user($user_id) { return $db->fetch_result($result); } } ?>
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']);
