我正在与Codeigniter合作开展项目。我陷入了控制器问题。这是我的文件夹架构:
application
/controller
/management
dashboard_controller.php // Dashboard Management
/administrator
dashboard_controller.php // Dashboard Administrator
我尝试使用 redirect() 功能访问 dashboard_controller.php 。 这是我的控制器:
...
else{
$username = $this->input->post('username');
$password = $this->input->post('password');
if($this->login_model->get_user_login('$username', '$password')){
redirect('management/dashboard_controller/index');
这是我的模特:
public function get_user_login($username, $password)
{
$this->db->select('password');
$this->db->from('users');
$this->db->where('username', $username);
$hash = $this->db->get()->row('password');
return $this->verify_hash($password, $hash);
}
但是,它不起作用。你们能解释一下吗?或Codeigniter路由不支持这样的配置?谢谢。
解决 我找到了解决这个问题的方法。到目前为止,这solution是最好的。谢谢:))
答案 0 :(得分:0)
你应该尝试下面的
redirect(base_url()+'test_a/test_a_controller');
答案 1 :(得分:0)
以下示例
文件名:management/Login.php
<?php
class Login extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('login_model');
}
public function index() {
$isValid = $this->login_model->get_user_login($this->input->post('username'), $this->input->post('password'))
if ($isValid) {
// You by default will redirect to the index function so not need index at end.
redirect('management/dashboard_controller');
}
}
}
模型
public function get_user_login($username, $password)
{
$this->db->select('password');
$this->db->from('users');
$this->db->where('username', $username);
$query = $this->db->get();
$hash = $query->row()->password;
return $this->verify_hash($password, $hash); Make sure Returns TRUE / FALSE
}
我认为您使用的是password_verify http://php.net/manual/en/function.password-verify.php
public function verify_hash($password, $hash) {
if (password_verify($password, $hash)) {
return TRUE;
} else {
return FALSE;
}
}
如果需要创建密码,请使用http://php.net/manual/en/function.password-hash.php
答案 2 :(得分:0)
这就是你需要使用base_url重定向的方式:
redirect(base_url('management/dashboard_controller/index'));
答案 3 :(得分:0)
在CodeIgniter中,URL按以下方式构建:
控制器/方法/ ID
我之前没有看到任何人将控制器文件放在'controller /'的子目录中。我的猜测是,如果你想重定向到
管理/ dashboard_controller /索引
其中management是内部目录,dashboard_controller是控制器,index是你可以通过以下方式完成的方法:
header("Location:".base_url()."management/dashboard_controller");
您不需要显式调用方法'index()'的原因是Codeigniter会自动为您执行此操作。如果您的控制器中除了index()之外还有另一种方法,并且您尝试重定向到它,那么您必须显式键入'dashboard_controller / foo'。