我是CI的新手,通常会尝试将一些信息传递回登录页面,如下所示......
public function authenticate()
{
$this->load->model('User_model', '', true);
if ($this->User_model->authenticate($this->input->post('username'), $this->input->post('password')))
{
$this->session->set_userdata('loggedin', true);
header('Location: /');
}
else
{
header('Location: /sessions/login/error?='.'1');
}
}
然后在登录页面上使用_GET。
那么我如何在CodeIgniter中最好地解决这个问题呢?
答案 0 :(得分:1)
首先,对电子邮件/密码等敏感数据使用GET是一般的禁忌。一直都是不好的做法。
但你问题的答案就在这里 - http://www.codeigniter.com/userguide3/libraries/input.html
$this->input->get('username')
等于$_GET['username']
。
您可以使用$this->input->get('username', TRUE)
来逃避某些恶意代码。
$this->input->post('username')
等于$_POST['username']
。这是我建议你使用的(它需要修改你的HTML)
答案 1 :(得分:1)
根据我的理解,您希望为错误代码传递_GET
个变量,对吧?正如我所知,你正在使用_POST
变量作为表格。
当您使用Codeigniter时,您可以使用框架的URI结构,而不是使用_GET
处理MVC结构。
所以,而不是重定向:
header('Location: /sessions/login/error?='.'1');
像这样重定向:
header('Location: /sessions/login/error/1');
然后在您的控制器中进行登录,在错误方法中:
function error($msgId = 0) {
// here you will get the number you sent in the url as $msgId
}
如果您仍然需要使用_GET
个变量,那么这也是可能的。转到框架/aplication/config/config.php
的主应用程序配置文件,并查看Enable Query Strings
部分