аутентификация без файлов cookie в php5
-
13-09-2020 - |
Вопрос
В своем PHP-приложении я использовал имя пользователя и пароль и проверил таблицу пользователей в базе данных, чтобы проверить достоверность пользователей.После успешного входа в систему я сохранил учетные данные в сеансе сервера, как показано ниже:
$_SESSION['username'] = $username;
$_SESSION['pwd'] = $pwd;
И я проверил сеанс, чтобы убедиться, что пользователь уже вошел в систему.Вы можете увидеть код ниже:
if (empty($_SESSION['userId']))
header("Location: login.php");
Проблема в том, что если бы я отключил куки в браузере, я бы не смог перейти на другую страницу, хотя вход в систему прошел успешно.Я обнаружил, что сеанс PHP использует файл cookie для хранения некоторых значений в браузере.Можно ли использовать сеанс без файлов cookie в PHP5?
Решение
Да, но вам нужно добавить 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
.
Другие советы
Да, но вы не хотите.На самом деле, вы должны только использовать сеансы на основе cookie.Это конфигурация по умолчанию по PHP 5.3.Пожалуйста, ознакомьтесь с Фиксация сеанса для получения дополнительной информации.
Какие обстоятельства у вас есть это заставить вас, чтобы пользователи могли использовать свой сайт без файлов cookie?
Да, вы можете, включив session.use_trans_sid
.Тем не менее, есть проблемы безопасности с этим.
Общепринято, что для входа в систему нужно принять файл cookie.
Другая альтернатива - использовать авторизацию HTTP вместо сеансов, хотя это также имеет его недостатки.
см. см. Идентификатор сеанса, проходящийся .
Вы можете генерировать идентификатор сеанса и добавить его на свои ссылки, такие как это
<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>
.