PHP会话变量未设置

时间:2011-03-19 16:34:56

标签: php session

我遇到了PHP会话变量的问题:我尝试设置变量,即使在同一个文件中也不能读取它们,更不用说另一个文件了。

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

第1,2和第1行文件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行。我指向保存路径的目录只有一个空白文件用于会话。

有没有人知道为什么这不起作用,或建议如何继续?任何有用的回应都表示赞赏。

3 个答案:

答案 0 :(得分:6)

以下行是导致问题的原因:

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

这些行几乎没有做任何事情:他们比较 ==之前的内容与之后的内容;并且没有对比较的结果做任何事。


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

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

这三行分配 =右侧的内容,左侧是什么。


在PHP中:

答案 1 :(得分:2)

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

答案 2 :(得分:0)

网络服务器的日志是什么意思?它必须是一些权利问题。