PHP会话变量没有被设置

问题描述:

我在使用PHP会话变量麻烦:我尝试设置变量,他们甚至不能在同一个文件中读取,更别说其他文件。PHP会话变量没有被设置

很抱歉,如果这个问题已经被问过,但我无法找到任何东西,不说“请确保您在文件的开头有session_start()。”

行1,2,文件的& 3:

<?php 
    ini_set('session.save_path','/home/[username]/session_data'); // Just in case, points to a correct directory 
    session_start(); 

后来,用户名验证和登录后,变量被设置,并且代码试图echo出来:

$_SESSION['login'] == "true"; 
$_SESSION['username'] == $username; 
$_SESSION['password'] == sha1($password); 
//header("Location: [admin page hidden]"); // Code would normally redirect to admin page (commented out for debugging), and exit 
//exit; 
echo "Username: ".$username."<br />"; // The following 4 lines try to print out the data 
echo "Password: ".$password."<br />"; 
echo "Secure Password: ".sha1($password)."<br />"; 
echo "Session Username: ".$_SESSION['username']."<br />"; 

输出是:

Username: root 
Password: [correct password] 
Secure Password: [correct sha1 version of password] 
Session Username: 

安全密码(sha1,检查的内容)与数据库文件中的内容匹配,我查了一下。会话变量没有任何内容,即使它以前创建了7行。我将保存路径指向的目录只有会话的空白文件。

有没有人对如何进行任何线索,为什么这不工作,或建议?任何有用的回应表示赞赏。

以下行是问题的原因:

$_SESSION['login'] == "true"; 
$_SESSION['username'] == $username; 
$_SESSION['password'] == sha1($password); 

这些线路几乎做什么:他们比较==与后什么是之前什么;并且对比较的结果不做任何事情。


分配值的变量,你应该使用ONE =,而不是两个:

$_SESSION['login'] = "true"; 
$_SESSION['username'] = $username; 
$_SESSION['password'] = sha1($password); 

那些三线分配什么是对=的在其什么是正确的剩下。


在PHP:

+0

权,当然。我在PHP中编写了大约一年,这是我第一次搞砸了......当我编写代码时,一定非常累。 – 2011-03-19 21:59:16

+0

乎乎的^^有时,有其他人看看你的代码可以帮助:-) *(这是一种错误,我们都做的......再也看不到它时,它是在我们自己的代码^^)* – 2011-03-19 22:00:36

+0

没错。感谢你的回答。我还有一个问题,如果你也许能回答这个问题(会这样,而我创造了另一个问题?):有一种简单的方法来检查设置什么变量,通过浏览器,还是我最好尝试打印了大部分的变量? – 2011-03-19 22:23:33

什么是Web服务器的日志说?这一定是一些配股问题。

您正在使用==,这是一个平等的测试。请使用=