PHP会话变量不是一直存储

时间:2017-11-14 02:24:50

标签: php session uwp

我正在尝试使用PHP为UWP应用实现post-redirect-get接口。下面显示的是我的实际PHP界面。如果我通过Web浏览器(Chrome)访问此PHP脚本,则会创建散列变量并将其存储在$ _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();到我的剧本,还没有看到任何行为上的差异...

1 个答案:

答案 0 :(得分:0)

检查php.ini文件。

其中MODE是模式的八进制表示。请注意这一点 ;不会覆盖流程的umask。 ; http://php.net/session.save-path

session.save_path =&#34; / tmp&#34;