Сессии - клиент теряет номер сесси
номер это хранится в куках, время жизни кук поставлено уже на 80000 сек, но примерно раз в три часа IE бросает сессию(время жизни сессии тоже не маленькое), при это не важно работал ли клиент все эти три часа или не работал.
ТрансСид использовать в этом случае можно былобы но это очень не желательно.
Так вот господа, какие у вас будут мнения по этому поводу 8)
такая проблемка, клиент теряет номер сесси,
номер это хранится в куках, время жизни кук поставлено уже на 80000 сек, но примерно раз в три часа IE бросает сессию(время жизни сессии тоже не маленькое), при это не важно работал ли клиент все эти три часа или не работал.
ТрансСид использовать в этом случае можно былобы но это очень не желательно.
Так вот господа, какие у вас будут мнения по этому поводу 8)
1) что значит бросает ?
2) Покажи код
1) что значит бросает ?
2) Покажи код
1) при обращении к скрипту не всегда передаётся номер сесси лежащий в куках, либо куки дохнут раньше, либо я ничего не понимаю
2)Думаю что это не поможет, но если тебе надо.
да и настройки PHP (4.3.0)
[Session]
session.save_handler = files
session.save_path =c:\web\tmp
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_dividend = 1000
session.gc_maxlifetime = 800000
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.entropy_length = 16
session.cache_limiter = nocache
session.cache_expire = 18000
session.use_trans_sid = 0
<?php
// Модуль поддержки сессий
GLOBAL $cfg;
require ( $cfg->Rmodule_path."auth.php");
class session_layer extends autentification
{
var $sesion_UID;
var $session_time=0;// 0-infinite
function oracle_connect()
{
GLOBAL $GLOBALS;
//коннект к ораклу
}
function check_session()// Организация сесси
{
#if(isset($username))
{GLOBAL $username;};
#if(isset($password))
{GLOBAL $password;};
session_start();
if (isset($_SESSION ['global_sql']))
{
$this->SQL_global_array = $_SESSION ['global_sql'];
}
if (!isset($_SESSION ['username']))
{
// echo "g rg $password.$username";
if((!isset($username))||(!isset($password)))
{
$this->loginus();
return(-4);
die();
}
else
{
echo 'Проверка регистрации
';
$_SESSION ['global_sql'] = $this->GetWorkSQL(0);
// echo 'Загрузка основных запросов.
';
flush();
$this->SQL_global_array = $_SESSION ['global_sql'];
$user_id=$this->Login_To_Oracle($username,$password);
if ($user_id!=-1)
{
if ($user_id<=-1)
{
switch ($user_id)
{
case -4:{echo 'Неизвестное имя пользователя, или неверный пароль!!
';break;}
case -2:{echo 'Учётная запись пользователя ('.$username.') Заблокирована!!
';break;}
case -3:{echo 'Рабочее место заблокировано!!
';break;}
case -1:{echo 'Работа с этого комьютера запрещена!!
';break;}
case -6:{echo 'Ошибка при обращении к базе даных!!
';break;}
default:{echo 'Ошибка регистрации!!
';break;}
}
$this->Write2Log("access",'IP='.$_SERVER ['REMOTE_ADDR'].' Access Denied User='.$username.' pass=********');
//echo 'Учётная запись пользователя ('.$username.') Заблокирована!!
';
session_destroy();
echo '<meta http-equiv="refresh" content="4; URL=./.">';
return(-2);
}
else
{
echo 'Регистрация пройдена';
$this->Write2Log('access','IP='.$_SERVER ['REMOTE_ADDR'].' Access Granted User='.$username);
$_SESSION ['user_rights']=$this->GetWorkRigths($user_id);
$_SESSION ['groups']=$this->GetUserGroup($user_id);
$_SESSION ['forms']=$this->GetForms($user_id);
$_SESSION ['username'] = $username;
$_SESSION ['password'] = $password;
$_SESSION ['user_id'] = $user_id;
$_SESSION ['user_group_id'] = $this->user_group_id;
$_SESSION ['ISER_INFO']=$this->user_info;
$_SESSION ['curent_form']="";
$_SESSION ['curent_form_id']=-1;
$_SESSION ['user_session_data']=$this->UserSessionData;
// $_SESSION ['ORACLE']=$this->myoracle;
// echo '
';
echo '<meta http-equiv="refresh" content="1; URL=./.">';
}
return ($_SESSION ['user_id']);
}
else
{
echo 'Неизвестное имя пользователя, или неверный пароль!!
';
$this->Write2Log('access','IP='.$_SERVER ['REMOTE_ADDR'].' Access Denied User='.$username.' pass='.$password);
session_destroy();
return(-4);
}
}
}
else //повторная проверка при каждой загрузке
{
$user_id=$this->Login_To_Oracle($_SESSION ['username'], $_SESSION ['password']);
if ($user_id<0)
{
echo 'Учётная запись пользователя ('.$_SESSION ['username'].'/'.$user_id.') Заблокирована!!
';
session_destroy();
echo '<meta http-equiv="refresh" content="4; URL=./.">';
return(-2);
}
// $this->user_group=$_SESSION [''];
//$test=$_SESSION['ISER_INFO'];
$ips=explode(".",$_SERVER ['REMOTE_ADDR']);
$ip=($ips[3].".".$ips[2].".".$ips[1].".".$ips[0]);
$this->user_info=$_SESSION['ISER_INFO'];
// echo $this->user_info["OTD_IP"];
if ($this->user_info["OTD_IP"]!=$ip){session_destroy();return (-99);echo '<meta http-equiv="refresh" content="0; URL=./.">';}
$this->SQL_global_array=$_SESSION ['global_sql'];
$this->User_Rights=$_SESSION ['user_rights'];
$this->user_name=$_SESSION ['username'];
$this->user_pass=$_SESSION ['password'];
$this->user_id=$user_id;
$this->Curent_form=$_SESSION ['curent_form'] ;
$this->Curent_form_id=$_SESSION ['curent_form_id'] ;
$this->Group_global_array =$_SESSION ['groups'] ;
$this->Form_global_array =$_SESSION ['forms'] ;
$this->UserSessionData=$_SESSION ['user_session_data'];
// if (isset($_SESSION["GLOBALS"])){$_SESSION["GLOBALS"]=$GLOBALS;}
if (isset( $_SESSION["form_sql"]))
{
$this->Form_SQL_global_array=$_SESSION["form_sql"];//$this->GetWorkSQL(0)
}
return($user_id);
}
}
function drop_session()
{
$this->Write2Log('access','LOGOUT='.$_SESSION ['username']);
session_unset();
session_destroy();
// OCILogOff ($this->myoracle);
//OCILogOff ($_SESSION["ORACLE_SESSION"] );
echo '<meta http-equiv="refresh" content="0; URL=./.">';
}
function set_module($mod)
{
//echo $mod;
if (isset($this->Form_global_array[$mod]))
{
$mm=$this->Form_global_array[$mod];
//print_r($mm);
if (in_array($mm,$this->Form_global_array))
{
$_SESSION ['curent_form'] =$mod;
$this->Form_SQL_global_array=$this->GetWorkSQL($this->Form_global_array[$mod]["FORM_ID"]);
$_SESSION["form_sql"]=$this->Form_SQL_global_array;
$this->Curent_form=$_SESSION ['curent_form'];
$this->Curent_form_id=$this->Form_global_array[$mod]["FORM_ID"];
$this->Curent_formPath=$this->Form_global_array[$mod]["FORM_PATH"];
$this->Curent_formName=$this->Form_global_array[$mod]["FORM_NAME"];
}
}
}
function get_user_vars($var_name)
{
if (isset($this->UserSessionData[$var_name]))
{
return $this->UserSessionData[$var_name];
}
else
{
return (-1);
}
}
function set_user_vars($var_name,$var_value)
{
if ($this->get_user_vars($var_name)==-1)
{
$this->UserSessionData=$this->UserSessionData+array($var_name=>$var_value);
$_SESSION ['user_session_data']=$this->UserSessionData;
}
else
{
array_splice ($this->UserSessionData,$var_name);
$this->UserSessionData=$this->UserSessionData+array($var_name=>$var_value);
//$this->UserSessionData[$var_name]=$var_value;
$_SESSION ['user_session_data']=$this->UserSessionData;
}
}
function del_user_vars($var_name)
{
$br__=array();
$br__=$this->UserSessionData;
if (array_key_exists($var_name,$br__))
{
$tmp_ar=array();
while (list ($key, $val) = each ($this->UserSessionData))
{
if ($key!=$var_name)
{
//array_push($tmp_ar,array($key => $val));
$tmp_ar=$tmp_ar+array($key => $val);
}
}
$this->UserSessionData=$tmp_ar;
$tmp_ar=null;
}
// array_splice ($this->UserSessionData,$var_name);
$_SESSION ['user_session_data']=$this->UserSessionData;
}
function clear_user_vars()
{
$this->UserSessionData=array();
$_SESSION ['user_session_data']=$this->UserSessionData;
}
}
?>
1) У тебя стоит чтобе сессия умирала после закрытия браузера..
2) А сколько тебе надо чтобы она жида 7
И после того как сессия слитела если обновить страничку, сессия уже дохлая ?
дя я весь код то не хотел хотел самое главное глянуть..
1) У тебя стоит чтобе сессия умирала после закрытия браузера..
2) А сколько тебе надо чтобы она жида 7
И после того как сессия слитела если обновить страничку, сессия уже дохлая ?
1)Это вынужденная мера.
2)Нужно чтобы жила хотябы часа три.
(1. прошла регистрация2.чел работает 3.и при очередном выполнении скрипта его бросает на страницу регистрации)
Вообщем у меня сильные подозрения на то что Апачь не корректно работает по Win2k
1)Это вынужденная мера.
2)Нужно чтобы жила хотябы часа три.
(1. прошла регистрация2.чел работает 3.и при очередном выполнении скрипта его бросает на страницу регистрации)
Вообщем у меня сильные подозрения на то что Апачь не корректно работает по Win2k
Почти уверен что это глюк оси юзера(т.е W2k Pro раббота с куками), и почти уверен только у этих пользовтелей этот глюк ?(проверь)