Вчера я искал почти все темы о сессиях php, я просмотрел руководство, и оно все еще не работалоИз-за этого я не спал очень поздно.
Сценарий: я вхожу в систему, используя стандартную HTML-форму.Мой сеанс заполнен некоторыми переменными, и он работает нормально.Затем я использую Flash uploadify
для загрузки некоторых фотографий и перехожу с параметрами - PHPSESSID
.Мой скрипт php не распознает сессию.Он видит это как пустой.Затем я пытаюсь получить сеанс с другим клиентом, таким как Firefox
или Opera
, и он тоже пуст.Затем я пытаюсь получить этот сеанс с другой вкладкой Chrome
и , она работает
Как вы видите, моя единственная защита - это IP.Я не сканирую другие вещи, поэтому этот должен работать , когда передается хороший PHPSESSID и IP-адрес клиента совпадает, независимо от типа клиента, версии и т. Д.
Это init_session.php
, файл, который я включаюкаждый раз в начале других файлов.Поэтому я знаю, что идентификатор сессии передается вместе с Flash.Но тогда сессия пуста.
Каталог установлен сверху, а путь прямой, поэтому с этим проблем быть не должно.Это также не работает, когда путь сохранения по умолчанию.Я также выключил автозапуск сеанса и сеанс использования только куки.Это ничего не изменило, за исключением того, что мне нужно установить cookie вручную.
Есть ли здесь что-то, что я могу попробовать?Я думаю, что у меня закончились варианты.
РЕДАКТИРОВАТЬ:
Я забыл о большинстве важных вещей, я думаю, что отключение suhosin.session.cryptua
разрешит случай, но я не могу отключить его с помощью ini_set,Есть ли другой способ? Кажется, что эта опция шифрует сеанс с использованием поля user-agent, которое имело бы место.
ini_set('session.auto_start', '0');
ini_set('session.save_path','/public_html/nowy/tmp');
if (isset($_POST["PHPSESSID"])) {
session_id($_POST["PHPSESSID"]);
} elseif (isset($_COOKIE['PHPSESSID'])) {
session_id($_COOKIE["PHPSESSID"]);
} elseif (isset($_GET["PHPSESSID"])) {
session_id($_GET["PHPSESSID"]);
}
session_start();
setcookie("PHPSESSID", session_id(), time()+3600, "/");
if (!isset($_SESSION['user'])) {
$_SESSION['user'] = 0;
}
if (!isset($_SESSION['initiate'])) {
session_regenerate_id();
$_SESSION['initiate'] = true;
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
}
echo ini_get('session.save_path').'<br />';
echo $_POST["PHPSESSID"];
print_r($_SESSION);
RESOLVED
Эта проблема была решена.Я не смог отключить cryptua
, потому что мне нужно было скопировать оригинальный php5.ini
и заменить некоторые переменные, чтобы он заработал.
Проблема, как и ожидалось suhosin.session.cryptua