Вопрос

В своем 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);
?>
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top