我正在使用CodeIgniter创建一个登录表单。当提供正确的凭据时,登录功能可以正常工作。当给出错误的凭据时,它将显示一条自定义消息。现在的问题是,如果我输入错误的凭据一次,url更改为某一个。虽然这显示了相同的登录表单,但此后即使使用正确的凭据也无法登录。
整个场景是:
- 点击登录链接,显示登录表单,url为http://mydomain.com/myproject/c_login
- 如果我输入了错误的凭据,则使用index()内部发送的参数显示一条消息,然后显示相同的登录表单,但这次使用url http://mydomain.com/myproject/c_login/c_fun_login_process
- 如果我再次输入错误的凭据,它会变成http://mydomain.com/myproject/c_login/c_login/c_fun_login_process
- 意思是,每次我输入错误的用户名和密码组合,它一次又一次地调用控制器,url被添加到c_login控制器。
如何解决这个问题?
我有这个登录功能的控制器代码
<?php
class C_login extends CI_Controller{
function __construct(){
parent::__construct();
}
public function index($msg = NULL){
$data['msg'] = $msg;
$this->load->view('v_login', $data);
}
public function c_fun_login_process(){
$this->load->model('m_login_model');
$result = $this->m_login_model->m_fun_login_validate();
if(! $result){
$msg = '<font color=red>Invalid username and/or password.</font><br />';
$this->index($msg);
}else{
redirect('c_view_page/c_fun_dashboard');
}
}
这是视图文件(v_login)
中的登录表单 <form method="post" action="<?php '.base_url().'?>c_login/c_fun_login_process" name="process">
<?php
if (!is_null($msg))
echo $msg;
?>
这显然是一个小问题,任何有相当不错的CodeIgniter知识的人都可以解决。
为安全起见,使用本机帮助器构建表单:
<?php echo form_open('c_login/c_fun_login_process');?>
或者使用任何其他url函数(来自url帮助器,请确保事先加载了它):
<form method="post" action="<?php echo site_url('c_login/c_fun_login_process');?>" name="process">
这样你就不必担心建立错误的url和面对这样的问题