Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器2-控制器/方法超控_Php_Overriding_Uri_Codeigniter 2 - Fatal编程技术网

Php 代码点火器2-控制器/方法超控

Php 代码点火器2-控制器/方法超控,php,overriding,uri,codeigniter-2,Php,Overriding,Uri,Codeigniter 2,如果用户未登录,我希望覆盖现有控制器并调用auth/login,而不是保持浏览器URI不变。(每个用户都必须登录才能使用该网站) 我试过一个预控器钩子,但太早了。此时尚未实例化身份验证库。 由于目标控制器已实例化,后控制器挂钩太迟 编辑库的构造函数似乎也毫无意义,因为它已经被创建了。。所以我有点困了 有什么想法吗?:) 谢谢您是否考虑过将URI保存到flashdata,将访问者重定向到另一个控制器(登录页面),然后将引用者放入隐藏的表单字段?我使用Codeigniter在我的一个网站上做了同样的

如果用户未登录,我希望覆盖现有控制器并调用auth/login,而不是保持浏览器URI不变。(每个用户都必须登录才能使用该网站)

我试过一个预控器钩子,但太早了。此时尚未实例化身份验证库。 由于目标控制器已实例化,后控制器挂钩太迟

编辑库的构造函数似乎也毫无意义,因为它已经被创建了。。所以我有点困了

有什么想法吗?:)


谢谢

您是否考虑过将URI保存到flashdata,将访问者重定向到另一个控制器(登录页面),然后将引用者放入隐藏的表单字段?我使用Codeigniter在我的一个网站上做了同样的事情,效果很好。唯一的区别是URI在此过程中并不完整。

您是否考虑过只将URI保存到flashdata,将访问者重定向到另一个控制器(登录页面),然后将引用者放入隐藏的表单字段?我使用Codeigniter在我的一个网站上做了同样的事情,效果很好。唯一的区别是URI在这个过程中并不完整。

也许这个问题的答案对您来说是一样的


(如果是这样,请不要忘记将“function className()”替换为“function _-construct()”,将“parent::Controller();”替换为“parent::_-construct()”)

也许这个问题的答案对您来说是一样的


(如果是这样,请不要忘记将“function className()”替换为“function _-construct()”,将“parent::Controller();”替换为“parent::_-construct()”)

我将覆盖默认控制器并在每个控制器中进行扩展。创建一个新文件:./app/core/MY_Controller.php,其中包含以下代码:

class Secure_Controller extends CI_Controller {

    function __construct() {
        parent::__construct();

        /* replace this code with yours */
        if( !$this->session->userdata('logged_in') ) {
            redirect(base_url() . 'login', 'refresh'); // your login url
        }
    }
}
然后,在登录用户应该可以访问的每个控制器中使用此代码

class Main extends Secure_Controller {

我将覆盖默认控制器并在每个控制器中进行扩展。创建一个新文件:./app/core/MY_Controller.php,其中包含以下代码:

class Secure_Controller extends CI_Controller {

    function __construct() {
        parent::__construct();

        /* replace this code with yours */
        if( !$this->session->userdata('logged_in') ) {
            redirect(base_url() . 'login', 'refresh'); // your login url
        }
    }
}
然后,在登录用户应该可以访问的每个控制器中使用此代码

class Main extends Secure_Controller {

我曾考虑过,但我不确定“如何”确定那是。。如果黑客阻止了任何重定向的发生,控制器不会继续并完成吗。。重定向是否会停止代码点火器的执行过程?我曾考虑过它,但我不确定它“如何”确定。。如果黑客阻止了任何重定向的发生,控制器不会继续并完成吗。。重定向是否会停止代码点火器的执行过程?回答得好。这将显示您是如何做的,谢谢您的回复。我将其与名为_remap的方法结合使用,作为一种代理。再次感谢。回答得好。这将显示您是如何做的,谢谢您的回复。我将其与名为_remap的方法结合使用,作为一种代理。再次感谢。