3

我有一个带有默认控制器的站点home。主页上有一个登录表单,按下登录按钮调用功能validate_credentials(),家庭控制器中的功能。

当用户无法从validate_credentials我调用的函数中输入正确的登录信息时:

$this->index()

这基本上是重新加载主页,并用以前的信息填写电子邮件地址表格。我会打电话给

redirect('home');

但是除非我创建会话变量,否则我无法预先填写电子邮件地址表单。

用户输入错误信息后,网址显示为:

http://www.example.com/home/validate_credentials

我只是想:

http://www.example.com

甚至:

http://www.example.com/home

但使用路线

$route['home'] = 'home/validate_credentials';

它实际上改变了被调用的函数。我只想更改网址。这可能吗?

4

2 回答 2

1

好吧,我会说会话存储(尤其是闪存数据)正是为了这个目的——重定向到某个地方,但传递额外的数据。如果您不想这样做,您可能应该只加载一个视图而不进行重定向,然后在页面中使用 HTML5 历史 API 来修改 url 栏的内容。

于 2012-10-07T19:46:26.003 回答
1

将验证过程作为索引函数的一部分,然后创建一个名为 is_logged_in 的会话变量,并在验证凭据通过时将其设置为 1。

然后就像做这样的事情一样简单:

if($this->session->userdata('is_logged_in')==1)
{
    load the page here.
} else {
    load the login stuff here.
}

这样,如果他们没有登录,他们会看到登录表单,并且任何表单验证错误都会传回相同的 URL,如果他们登录了,他们只会转到正常页面。

于 2012-10-07T21:45:01.233 回答