我有一个允许持久登录和常规会话的登录表单。长话短说,当用户在他们的帐户中时,他们可以更改密码、电子邮件和其他东西。但为此,我需要先从他们的会话或 cookie 中获取他们的用户名(这样我才能进行正确的 SQL 查询)。
我尝试使用以下代码这样做:
if(isset($_SESSION['username']))
{
$username = $_SESSION['username'];
}
else
if(isset($_COOKIE['username']))
{
$username = $_COOKIE['username'];
}
但是,如果我尝试回显 $username,我会不断收到“未定义的变量”。这是为什么?
我注意到如果我放一个 session_start(); 在顶部。我得到了正确的会话用户名,但当然不是 cookie。我该如何解决?
奇怪的部分(对我来说)是我在另一个页面中得到了完全相同的代码(那个部分)并且用户名不是未定义的。
PS:如果有不清楚的地方或需要更多信息,请告诉我。
编辑
我试过这个:
function accountValidation()
{
if(isset($_SESSION['username']))
{
$username = $_SESSION['username'];
}
else if(isset($_COOKIE['username']))
{
$cookie = $_COOKIE['username'];
$explode = explode(' - ', $cookie);
$username = $explode['0'];
}
echo $username;
}
accountValidation();
它起作用了......所以如果我把它放到一个函数中然后调用它,它会起作用吗?!有什么区别?为什么它需要进入一个函数才能工作???