【问题标题】:codeigniter4 redirect not working outside index functioncodeigniter4 重定向在索引函数之外不起作用
【发布时间】:2021-10-14 09:47:04
【问题描述】:

我尝试了各种类型的重定向功能,但它们都不起作用。我只是在创建一个功能,在其中测试会话可用性并基于该重定向将起作用。但是当 session_check 函数被调用时,只有文本部分 Iam 得到并且重定向不起作用。我尝试了路由,site_url,但没有任何效果。

<?php

namespace App\Controllers;
use CodeIgniter\HTTP\CLIRequest;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use App\Controllers\BaseController;

class Home extends BaseController
{
    public function session_check()
    {
        $session = session();
        if ($session->has('usernamesession'))
        { 
            echo 'yes';
            return redirect()->to('public/home');
        }
        else
        {
            echo 'NoA';
            return redirect()->to('/public/login111'); 
            //return redirect()->to(site_url("list-user"));
            //return redirect()->route("login");
            //return redirect()->back();
            //return $routes->addRedirect('home', 'login');
            echo 'NoB';
        }
    }

public function index()
{
    echo 'Home';
    $this->session_check();
}

}

【问题讨论】:

标签: php redirect codeigniter-4


【解决方案1】:

最后我尝试了下面提到的代码,它对我有用,非常感谢任何进一步的改进。

控制器首页功能:

<?php

namespace App\Controllers;
use App\Libraries\Cv;
use CodeIgniter\HTTP\CLIRequest;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use App\Controllers\BaseController;

class Home extends BaseController
{
    public function index()
    {
        $this->session_check();
        $data['top_header']=view('theme/top_header');
        $data['sidebar_menu']=view('theme/sidebar_menu');
        $data['body_content']=view('theme/body_content');
        $data['tab']=view('theme/tab');
        $data['footer']=view('theme/footer');
        return view('theme/index',$data);
    }
}
?>

BaseController.php

public function session_check()
{
    $this->session->set("usernamesession",'Naresh');
    
    if (!$this->session->has('usernamesession'))
    { 
        return $this->response->redirect(site_url('public/login'));
    }else{}

}

【讨论】:

    【解决方案2】:

    请试试这个:

    public function session_check()
    {
        $session = session();
        if ($session->has('usernamesession'))
        { 
            return 'public/home';
        }
        else
        {
            return '/public/login111'; 
        }
    }
    
    public function index()
    {
        echo 'Home';
        $url = $this->session_check();
    
        return redirect()->to($url);
    }
    

    在重定向方面,Codeigniter 在 v4 中不如在 v3 中友好。我高度怀疑这会解决您的问题。

    【讨论】:

    • 这不行,它会进入无限循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2016-05-05
    • 1970-01-01
    • 2017-11-15
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多