【问题标题】:Ignoring if statement忽略 if 语句
【发布时间】:2010-08-25 07:03:30
【问题描述】:

我有一个 facebook 登录系统,似乎工作正常,但如果用户已登录,我想重定向到主页。所以这是我页面的顶部

<?php
session_start();

if(!empty($_SESSION)){
 header("Location: home.php");
}

但这会被忽略,它会像 $_SESSION 为空一样运行登录脚本,即使我在主页上打印 Session 数组并且它总是显示它有值,而且脚本的其余部分无论如何都会分配会话值。即使我将其更改为if (empty($_SESSION)) 或在其后添加else { die()},它也会完全忽略它。

现在,如果我添加任何内容以使用 print_r($_SESSION) 或回显特定值来打印会话,即使我将其放在 if 语句之外,它似乎也意识到 $_SESSION 有一个值并进行重定向。我可以把它永久地放在那里,因为它永远不会出现......但我宁愿弄清楚为什么它现在不起作用。

【问题讨论】:

  • 你少了一个括号。是这个问题吗?
  • @Merlyn Morgan-Graham,它在解释中被正确引用,如果他错过了代码中的括号,它应该会引发解析错误。我假设这是一个错字并已修复。

标签: php session redirect if-statement


【解决方案1】:

如果你不中断脚本,它会一直运行到最后:

<?php
session_start();

if(!empty($_SESSION)){
    header("Location: home.php");
    exit;
}

【讨论】:

  • 这是为什么呢? php怎么了?当我了解到它时,在任何地方都说在最后一个“if”花括号之前必须是“exit”; ...我有一个空变量的相关问题,必须用“isset”“修补”。
  • @LeonA.G.A.这不是我的回答所说的或问题是关于什么的。 OP 假设 header() 在将 "Location: ..." 作为第一个参数时退出脚本;它没有。
【解决方案2】:

您应该在if 块中添加die() 或exit(),否则脚本的其余部分将继续执行。

【讨论】:

    猜你喜欢
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2015-08-13
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多