【问题标题】:Codeigniter hiding function name BUT keeping functionalityCodeigniter 隐藏功能名称但保留功能
【发布时间】:2012-09-28 02:32:22
【问题描述】:

我有一个带有默认控制器 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';

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

【问题讨论】:

    标签: php html apache codeigniter


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      那么就这么简单:

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

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

      【讨论】:

        猜你喜欢
        • 2020-10-22
        • 1970-01-01
        • 1970-01-01
        • 2020-06-11
        • 2020-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-23
        相关资源
        最近更新 更多