Переменная сеанса PHP не сохраняется все время

Я пытаюсь реализовать интерфейс post-redirect-get с использованием PHP для приложения UWP. Ниже показан мой фактический интерфейс PHP. Если я получу доступ к этому PHP-скрипту через веб-браузер (Chrome), то хеш-переменная будет создана и сохранена в $ _SESSION. Я могу убедиться, что это работает через другой написанный мной скрипт, который распечатывает все сохраненные переменные сеанса.

Если я пытаюсь получить доступ к этому же сценарию через мое приложение UWP, то хеш-переменная не сохраняется в $ _SESSION. Думая, что я каким-то образом испортил свой код UWP, я перебросил сетевые передачи и вижу, что хэшированная переменная возвращается в редиректе 303, но эта же переменная не сохраняется в $ _SESSION. Этот скрипт, кажется, только не сохраняет переменную при доступе через мое приложение UWP. С чего бы это?

<?php
include_once '/var/www/errLogger.php';
include_once '/var/www/hasher.php';
include_once '/var/www/jsonConverter.php';

//Get JSON data
try
{
$jsonArray = jsonToArray($_SERVER);
} catch (Exception $ex)
{
echo logger((string)($ex->getLine()), $ex->getFile(), $ex->getMessage());
}

//Save JSON to session
session_start();
$hash_id = createRedirectHash();
$_SESSION[$hash_id] = $jsonArray;

//Generate URL for this post request
$hashURL = "http://$_SERVER[HTTP_HOST]/php/redirectTest.php?hash=$hash_id";

//Reply with 303 redirect - 303 is used so GET request can pull requested data
header("HTTP/1.1 303 See Other");
header("Location: {$hashURL}");
?>

Ниже приведен пример вывода из моего скрипта, который печатает сохраненные переменные сеанса ….

Array (
[92ed11ad76704bf1e4fafcc8b4393d36f7f42dcdf0c1b28acd8c66bbdc545cd9] => test
[f4bdc2c305922e66790fae080587f54a169140f506734061ed4c23c285efa751] => test
[48d4979004aba405020ee5148dab8823ce450b4cb741953df598061178504398] => )

ОБНОВИТЬПосле дальнейшего изучения я понял, что сеанс сохраняется только тогда, когда Chrome на определенном компьютере используется для доступа к сценарию php. Доступ к сценарию через Firefox или через Chrome на другом компьютере приводит к тому, что переменная сеанса не сохраняется. Я даже попытался добавить session_write_close (); к моему сценарию и еще не видел никакой разницы в поведении …

0

Решение

Проверьте файл php.ini.

; где MODE — восьмеричное представление режима. Обратите внимание, что это
; не перезаписывает umask процесса.
; http://php.net/session.save-path

session.save_path = «/ tmp»

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]