【问题标题】:CodeIgniter 4 redirect()->to() not working on IECodeIgniter 4 redirect()->to() 在 IE 上不起作用
【发布时间】:2022-01-15 01:31:55
【问题描述】:

在“登录”功能 ( return redirect()->to(base_url('dashboard'));) 中设置会话值后重定向到“仪表板”控制器时,我从 IE 收到错误消息。我在 Chrome、Firefox、Edge 和 Opera 上都有这个功能。

我正在使用public $sessionDriver = 'CodeIgniter\Session\Handlers\DatabaseHandler'; 进行会话存储。这适用于其他浏览器。

<?php

namespace App\Controllers;

use App\Controllers\BaseController;
use App\Models\UserModel;

class User extends BaseController
{
    public function login()
    {
        $data = [];

        if ($this->request->getMethod() == 'post') {

            $rules = [
                'email' => 'required|min_length[6]|max_length[50]|valid_email',
                'password' => 'required|min_length[8]|max_length[255]|validateUser[email,password]',
            ];

            $errors = [
                'password' => [
                    'validateUser' => "Email or Password don't match",
                ],
            ];

            if (!$this->validate($rules, $errors)) {

                return view('login', [
                    "validation" => $this->validator,
                ]);

            } else {
                $model = new UserModel();

                $user = $model->where('email', $this->request->getVar('email'))
                    ->first();

                // Stroing session values
                $this->setUserSession($user);
                // Redirecting to dashboard after login
                return redirect()->to(base_url('dashboard'));

            }
        }
        return view('login');
    }

    private function setUserSession($user)
    {
        $data = [
            'id' => $user['id'],
            'name' => $user['name'],
            'phone_no' => $user['phone_no'],
            'email' => $user['email'],
            'isLoggedIn' => true,
        ];

        session()->set($data);
        return true;
    }

    public function register()
    {
        $data = [];

        if ($this->request->getMethod() == 'post') {
            //let's do the validation here
            $rules = [
                'name' => 'required|min_length[3]|max_length[20]',
                'phone_no' => 'required|min_length[9]|max_length[20]',
                'email' => 'required|min_length[6]|max_length[50]|valid_email|is_unique[tbl_users.email]',
                'password' => 'required|min_length[8]|max_length[255]',
                'password_confirm' => 'matches[password]',
            ];

            if (!$this->validate($rules)) {

                return view('register', [
                    "validation" => $this->validator,
                ]);
            } else {
                $model = new UserModel();

                $newData = [
                    'name' => $this->request->getVar('name'),
                    'phone_no' => $this->request->getVar('phone_no'),
                    'email' => $this->request->getVar('email'),
                    'password' => $this->request->getVar('password'),
                ];
                $model->save($newData);
                $session = session();
                $session->setFlashdata('success', 'Successful Registration');
                return redirect()->to(base_url('login'));
            }
        }
        return view('register');
    }

    public function profile()
    {

        $data = [];
        $model = new UserModel();

        $data['user'] = $model->where('id', session()->get('id'))->first();
        return view('profile', $data);
    }

    public function logout()
    {
        session()->destroy();
        return redirect()->to('login');
    }
}

【问题讨论】:

  • IE?请问是哪个版本
  • @Vickel 它的 IE 11

标签: php codeigniter redirect codeigniter-4


【解决方案1】:

CodeIgniter4 有它的“用户代理类”,这应该可以帮助您验证您是否使用 IE,我分享了文档,希望对您有所帮助。 您可以使用该类进行验证并使用另一种方法进行重定向。

https://codeigniter.com/user_guide/libraries/user_agent.html

【讨论】:

    猜你喜欢
    • 2020-11-12
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2016-03-26
    • 2013-08-19
    相关资源
    最近更新 更多