PHP会话不起作用 - 再次尝试使用简化示例

时间:2012-11-20 20:43:30

标签: php session

由于我们的Web服务器已重新启动,因此PHP会话不再有效。有几个人给了我很有帮助的想法,但没有一个能奏效。我做了一个非常简单的例子,我很确定应该可以工作,但它不起作用。如果有人能解释为什么我会非常感激。到目前为止,我已经花了一整天的时间。

我的理解是$ _SESSION应该是“超级全球”,这意味着它可以在任何地方使用。

为清楚起见,我做了两个精简的重写页面,其中代码STILL不起作用,即打印“Hello World”。

如果有人能告诉我这有什么问题我会非常感激!

----------- WEB PAGE ONE.PHP -----------------

<?PHP session_start(); ?>
<html>
<head>
<title>Page One</title>
</head><body>
<?PHP
     $_SESSION['testvalue'] = "Hello World";
?>
<p><a href="pagetwo.php">Click here</a> to see page two</p>
</body></html>

----------- WEB PAGE TWO.PHP -----------------

<?PHP session_start(); ?>
<html>
<head>
<title>Page Two</title>
</head><body>
<?PHP echo $_SESSION['testvalue']; ?>
<br>
</body></html>

我运行网页一,然后点击链接转到第二页,而不是显示“Hello World”的页面我得到了

注意:未定义的索引:c:\ inetpub \ wwwroot \ two.php中的testvalue

我检查了C:\ PROGRAMDATA \ PHP \ SESSIONS,其中有一个名为

的文件

sess_905m06314ibdubru8ko0aqj4d1

其中包含以下内容

testvalue | s:11:“你好世界”;

此文件是在我运行 one.php 时创建的,表明该应用有权编写会话信息

很抱歉,如果我看起来很密集,但我只是不明白为什么这不起作用,并且花了大部分时间试图找出它。

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试将会话存储到另一个目录中(通过编辑php.ini来执行此操作):

session.save_path = "C:\php_session_test"

原因是因为ProgramData是Windows 7上的“特殊文件夹”,有一些文件系统重定向(如C:\Windows\System32C:\Windows\Sysnative ...)。

请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspx

答案 1 :(得分:0)

听起来会话没有被传播到第2页。您是否禁用了Cookie? http://ie1.php.net/manual/en/session.idpassing.php显示了如何在URL中传递SID。试试看,然后看看你是否可以访问会话。检查浏览器中的cookie并执行phpinfo()以查看会话ID(如有必要)。如果它在第2页上有所不同那么那就是你的问题。