IvanShumkov
Новичок
Проблема с сессиями или с головой
Сделал свой механизм сохранения сессий:
И есть странность. Делаю:
И при каждом отображении страницы значение увеличивается не на один, а на два. Как такое может быть? Из за моей кривой реализации механизма сессий? Или они не причем, а это у меня редирект какой-то потерялся в коде. В чем может быть дело?
Сделал свой механизм сохранения сессий:
PHP:
// Открываем сессию
function SessionOpen($save_path, $session_name)
{ return true; }
// Закрываем сессию
function SessionClose()
{ return true; }
// Читаем данные из сессии
function SessionRead($id)
{
$result = $this->rh->db->PhQueryOne("SELECT `data` FROM `users_sessions` WHERE `id` = ?", $id);
$this->rh->debug->Milestone('Session readed');
$this->session_id = $result['data']['id'];
if (isset($result['data'])) return $result['data'];
else return '';
}
// Пишем данные в сессию
function SessionWrite($id, $data)
{
if (!empty($this->session_id) && $this->fieldarray['session_id'] == $session_id)
$this->rh->db->PhQuery("UPDATE `users_sessions` SET `data` = ?, updated = NOW() WHERE `id` = ?", $data, $id);
else
$this->rh->db->PhQuery("INSERT `users_sessions` SET `id` = ?, `data` = ?, updated = NOW(), created = NOW()", $id, $data);
return true;
}
// Убиваем сессию
function SessionDestroy($id)
{
$result = $this->rh->db->PhQuery("DELETE FROM `users_sessions` WHERE id = ?", $id);
$this->rh->debug->Milestone('Session destroyed');
return $result;
}
// Убиваем старые записи из БД
function SessionGarbageCollection($maxLifetime)
{
$date = date('YmdHis', strtotime(date('Y-m-d H:i').' -'.($maxLifetime / 60).' minutes'));
$this->rh->db->Query("DELETE FROM `users_sessions` WHERE `updated` < ".$date);
$this->rh->debug->Milestone('Session garbage collect');
return true;
}
PHP:
$_SESSION['hi'] = $_SESSION['hi'] + $_SESSION['hi'];
echo $_SESSION['hi'];
.