2011-07-11 43 views
1

我知道这是2/3其他问题的重复,但我尝试了所提出的解决方案,但它们并不适合我。我怀疑问题出在PHP.ini文件中,或者与服务器文件夹权限有关。会话未被存储

登录页面:

<?php 

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

//EDIT: forgot to copy paste this, but it is in my code 
session_start(); 

if (isset($_POST['username']) && isset($_POST['password'])) { 
    //login function basically checks the posted username and password, then sets some 
    //session variables accordingly 
    login($_POST['username'], $_POST['password']); 
} 

if (isset($_SESSION['valid']) && $_SESSION['valid'] === true) { 
    header("Location: /HomePage/Home.php"); 
    exit; 
} 

... 

?> 

主页:

<?php 

//EDIT: forgot to copy paste this, but it is in my code 
session_start(); 

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

if (!isset($_SESSION['valid']) || $_SESSION['valid'] !== true) { 
    header("Location: /index.php"); 
    exit; 
} 

... 

?> 

现在,这里的怪异的一部分。根据萤火虫,当我输入一个有效的用户名和密码时,我被重定向到主页(如预测),然后我被重定向回登录页面。我在主页上做了一个var_dump会话来检查,session是空的。

编辑2:当我登录页面上

echo "Session is " . session_id() . "<br />"; 

更换头球攻门,SESSION_ID是空白。这是问题吗?我如何解决它?

编辑:这是一个PHP的ini文件的问题,感谢您的帮助。

回答

5

我在任一PHP脚本中都看不到任何session_start()调用。在您调用该函数之前,您将不会进行会话(并且必须在每个使用会话的页面上调用该会话)。

+0

对不起,没有复制粘贴代码正确地是我不好。 – BlackSheep

+0

你忘了包含哪些其他代码? – ceejayoz

+0

无。我检查了这一点。我知道我不清除/覆盖会议任何地方。我知道我在页面开始处有session_start,在任何输出之前。 – BlackSheep

1

你必须调用session_start();或在php.ini配置session.auto_start

+0

对不起,没有正确复制粘贴。 – BlackSheep

+0

尝试在刷新页面后检查session_id()。它应该是一样的。如果没有 - 会话机制出错。修改配置参数。 – Ostin