• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Redirect Not Working CI4

#11
err, if anyone needs a quick fix for a redirect I just use this:

header('Location: /login');
exit();

it works everywhere so far, I actually have a check login function in my base controller where this is working from.

Beware though, it seems an exit() will prevent any of your "after stuff happens" events or filters from working.
Update: also a check login in base controller doesn't seem like a good idea anymore, so I made it as a public static function in a library
You can see things I made with codeigniter here: itart.pro its not overly impressive as I have very little time to learn.
Reply

#12
(11-07-2019, 07:57 AM)Programaciones Web Wrote: Hello Guys. I started a new Project with CI4 to see the new features and I am struggling trying to redirect between pages.

It's really simple...

I have a Login Controller

PHP Code:
<?php namespace App\Controllers;

use App\Models\Login_Model;

class Login extends BaseController
{

    protected $login_model;

    public function __construct()
    {
        $this->login_model = new Login_Model();
    }

    public function index()
    {
        echo view('login/templates/header');
        echo view('login/dashboard_view');
        echo view('login/templates/footer');
    


And a Dashboard Controller


PHP Code:
<?php namespace App\Controllers;

class Dashboard extends BaseController
{

    public function index()
    {
        echo view('admin/templates/header');
        echo view('admin/dashboard_view');
        echo view('admin/templates/footer');
    }






I would like to control the User Sessions. If the user is not log in on the system... Redirect to Login View.
I would like to have this functionality in all my Controllers so I just add it to the BaseController.

PHP Code:
    protected $session;
    
    public function initController
(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
    {
        // Do Not Edit This Line
        parent::initController($request, $response, $logger);

        
        $this
->session = \Config\Services::session();

        // User Access Control
        if (!isset($_SESSION['user_logged_in'])) {
            return redirect()->to(base_url('/login') );
        }


    


I tried everthing with (/), adding to routes of course. With only redirect(); A lot of things... but seems like something changes in CI4 that I dont get it.


SYSTEMPATH/HTTP\Exceptions\HTTPException.php


Remove de "base_url", like this:

PHP Code:
return redirect()->to('/login'); 

That way works for me.
Reply

#13
(04-20-2020, 02:42 AM)Leo Wrote: err, if anyone needs a quick fix for a redirect I just use this:

header('Location: /login');
exit();

it works everywhere so far, I actually have a check login function in my base controller where this is working from.

Beware though, it seems an exit() will prevent any of your "after stuff happens" events or filters from working.
Update: also a check login in base controller doesn't seem like a good idea anymore, so I made it as a public static function in a library

Thanks for the suggestion. The redirect worked fine using the header('Location...) way. However I still lost session data in the redirected location which was my problem. Have you tried it with session data?
Reply

#14
(05-21-2020, 04:26 AM)jim1001 Wrote: Thanks for the suggestion. The redirect worked fine using the header('Location...) way. However I still lost session data in the redirected location which was my problem. Have you tried it with session data?

That sounds like a Session configuration problem.
Reply

#15
@jim1001

Yes, the sessions work fine. Just put session() in the controller or wherever you are calling the redirect, and put session() whereever you are redirecting to. Also, in my case, I had aggressive session cleaning after each controller, written in an Event - but the exit(), called after header("Location: .... prevented all that, and my session worked in next controller/method/location  
You can see things I made with codeigniter here: itart.pro its not overly impressive as I have very little time to learn.
Reply


Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2020 MyBB Group.