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:
答
什么是Web服务器的日志说?这一定是一些配股问题。
答
您正在使用==
,这是一个平等的测试。请使用=
。
权,当然。我在PHP中编写了大约一年,这是我第一次搞砸了......当我编写代码时,一定非常累。 – 2011-03-19 21:59:16
乎乎的^^有时,有其他人看看你的代码可以帮助:-) *(这是一种错误,我们都做的......再也看不到它时,它是在我们自己的代码^^)* – 2011-03-19 22:00:36
没错。感谢你的回答。我还有一个问题,如果你也许能回答这个问题(会这样,而我创造了另一个问题?):有一种简单的方法来检查设置什么变量,通过浏览器,还是我最好尝试打印了大部分的变量? – 2011-03-19 22:23:33