Результаты поиска
Найдено результатов: 5
Как создать бесконечную сессию в Codeigniter
Объясните пожалуйста, как сделать так, чтобы сессия никогда не разрушалась.
PHP. Сессии в БД. Кроссдоменная авторизация. Что-то я в этой жизни не понимаю?
Сессии хранятся в БД. Авторизация общая на 2 сайта(2 домена, сайты лежат рядом на одном сервере). Когда юзер авторизуется на одном сайте, происходит редирект на второй, где для session_name() прописывается та же величина, что и на первом сайте (в куках). Таблица с сессионными данными общая для 2х сайтов.
На старом хостинге все работало норм, на новом — пока нет.
Описание проблемы —
Я авторизовался с одного сайта. Захожу на второй, из базы извлекаются данные(фунция read), тут все норм. Но — сразу после session_start(), делаю print_r($_SESSION) и вижу пустой массив. Т.е. строку отдал, получил — … ничего не получил. Так происходит только с данными записанными на одном сайте, которые я пытаюсь прочитать на другом.
Что нашел — данные на старом хостинге писались в виде сериализованного масссива. Здесь же — 'rJFJvf6LVaiQoSWdAHmIFSu5Zfx-393AnbN81sd2B5jmEeWlhKYJB_E9Lv93BjVw'. Может быть в этом дело.
session.serialize_handler = php на обоих хостингах
php — 5.2.4(старый) / 5.2.14(нов)
все настройки php блока session — одинаковые.
Спасибо!
Стоит ли хранить данные о пользователе в сессиях?
И собственно вопрос как лучше это делать.
Т.е к примеру я авторизую пользователя на сайте, создаю сессию и ее ID записываю в куку.
Далее, у пользователя есть куча данных, его логин, ID, ID всех городов, стран и областей проживания, его почта, теелфон и т.д. Все это может хранится в нескольких таблицах. Доступ к этим данным необходим если не на каждой странице то очень часто и везде дергать MySQL выбирая нужные данные, пускай и универсально, не очень хочется.
Возникает вопрос, стоит ли хранить всю пачку данные привязывая их к сессиям и как это сделать универсальнее, дабы потом легко эти данные выдергивать.
Т.е писать в таблицу:
session_id | serialize_data
или иначе как-то?
Все на любимом РНР )
Пишу систему авторизации. Несколько вопросов
Пишу, вернее, модернизирую систему управления юзерами для сайта небольшого интернет-магазина. В процессе работы над алгоритмом возникли четыре вопроса:
1. Есть ли смысл при регистрации нового юзера посылать ему письмо, заставляя активировать аккаунт, пройдя по некой ссылке, или лучше обойтись без этого?
2. Допустим, юзер зарегистрирован. Имеет ли смысл в форме входа, кроме логина и пароля, предусмотреть чекбокс «Запомнить меня», или запоминать всех по умолчанию, сводя к минимуму разные вопросы?
3. При успешной авторизации я пишу в сессию логин и двойной хэш пароля из базы (в базе, само собой, хранится двойной хэш пароля), а также пишу в куку некий token для автологина:
$token = md5(time().$username);
setcookie('token', $token, time ( ) + 2592000, "/");
$res = $db->query("UPDATE users SET token = '".$token."' WHERE username = '".$username."'");
Разные учебные пособия, сайты и форумы по-разному решают эту задачу. В чем минусы моего решения? Имеет ли смыл добавлять «соль», например к хэшу пароля или в token:
define('MY_SALT', 'KEJ2FHE#WJFHW758');
4. При обращении к каждой страницы сайта я проверяю, есть ли данные сессии, а потом у меня идет обязательный запрос к базе данных, примерно такой:
if ( isset ( $_SESSION["username"] ) && isset ( $_SESSION["userpass"] ) ) {
$db->query("SELECT * FROM users
WHERE username = '".$_SESSION["username"]."'
AND userpass = '".$_SESSION["userpass"]."'
.....}
Но некоторые пособия и учебники делают просто: если есть данные сессии, показывают страницу, если нет — не пускают, при этом запроса к базе данных нет, например:
if(isset($_SESSION['user_data']))
$message[] = "Приветствуем Вас, ". htmlspecialchars($_SESSION['user_data']['login']) ."! Рады видеть Вас на сайте";.........................
Как на ваш взгляд более грамотно? Спасибо.
setcookie('token', $token, time ( ) + 2592000, "/");
$res = $db->query("UPDATE users SET token = '".$token."' WHERE username = '".$username."'");
$db->query("SELECT * FROM users
WHERE username = '".$_SESSION["username"]."'
AND userpass = '".$_SESSION["userpass"]."'
.....}
$message[] = "Приветствуем Вас, ". htmlspecialchars($_SESSION['user_data']['login']) ."! Рады видеть Вас на сайте";.........................