#session #firefox
#сеанс #firefox
Вопрос:
Я столкнулся со странной ошибкой. Это связано с обновлением сеанса php.
У меня есть сайт, чей вход / выход из системы отлично работает в Chrome, safari и IE и т.д. Но в Firefox он не работает. Когда я вхожу в систему с помощью Firefox, кнопка выхода из системы, кажется, отключена или что-то в этом роде. Это просто не позволяет мне выйти из системы. Даже если я вручную введу ссылку для выхода, она все равно ничего не сделает и сохранит меня в системе. Я вообще не делаю ничего сложного.
Есть идеи, почему один и тот же код работает в Chrome, IE и safari, но не в Firefox?
Дайте мне знать, спасибо.
============================ КОД ВЫХОДА из системы===============================
public function logout() {
$this->session->unset_userdata('smallpoint_username');
$this->session->sess_destroy();
redirect(base_url() . 'forum/update_session.php?hasher = ' . time() . time() . time() . time() . time() . time() . 'amp;amp;nohasher=' . time() . time() . time() . time() . time() . time() . 'amp;amp;op=2', 'location', 301);
}
================ КОД НАСТРОЙКИ СЕАНСА при ВХОДЕ в СИСТЕМУ===============================
$session_array = array(
'smallpoint_username' => $insertData['username'],
'smallpoint_full_name' => $insertData['full_name'],
'smallpoint_user_type' => $insertData['user_type'],
'smallpoint_user_id' => $userData['id'],
'smallpoint_user_snap' => '',
'is_logged_in' => 1,
);
$this->session->set_userdata($session_array);
redirect(base_url() . 'forum/update_session.php?hasher = ' . time() . time() . time() . time() . time() . time() . 'amp;amp;nohasher=' . time() . time() . time() . time() . time() . time() . 'amp;amp;thisisid=' . $userData['id'] . 'amp;amp;thisisrole=' . $insertData['role'] . 'amp;amp;thisisname=' . $insertData['username'] . 'amp;amp;op=1', 'location', 301);
=====================update_session.php======================
session_start();
require 'includes.php';
if ($_GET['op'] == 1) {
$_SESSION[TABLES_PREFIX . 'sforum_logged_in'] = true;
$_SESSION[TABLES_PREFIX . 'sforum_user_id'] = $_GET['thisisid'];
$_SESSION[TABLES_PREFIX . 'sforum_user_role'] = $_GET['thisisrole'];
$_SESSION[TABLES_PREFIX . 'sforum_user_username'] = $_GET['thisisname'];
} else {
unset($_SESSION[TABLES_PREFIX . 'sforum_logged_in']);
unset($_SESSION[TABLES_PREFIX . 'sforum_user_id']);
unset($_SESSION[TABLES_PREFIX . 'sforum_user_role']);
unset($_SESSION[TABLES_PREFIX . 'sforum_user_username']);
setcookie(TABLES_PREFIX . COOKIE_NAME, "", time() - 3600);
}
header('Location: ' . $_SERVER['HTTP_REFERER']);
Комментарии:
1. Вы используете сеансы с файлами cookie или просто файлы cookie? Можете ли вы опубликовать какой-нибудь код? Обратите внимание, что оба подхода требуют, чтобы браузер принимал cookie?
2. Я тоже добавил код. Похоже, что он также использует файлы cookie.
Ответ №1:
Попробуйте добавить следующее в свой код.
session_save_path("/tmp");
session_start();
У меня такая же проблема в Firefox, и она работает нормально
session_save_path("/tmp"); // CREATE this Folder in the root
session_start();
require 'includes.php';
if ($_GET['op'] == 1) {
$_SESSION[TABLES_PREFIX . 'sforum_logged_in'] = true;
$_SESSION[TABLES_PREFIX . 'sforum_user_id'] = $_GET['thisisid'];
$_SESSION[TABLES_PREFIX . 'sforum_user_role'] = $_GET['thisisrole'];
$_SESSION[TABLES_PREFIX . 'sforum_user_username'] = $_GET['thisisname'];
} else {
unset($_SESSION[TABLES_PREFIX . 'sforum_logged_in']);
unset($_SESSION[TABLES_PREFIX . 'sforum_user_id']);
unset($_SESSION[TABLES_PREFIX . 'sforum_user_role']);
unset($_SESSION[TABLES_PREFIX . 'sforum_user_username']);
setcookie(TABLES_PREFIX . COOKIE_NAME, "", time() - 3600);
}
header('Location: ' . $_SERVER['HTTP_REFERER']);
Комментарии:
1. куда мне это добавить? при удалении сеанса или при его настройке?