页面重定向后{PHP}会话变量不起作用

时间:2017-02-07 05:50:23

标签: php session iis

我知道这个问题已被多次询问,但其他SO帖子似乎都没有任何可以帮助我的答案。

我一直在处理我正在构建的网站的问题,但我无法保存会话变量。我最终决定只提供两个简单的php页面......一个叫做getsession.php,另一个叫做setsession.php。这些文件是准系统,如下所示:

setsession.php

<?php
   session_start();
   $_SESSION['loggedinusername'] = "SomeName";
   header('Location: getsession.php');
   exit();
?>

getsession.php

<?php
   session_start();
   echo "The Set Variable is: ".$_SESSION['loggedinusername'];
?>

如您所见,setsession.php只是设置一个会话变量,然后重定向到getsession.php并尝试检索该值。

不幸的是,重定向后所有会话变量都会丢失。我得到的输出是

  

注意:未定义的索引:loggedinusername in   第3行的C:\ inetpub \ wwwroot \ MyTest \ getsession.php设置变量   是:

我正在使用IIS和PHP 7.0。我检查了日志,上面的错误信息是唯一出现在那里的信息。此外,我的PHP.INI文件在会话下具有以下设置:

session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.cookie_secure = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly = 1
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 720
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5

感谢。

1 个答案:

答案 0 :(得分:2)

据我所知,您正在本地PC上进行测试,而且不太可能设置SSL。并且您已启用session.cookie_secure

  

session.cookie_secure 布尔

     

session.cookie_secure指定是否   cookie应仅通过安全连接发送。默认为关闭。

如果您使用的是HTTP,您的浏览器将从服务器接收Cookie,但绝不会在不安全(非HTTPS)连接上发回。这就是你没有会话的原因。