我遇到了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行。我指向保存路径的目录只有一个空白文件用于会话。
有没有人知道为什么这不起作用,或建议如何继续?任何有用的回应都表示赞赏。
答案 0 :(得分:6)
以下行是导致问题的原因:
$_SESSION['login'] == "true";
$_SESSION['username'] == $username;
$_SESSION['password'] == sha1($password);
这些行几乎没有做任何事情:他们比较 ==
之前的内容与之后的内容;并且没有对比较的结果做任何事。
要将值分配给变量,您应该使用 ONE =
,而不是两个:
$_SESSION['login'] = "true";
$_SESSION['username'] = $username;
$_SESSION['password'] = sha1($password);
这三行分配 =
右侧的内容,左侧是什么。
在PHP中:
==
是comparison operator =
是assignment operator。答案 1 :(得分:2)
您正在使用==
,这是一个相等的测试。而是使用=
。
答案 2 :(得分:0)
网络服务器的日志是什么意思?它必须是一些权利问题。