在URL代码点火器中传递参数

时间:2015-06-04 17:40:14

标签: php codeigniter

我是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中最好地解决这个问题呢?

2 个答案:

答案 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部分