通过会话登录PHP不会';第一次尝试时不工作(在新窗口中)

通过会话登录PHP不会';第一次尝试时不工作(在新窗口中),php,login,session,Php,Login,Session,因此,我正在开发一个应用程序,要求用户在访问任何“敏感材料”之前登录 登录脚本的工作原理如下:用户输入U/p->脚本验证数据->如果有效,则设置会话变量 这是一个非常奇怪的问题,因为会话是由服务器处理的 问题是:当第一次在新窗口或选项卡中打开脚本时,提交登录表单会直接返回到登录表单。所有后续请求均按预期工作 有什么想法吗?$5说$auth->userAuth()是设置会话值的地方,猜测应该是$“密码不匹配”情况下的auth->userAuth()。不过,逻辑本身有点重叠 尝试这样做,只需将逻辑分

因此,我正在开发一个应用程序,要求用户在访问任何“敏感材料”之前登录

登录脚本的工作原理如下:用户输入U/p->脚本验证数据->如果有效,则设置会话变量

这是一个非常奇怪的问题,因为会话是由服务器处理的

问题是:当第一次在新窗口或选项卡中打开脚本时,提交登录表单会直接返回到登录表单。所有后续请求均按预期工作


有什么想法吗?

$5说
$auth->userAuth()
是设置会话值的地方,猜测应该是
$“密码不匹配”情况下的auth->userAuth()
。不过,逻辑本身有点重叠

尝试这样做,只需将逻辑分为不同的块:

if ($action == 'login') {
    // all of the pre-authentication error checking first
    if (!$auth->emailExists($username)) {
        header('Location: index.php?action=unknownuser');
    } else if (!$auth->isAccountActive($username)) {
        header('Location: index.php?action=inactive');
    }

    // then actual authentication here - any errors have already redirected
    $_SESSION['loggedin'] = $auth->userAuth($username, $password);
    // opinionated bonus: adds clarity & keeps superglobals out of your classes
    // (you'll have to take them out yourself though)

    // and finally redirect on success/failure
    if (!$_SESSION['loggedin']) header('Location: index.php?action=authfailed');
    else header('Location: services.php');
}

18岁以后,我的心理能力消失了。你能发布你的密码吗?我会支持你的密码请求。当用户提交表单时,他们是被带到另一个页面还是表单只是发布到同一个URL?我看不到你在向$\u会话写入内容。这是在login_classes.php中完成的吗?如果是这样,您也需要发布它。是的,userAuth方法中的$\u SESSION['loggedin']变量设置为true。