rigiro la domanda...
come si fa a fare in modo che questa funzione non cancelli il vecchio cookie, e modifichi i dati di tabella già esistenti, inserendone uno con i valori ANONYMUS???
Codice PHP:
function session_pagestart($user_ip$thispage_id)
    {
        global 
$db$lang$board_config;
        global 
$SID;
    
        
$cookiename $board_config['cookie_name'];
        
$cookiepath $board_config['cookie_path'];
        
$cookiedomain $board_config['cookie_domain'];
        
$cookiesecure $board_config['cookie_secure'];
    
        
$current_time time();
        unset(
$userdata);
    
        if ( isset(
$_COOKIE[$cookiename '_sid']) || isset($_COOKIE[$cookiename '_data']) )
        {
            
$sessiondata = isset( $_COOKIE[$cookiename '_data'] ) ? unserialize(stripslashes($_COOKIE[$cookiename '_data'])) : array();
            
$session_id = isset( $_COOKIE[$cookiename '_sid'] ) ? $_COOKIE[$cookiename '_sid'] : '';
            
$sessionmethod SESSION_METHOD_COOKIE;
        }
        else
        {
            
$sessiondata = array();
            
$session_id = ( isset($_GET['sid']) ) ? $_GET['sid'] : '';
            
$sessionmethod SESSION_METHOD_GET;
        }
    
        
// 
        
if (!preg_match('/^[A-Za-z0-9]*$/'$session_id))
        {
            
$session_id '';
        }
    
        
$thispage_id = (int) $thispage_id;
    
        
//
        // Does a session exist?
        //
        
if ( !empty($session_id) )
        {
            
//
            // session_id exists so go ahead and attempt to grab all
            // data in preparation
            //
            
$sql "SELECT u.*, s.*
                FROM " 
SESSIONS_TABLE " s, " USERS_TABLE " u
                WHERE s.session_id = '
$session_id'
                    AND u.user_id = s.session_user_id"
;
            if ( !(
$result $db->sql_query($sql)) )
            {
                
$db->sql_error($sql);
            }
    
            
$userdata $db->sql_fetchrow($result);
    
            
//
            // Did the session exist in the DB?
            //
            
if ( isset($userdata['user_id']) )
            {
                
//
                // Do not check IP assuming equivalence, if IPv4 we'll check only first 24
                // bits ... I've been told (by vHiker) this should alleviate problems with 
                // load balanced et al proxies while retaining some reliance on IP security.
                //
                
$ip_check_s substr($userdata['session_ip'], 06);
                
$ip_check_u substr($user_ip06);
    
                if (
$ip_check_s == $ip_check_u)
                {
                    
$SID = ($sessionmethod == SESSION_METHOD_GET || defined('IN_ADMIN')) ? 'sid=' $session_id '';
    
                    
//
                    // Only update session DB a minute or so after last update
                    //
                    
if ( $current_time $userdata['session_time'] > 60 )
                    {
                        
// A little trick to reset session_admin on session re-usage
                        
$update_admin = (!defined('IN_ADMIN') && $current_time $userdata['session_time'] > ($board_config['session_length']+60)) ? ', session_admin = 0' '';
    
                        
$sql "UPDATE " SESSIONS_TABLE 
                            SET session_time = 
$current_time, session_page = ".$thispage_id.$update_admin.", user_id = ".$userdata['user_id']."
                            WHERE session_id = '" 
$userdata['session_id'] . "'";
                        if ( !
$db->sql_query($sql) )
                        {
                            
$db->sql_error($sql);
                        }
    
                        if ( 
$userdata['user_id'] != ANONYMOUS )
                        {
                            
$sql "UPDATE " USERS_TABLE 
                                SET user_session_time = 
$current_time, user_session_page = $thispage_id
                                WHERE user_id = " 
$userdata['user_id'];
                            if ( !
$db->sql_query($sql) )
                            {
                                
$db->sql_error($sql);
                            }
                        }
    
                        
session_clean($userdata['session_id']);
    
                        
setcookie($cookiename '_data'serialize($sessiondata), $current_time 31536000$cookiepath$cookiedomain$cookiesecure);
                        
setcookie($cookiename '_sid'$session_id0$cookiepath$cookiedomain$cookiesecure);
                    }
    
                    
// Add the session_key to the userdata array if it is set
                    
if ( isset($sessiondata['autologinid']) && $sessiondata['autologinid'] != '' )
                    {
                        
$userdata['session_key'] = $sessiondata['autologinid'];
                    }
    
                    return 
$userdata;
                }
            }
        }
    
        
//
        // If we reach here then no (valid) session exists. So we'll create a new one,
        // using the cookie user_id if available to pull basic user prefs.
        //
        
$user_id = ( isset($sessiondata['userid']) ) ? $sessiondata['userid'] : ANONYMOUS;
    
        if ( !(
$userdata $this->session_begin($user_id$user_ip$thispage_idTRUE)) )
        {
            
$db->sql_error($sql);
        }
        return 
$userdata;
    
    } 
la funzione la richiamo così
Codice PHP:
$userdata $session->session_pagestart($user_ip'9'); 
PROB : al primo refreshdopo l'invio dei dati tutto va bene, quando lo faccio una terza volta, mi cancella il cookie e la sessione