我是codeigniter的新手。我正在创建一个登录表单和进程。但是,当它找到与数据库匹配的所有数据时,它必须重定向到页面(v_home)。但它显示此错误。
在此服务器上找不到请求的URL / CodeIgniter / c_home。
我的代码是
**我的表格**
<?php echo validation_errors(); ?>
<?php echo form_open('c_verifylogin/index');
echo form_label("Username: ");
echo form_input("username");
echo "<br>";
echo form_label("Password: ");
echo form_password("password");
echo "<br>";
echo form_submit("","Login");
echo form_close();
&GT;
varify类
class C_verifyLogin extends CI_Controller {
function __construct() {
parent::__construct();
//load session and connect to database
$this->load->model('m_login','login',TRUE);
$this->load->helper(array('form', 'url','html'));
$this->load->library(array('form_validation','session'));
}
function index() {
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE) {
$this->load->view('v_login');
} else {
//Go to private area
redirect(base_url('c_home'), 'refresh');
$this->load->view('v_home');
}
}
function check_database($password) {
//Field validation succeeded. Validate against database
$username = $this->input->post('username');
//query the database
$result = $this->login->login($username, $password);
if($result) {
$sess_array = array();
foreach($result as $row) {
//create the session
$sess_array = array( 'username' => $row->username);
//set session with value from database
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
} else {
//if form validate false
$this->form_validation->set_message('check_database', 'Invalid username or password');
return FALSE;
}
}
}
` <?php
function index() {
$this->form_validation->set_rules('username', 'Username','trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE) {
$this->load->view('v_login');
} else {
//Go to private area
**redirect(base_url('c_home'), 'refresh');**
}
}
此处V_home
是查看主页,c_home
是它的控制器。帮助将是适当的
答案 0 :(得分:1)
将类的名称和函数直接传递给重定向函数:
redirect('c_home/index', 'refresh');
答案 1 :(得分:1)
您使用了重定向方法的错误方法。 Redirect方法将控制器及其功能作为参数。
假设您有一个单独的控制器来加载 c_home 视图,如下所示。
class C_Home extends CI_Controller {
public function index() {
$this->load->view('c_home');
}
}
然后从任何其他控制器中,您可以调用重定向方法,如下图所示加载c_home视图。
redirect('c_home','refresh');
您必须提供控制器的名称,因为加载视图功能名为index
。否则,如果函数具有不同的名称,它将是这样的。
redirect('c_home/someName','refresh');
所以基本上重定向方法需要 controller / method 。
答案 2 :(得分:1)
有两种可能的方法来完成这项工作。 使用以下代码
redirect(base_url('index.php/c_home','refresh');
否则转到config目录并打开routes.php 使用当前的控制器更改默认控制器并使用以下代码
redirect(base_url(),'refresh')
请记住,无论你在codeigniter中加载到url中的是什么,都必须通过控制器,所以对于第二种方法,使c_home成为默认控制器。
答案 3 :(得分:1)
试试这个
redirect(site_url('c_home'), 'refresh');