我遇到了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();
Run Code Online (Sandbox Code Playgroud)
之后,在用户名验证和登录之后,变量被设置,代码会尝试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 />";
Run Code Online (Sandbox Code Playgroud)
输出是:
Username: root
Password: [correct password]
Secure Password: [correct sha1 version of password]
Session Username:
Run Code Online (Sandbox Code Playgroud)
安全密码(sha1,检查的内容)与我检查的数据库文件中的内容相匹配.会话变量没有任何结果,即使之前创建了7行.我指向保存路径的目录只有一个空白文件用于会话.
有没有人知道为什么这不起作用,或建议如何进行?任何有用的回应表示赞赏.
以下行是问题的原因:
$_SESSION['login'] == "true";
$_SESSION['username'] == $username;
$_SESSION['password'] == sha1($password);
Run Code Online (Sandbox Code Playgroud)
这些线条几乎没有任何作用:它们比较之前的内容==和之后的内容; 并且没有对比较的结果做任何事情.
要分配给变量,你应该使用ONE=,而不是二:
$_SESSION['login'] = "true";
$_SESSION['username'] = $username;
$_SESSION['password'] = sha1($password);
Run Code Online (Sandbox Code Playgroud)
这三行分配了=左边的内容.
在PHP中: