首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找到了CodeIgniter路由,但给了404

找到了CodeIgniter路由,但给了404
EN

Stack Overflow用户
提问于 2018-05-11 03:55:08
回答 1查看 912关注 0票数 2

我已经和代码点火器的路线斗争了好几天了。这严重影响了我的工作效率。因此,这里的任何帮助都将是非常感谢的。

我有一份登入表格:

  • 如果登录错误,请重定向->失败页面
  • 如果登录正确,请重定向->欢迎

我使用编解码器路由调试器脚本,以检查和调试我的路由。

当我检查我的路由日志时,如下所示,以获得正确的登录尝试。

调试- 2018-05-11 03:40:10 ->客户端发送:用户/欢迎 调试- 2018-05-11 03:40:10 ->找到的路由:用户/欢迎->用户/欢迎 调试- 2018-05-11 03:40:10 ->重定向到:user/迎宾->用户/欢迎 用户/欢迎调试- 2018-05-11 03:40:10 -> Global POST、GET和 COOKIE数据净化错误- 2018-05-11 03:40:10 -> 404页而不是

如您所见,找到了路由,然后它重定向到路由,但不知怎么的,它导致404页未找到。

不过,我的意见显然有一个受欢迎的网页,如下图所示:

我把所有的东西都剥光了,并试图使我的路线尽可能简单。config/routes.php如下所示。

代码语言:javascript
运行
复制
$route['users']= 'users';
$route['users/index'] = 'users/index';
$route['users/login'] ='users/login';
$route['users/welcome'] ='users/welcome';
$route['users/failed'] ='users/failed';

$route['(:any)'] = 'pages/index/$1';
$route['default_controller'] = 'pages/index';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

页面URL如下所示:http://mysite/users/welcome = 404错误。

任何帮助都很感激。

附加信息:控制器用户()

公共函数登录(){$data‘’title‘=’登录‘;

代码语言:javascript
运行
复制
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');

if($this->form_validation->run() === FALSE){
    $this->load->view('templates/header');
    $this->load->view('users/login', $data);
    $this->load->view('templates/footer');
} else {

    // Get username
   echo $username = $this->input->post('username');
    // disabled encryption for testing
   echo $password = $this->input->post('password');

    // Login user
    $user_id = $this->users_model->login($username, $password);

    if($user_id){
        // Create session
        $user_data = array(
            'userID' => $user_id,
            'username' => $username,
            'logged_in' => true
        );

        $this->session->set_userdata($user_data);

        // Set message
        $this->session->set_flashdata('user_loggedin', 'You are now logged in');

            redirect('users/welcome');
    } else {
        // Set message
        $this->session->set_flashdata('login_failed', 'Login is invalid');
            redirect('users/failed');

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-11 04:27:28

每条路线映射到一个控制器,而不是一个视图。

当路由具体映射到控制器类和方法时,您不需要定义它们。IE:http://website.com/users/login“神奇地”映射到Users Controller login方法。

当你变得有创意的时候,你只需要定义路线。

下面是您的用户类(控制器)的不足

路线

代码语言:javascript
运行
复制
// You don't need these for your current usage
$route['users']= 'users';
$route['users/index'] = 'users/index';
$route['users/login'] ='users/login';
$route['users/welcome'] ='users/welcome';
$route['users/failed'] ='users/failed';

// keep these below.
$route['(:any)'] = 'pages/index/$1'; //<-- this will give you problems probably
$route['default_controller'] = 'pages/index';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

作为一个关于路由的笔记。如果您想使用example.com/login,也就是将路由映射到控制器/方法的时候:$route['login'] ='users/login';

用户控制器

代码语言:javascript
运行
复制
class Users extends CI_Controller
{

    // routes to example.com/users/
    public function index() 
    {
       redirect('users/login');
    }     

     // routes to example.com/users/login
     public function login() {
         $data['title'] = 'Sign In';

         $this->form_validation->set_rules('username', 'Username', 'required');
         $this->form_validation->set_rules('password', 'Password', 'required');

         if($this->form_validation->run() === FALSE){
             $this->load->view('templates/header');
             $this->load->view('users/login', $data);
             $this->load->view('templates/footer');
         } else {

             // Get username
             echo $username = $this->input->post('username');
             // disabled encryption for testing
             echo $password = $this->input->post('password');

             // Login user
             $user_id = $this->users_model->login($username, $password);

             if($user_id){
                 // Create session
                 $user_data = array(
                     'userID' => $user_id,
                     'username' => $username,
                     'logged_in' => true
                 );

                 $this->session->set_userdata($user_data);

                 // Set message
                 $this->session->set_flashdata('user_loggedin', 'You are now logged in');

                 redirect('users/welcome');
               } else {
                   // Set message
                   $this->session->set_flashdata('login_failed', 'Login is invalid');
                   redirect('users/failed');

                }
         }
    }

    // routes to example.com/users/welcome
    public function welcome() {
        $this->load->view('users/welcome');
    }

    // routes to example.com/users/failed
    public function failed() {
       $this->load->view('users/failed');
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50284755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档