Найдено результатов: 5

Как создать бесконечную сессию в Codeigniter

Объясните пожалуйста, как сделать так, чтобы сессия никогда не разрушалась. 

codeigniter   php   сессии  

610   1   16:11, 14th July, 2020


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 — одинаковые.


Спасибо!

PHP   Сессии    

494   4   09:43, 5th August, 2020


Стоит ли хранить данные о пользователе в сессиях?

И собственно вопрос как лучше это делать.

Т.е к примеру я авторизую пользователя на сайте, создаю сессию и ее ID записываю в куку.

Далее, у пользователя есть куча данных, его логин, ID, ID всех городов, стран и областей проживания, его почта, теелфон и т.д. Все это может хранится в нескольких таблицах. Доступ к этим данным необходим если не на каждой странице то очень часто и везде дергать MySQL выбирая нужные данные, пускай и универсально, не очень хочется.

Возникает вопрос, стоит ли хранить всю пачку данные привязывая их к сессиям и как это сделать универсальнее, дабы потом легко эти данные выдергивать.

Т.е писать в таблицу:

session_id | serialize_data

или иначе как-то?

Все на любимом РНР )

PHP   Сессии    

440   5   02:20, 7th August, 2020


Пишу систему авторизации. Несколько вопросов

Пишу, вернее, модернизирую систему управления юзерами для сайта небольшого интернет-магазина. В процессе работы над алгоритмом возникли четыре вопроса:

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']) ."! Рады видеть Вас на сайте";.........................

Как на ваш взгляд более грамотно? Спасибо.

Идентификация   пользователей   Сессии    

322   5   09:57, 20th August, 2020


[Решено] PHP и потеря сессии при session_regenerate_id()

Если кратко, берем код:


<?php



session_start();



if (!isset($_SESSION['a']))

{

	$_SESSION['a'] = 0;

}



ob_start();



print $_SESSION['a'];



$_SESSION['a']++;



session_regenerate_id(true);



?>



Открываем в firefox, обновляем страницу несколько раз. Счетчик растет.
Зажимаем Ctrl-R и видим, что потеряли сессию.

Пример несколько синтетический, но часто подобный эффект проявляется при нормальной работе с приложением. Суть в том, что идентификатор сессии изменился, а куку браузер не успел (или не захотел) принять.

Лечится?

PHP   Сессии    

354   2   02:03, 13th August, 2020