我已经和代码点火器的路线斗争了好几天了。这严重影响了我的工作效率。因此,这里的任何帮助都将是非常感谢的。
我有一份登入表格:
我使用编解码器路由调试器脚本,以检查和调试我的路由。
当我检查我的路由日志时,如下所示,以获得正确的登录尝试。
调试- 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
如下所示。
$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‘=’登录‘;
$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');
}
}
发布于 2018-05-11 04:27:28
每条路线映射到一个控制器,而不是一个视图。
当路由具体映射到控制器类和方法时,您不需要定义它们。IE:http://website.com/users/login
“神奇地”映射到Users
Controller login
方法。
当你变得有创意的时候,你只需要定义路线。
下面是您的用户类(控制器)的不足
路线
// 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';
用户控制器
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');
}
}
https://stackoverflow.com/questions/50284755
复制相似问题