You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何实现仅向未登录用户在站点首页展示公共登录表单?

问题原因

你的代码存在逻辑运算符优先级错误与条件分组缺失的问题:
PHP 中and的优先级低于or,且你没有将两个URI判断条件归为同一组,导致实际执行逻辑和预期完全不符。

你预期的判断逻辑是:

未登录 且(访问地址是/index.php 或 访问地址是/)

但你现有代码的实际执行逻辑被运算符优先级改变为:

(未登录 且 访问地址是/index.php)或(访问地址是/)

这就导致只要用户访问根路径/,无论是否登录,条件都会判定为真,自然已登录用户访问首页时仍会展示登录表单。

修正方案

将URI判断的两个条件用括号分组,同时建议使用优先级更明确的&&/||替代and/or避免同类优先级陷阱,修正后代码如下:

if(
    !isset($_SESSION["session"])
    &&
    (
        $_SERVER['REQUEST_URI'] === '/index.php'
        ||
        $_SERVER['REQUEST_URI'] === '/'
    )
)

内容的提问来源于stack exchange,提问作者YKKY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:27:03