简单的PHP会话问题

时间:2011-09-23 02:03:40

标签: php

我有一个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的简单文本/密码框。我能够登录用户,只是没有会话变量。任何意见都赞赏!!

4 个答案:

答案 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启动新会话时,您将轻松使用该会话中定义的所有会话变量。