0

假设我有一个控制器,它有两个方法,我想从 method1 重定向到 method2,但由于以下错误,这是不可能的:

铬合金:Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.

火狐:The page isn't redirecting properly

我怎样才能解决这个问题?

class Site extends CI_Controller {
       function method1() {
           { ... Some Code ... }
            redirect('site/method2');
        }

        function method2() {
            { ... Rest of the code  ... }
        }
}
4

2 回答 2

1

问题是您必须检查您当前url的网址是否与您计划重定向的网址相同,然后不要重定向这里是一个示例,

class Site extends CI_Controller {
       function method1()
       {
           if(// all is GOOD)
           {
              $this->redirect('site','method2','args');
           }else{
              // Do something if the code fails
           }
        }

        function method2()
        {
           if(// all is GOOD)
           {
              $this->redirect('site','method1','args');
           }else{
              // Do something if the code fails
           }
        }

        function check_redirect($controller,$method,$args)
        {
           if($this->router->class !== $controller AND $this->router->method !== $method)
           {
              redirect($controller.'/'.$method.'/'.$args);
           }
        }
}

The page isn't redirecting properlymethod1重定向到时发生,method2然后当到达method2它时再次重定向回来以method1完成一个无结束的重定向循环。

这只是基本没有放任何错误处理。.

于 2013-04-26T05:35:05.947 回答
1

你可以这样做......

class example extends CI_Controller{

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

            public function method1(argument1)
            {
                   //your code
            }


            public function method2(argument2)
           {
               //your code

               $this->method1(arg);

                        or

              echo '<script language="javascript">top.location.href="'.ROOT_FOLDER.'/example/method1/'.$argument.'";</script>';
           }
于 2013-04-25T18:27:08.673 回答