аутентификация без файлов cookie в php5 - PullRequest
1 голос
/ 09 июля 2010

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

$_SESSION['username'] = $username;
$_SESSION['pwd'] = $pwd;

И проверил сеанс, чтобы убедиться, что пользователь уже вошел в систему. Вы можете увидеть код ниже:

if (empty($_SESSION['userId']))
    header("Location: login.php");

Проблема в том, что если я отключил куки в браузере, я не смог бы перейти на другую страницу, даже если вход в систему прошел успешно.Я обнаружил, что сессия PHP использует cookie для хранения некоторых значений в браузере.Есть ли способ использовать сеанс без файлов cookie в PHP5?

Ответы [ 4 ]

1 голос
/ 09 июля 2010

Да, но вам нужно добавить sessid или sid к каждой ссылке.

Это подробно описано здесь: http://myles.eftos.id.au/blog/2005/11/26/cookie-less-sessions-in-php/

Вам также необходимо изменить php.ini вот так: php_value session.use_trans_sid = 1.

0 голосов
/ 09 июля 2010

Вы можете сгенерировать идентификатор сеанса и добавить его к своим ссылкам следующим образом

<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>
0 голосов
/ 09 июля 2010

Да, вы можете, включив session.use_trans_sid.Однако при этом возникают проблемы с безопасностью.

Общепринято, что для входа в систему необходимо принять cookie.

Другой альтернативой является использование http-авторизации вместо сеансов, хотяэто также имеет свои недостатки.

См. передача идентификатора сеанса .

0 голосов
/ 09 июля 2010

Да, но вы не хотите.Фактически, вы должны только использовать сеансы на основе файлов cookie.Это конфигурация по умолчанию в PHP 5.3.Пожалуйста, прочитайте фиксацию сеанса для получения дополнительной информации.

При каких обстоятельствах вы заставляете пользователей использовать ваш сайт без файлов cookie?

...