【问题标题】:How do you exit execution of a codeigniter program?如何退出 codeigniter 程序的执行?
【发布时间】:2010-09-13 23:15:31
【问题描述】:

我目前正在为我的网站添加预验证。因此,需要登录或其他条件的页面只有在您的会话符合该条件时才会显示。我已经让大部分系统正常工作,但我有一个主要障碍。当验证失败时,我无法弄清楚如何阻止 CodeIgniter 运行控制器的其余部分(并因此显示页面)。

这是我的配置:

  • 我的所有页面都在内容控制器中
  • 我的安全系统是一个名为security.php的模型
  • 在 _head 私有函数(由每个页面调用)中,我加载 security.php 并调用它的主函数:run()
  • $this->security->run() 获取页面的特定验证条件,并检查它们。

    • 如果用户通过了,那么run()什么都不做,页面继续执行

    • 这是我需要帮助的地方。如果用户没有通过,那么我需要显示一个错误页面,并阻止控制器调用任何其他视图。

有人知道怎么做吗?

谢谢,

勒芒

【问题讨论】:

    标签: php security validation codeigniter


    【解决方案1】:

    你可以做两件事之一。 A 将重定向到具有不同 uri 的另一个页面。 B 将使用 if/else 语句来选择您在同一 uri 下显示的视图。

    您需要做的一件事是让您谈到的安全方法返回 TRUE 或 FALSE,无论它成功与否。

    例子:

    答:

    if(!$this->security->run())
    {
        redirect('my/error/page');
    }
    

    乙:

    if($this->security->run())
    {
        // Security Passes, proceed as normal
    }
    else
    {
        // Security Fails, show error page
    }
    

    希望对你有帮助

    【讨论】:

    • 谢谢。这似乎是唯一的选择。
    • 可以为错误页面加载视图而不是重定向(),这样您就不会将服务器请求数加倍。
    • @Mitchell McKenna - 是的,我知道这就是我给选项 B 的内容。我给了选项 A,以防他希望 url 像 /error/unauthorized 或类似的东西
    【解决方案2】:

    如何停止执行 codeigniter:die();exit();

    但是,我认为这不是你真正想要做的。如果验证失败,您要做的是加载不同的视图以显示错误页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 2016-01-28
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多