我有一个login.php文件,它从index.html的用户名和密码表单中获取。 login.php检查用户是否存在,将其登录,并将meta指向该站点的主页。当他们进入主页时我丢失了会话变量...我有那个页面回应它们,但没有运气。
对于login.php [处理db的东西]:
session_start();
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
$_SESSION['username'] = $_POST['myusername'];
对于homepage.php:
session_start();
$_SESSION['username'] = $_POST['myusername'];
echo($_SESSION['username']);
我遗漏了很多代码,因为我认为这是一个快速修复。 index.html没有php ...只是一个使用POST的简单文本/密码框。我能够登录用户,只是没有会话变量。任何意见都赞赏!!
答案 0 :(得分:3)
当您重定向到homepage.php时,没有$_POST['myusername']
,因此请勿将其设置为会话。
只需echo($_SESSION['username']);
即可为您提供用户名。
答案 1 :(得分:1)
您在主页上将其设置为空白,因为三个页面没有张贴表单。
答案 2 :(得分:0)
主页中的这一行,
$_SESSION['username'] = $_POST['myusername'];
确保$_SESSION['username']
是空的!由于您的主页未收到POST请求,因此请删除此行。此外,会话$_SESSION['username']
已在登录页面中设置,除非会话过期,否则该会话变量将出现在每个页面中。
答案 3 :(得分:0)
你可以这样试试:
的login.php:
<php?
session_start();
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
$_SESSION['username'] = $_POST['myusername']; // Suppose username is 'admin'
?>
homepage.php:
<php?
session_id('SID'); // This will start the session on the previous session which started by login.php
session_start();
print $_SESSION['username']; // This will print 'admin'
?>
通过使用此过程,您可以在多个页面中轻松使用$_SESSION['username']
。当您使用以前的会话ID启动新会话时,您将轻松使用该会话中定义的所有会话变量。