Здравствуйте! проблема в следующем: при первичном посещении сайта пользователем в базу данных (table un_users - не зарегестрированные пользователи) заноситься о нём как о незарегестрированном пользователе, также в БД я заношу идентификатор сессии! после того как пользователь заполнил форму авторизации с правильным login и pass, при этом меняется идентификатор сессии! подскажите почему так происходит!!!! вот функция которая всё это делает: PHP: //$ArrP - массив с переданными параметрами //$setting - для поключения к БД //$sis_id - идентификатор сесси function f_User($ArrP, $setting, $sid_id) { global $Users; $conn = new MySQLConnect($setting); $conn->getSelect(); $ip = $_SERVER['REMOTE_ADDR']; $time_enter = date("Y-m-d H:i:s"); if ($ArrP[users][error] == true) { //проверяем может пользователь уже зарегестрированн $strSQL = 'SELECT * FROM `user` WHERE `ses_id` = "' . $sid_id . '" LIMIT 1'; $ArrUsers = $conn->QueryComplex($strSQL); if (count($ArrUsers) == 0) { $new_ip = ip2long($ip); $strSQL = 'SELECT * FROM `unknow_user` WHERE `ip` = "' . $new_ip . '" LIMIT 1'; $ArrUnknowUsers = $conn->QueryComplex($strSQL); if (count($ArrUnknowUsers) != 0) { $new_hit = $ArrUnknowUsers[0][hit] + 1; $strSQL = 'UPDATE `unknow_user` SET `ip` = "' . $new_ip . '", `hit` = "' . $new_hit . '",`time_e` = "' . $time_enter . '", `online` = 1'; } else { $strSQL = 'INSERT INTO `unknow_user` (`count`,`sid`,`ip`, `hit`,`time_e`,`online`,`status`) VALUES (NULL , "' . $sid_id . '", "' . $new_ip . '", 1, "' . $time_enter . '", 1, 1)'; } $conn->getQuery($strSQL); $Users[boot][ses_id] = $sid_id; $Users[boot][acsses] = 10; $Users[error] = true; } else { foreach ($ArrUsers[0] as $key => $value) { if ($key == "ses_id") { $Users[boot][$key] = $sid_id; } else { $Users[boot][$key] = $value; } } $strSQL = 'UPDATE `user` SET `ip` = "' . $new_ip . '", `time_e` = "' . $time_enter . '", `online` = 1'; $conn->getQuery($strSQL); } } else { $login = $ArrP[users][login]; $password = $ArrP[users][password]; $strSQL = 'SELECT * FROM `user` WHERE `login` = "' . $login . '" AND `pass` = "' . $password . '" LIMIT 1'; $ArrUsers = $conn->QueryComplex($strSQL); if ($ArrUsers == false) { $new_ip = ip2long($ip); $strSQL = 'SELECT * FROM `unknow_user` WHERE `ip` = "' . $new_ip . '" LIMIT 1'; $ArrUnknowUsers = $conn->QueryComplex($strSQL); if ($ArrUnknowUsers != false) { $new_hit = $ArrUnknowUsers[0][hit] + 1; $strSQL = 'UPDATE `unknow_user` SET `ip` = "' . $new_ip . '", `hit` = "' . $new_hit . '",`time_e` = "' . $time_enter . '", `online` = 1'; } else { $strSQL = 'INSERT INTO `unknow_user` (`count`,`sid`,`ip`, `hit`,`time_e`,`online`,`status`) VALUES (NULL , "' . $sid_id . '", "' . $new_ip . '", 1, "' . $time_enter . '", 1, 1)'; } $conn->getQuery($strSQL); $Users[boot][ses_id] = $sid_id; $Users[boot][acsses] = 10; $Users[error] = true; } else { foreach ($ArrUsers[0] as $key => $value) { if ($key == "ses_id") { $Users[boot][$key] = $sid_id; } else { $Users[boot][$key] = $value; } } $strSQL = 'UPDATE `user` SET `ses_id` = "' . $sid_id . '", `time_e` = "' . $time_enter . '", `online` = 1'; $conn->getQuery($strSQL); } } unset($ArrP[users][login]); unset($ArrP[users][password]); } return $Users; $conn->close(); }
А сколько времени живет сессия? И сколько времени проходит с момента первого посещения и сменой идентификатора сессии?
У меня когда заходишь на сайт происходит инициализация сессии, я узнаю её id и заношу в базу этого пользователя как не зарегестрированного, при этом проходит меньше минуты! после этого я заполняю форму авторизации, после её передачи идентификатор меняется!!!! нет! для получениния идентификатора сессии использую PHP: session_id()
Не должен Попробуй при первом запуске скрипта сохранить что-то в сессию. А после авторизации прочитать сохраненное. Что оно тебе выдаст?
Я ничего не сохранял в сессии, но сейчас прождал более 20 минут, после авторизации, всё прошло нормально, то-есть идентификатор сессии не поменялся! при этом в течении этих 20 минут я просто обновлял страницу, всё нормально, всё остаётся без изменений, т.е. session_id не поменялся! я не знаю что у меня такое было я уже провелил свой php.ini правда ничего не менял, время жизни сессии у меня стоит 15 минут сейчас всё работает нормально! у меня только вопрос возник при обнавлении страницы идентификатор сессии не меняется, а время жизни сессии меняется или нет????????
Посмотри на action формы - куда отправляет Если ты в зашел на сайт по адресу www.домен.ru, а форма отправляет на домен.ru или наоборот - ид сессии смнится, (т. е. для другого домена назначится новый ид, а для старого так и останется).