【问题标题】:Codeigniter Always append something for all send requestCodeigniter 总是为所有发送请求附加一些东西
【发布时间】:2014-06-23 18:22:03
【问题描述】:

我在 codeigniter 中寻找一个很好的解决方案,在每个发布请求的地方,我都会在其中添加一些内容。

我的临时解决方案是创建一个库,如果找到帖子,我会在我的 URI ?sTime=20140623101010 中附加类似的内容,但这是动态的,基本上绕过了在我的服务器中设置的缓存网关。

任何可以让我对此有所启发的好主意。

提前致谢

【问题讨论】:

  • 为什么需要这个始终附加选项?如果它是为了保护或类似的东西,在最新版本的 Codeigniter 中有 CSRF 令牌。如果您使用 CI 表单助手生成表单,您可以从配置中激活它,您的表单将受到保护..
  • 你想要实现什么 -> 发布的数据可以变成一个数组,然后你可以将一个项目推到它的末尾 - 这就是你的意思吗?有点需要知道如何最好地提供建议的目的!
  • @Svetlio 不,这不是为了保护,而是就像我所说的那样,我想绕过我们的缓存网关,所以假设您继续发送相同的请求,服务器将获得缓存的请求,所以按顺序为了绕过这个,我需要为请求添加一个时间参数以将其视为唯一。
  • @DrixsonOseña 你的逻辑有些不对劲。你需要它来处理 GET 请求还是 POST 请求?因为如果它是 POST,则没有逻辑多次获取相同的 POST 数据。如果它是 GET,您可以在第一次请求 XX 时间后缓存任何结果(如果需要,删除它).. 通过这样的时间字段对您没有任何帮助:) 我想知道,为什么您不使用某些 SESSION 字段来实现您的想法?什么会帮助你那个时间领域..

标签: php codeigniter caching xmlhttprequest


【解决方案1】:

如果您的 Codeigniter 版本支持它,您可以使用 CSRF 保护来阻止用户多次重新发布同一个表单。CI documentation Security(如果这是您的问题..)

如果您出于其他原因需要它,则可以使用不同的方法来创建此类“时间”值。

最好的办法是改变CI form Helper函数form_open。在里面你可以放任何你想要的字段,之后你只需要在开始新表单时使用这个功能。 CI documentation extending CI Helpers

【讨论】:

    【解决方案2】:

    在控制器中的任何功能之前使用

    if(!$this->input->get('time') && empty($this->input->post()))
    
    {
    
    redirect($url.'?time='.time());
    
    }
    

    【讨论】:

    • 或者只是把它放在构造函数中,不需要把任何每个函数都放
    • ... 1 大减号.. 想想如果您提交 POST 表单会做重定向吗?
    • 真的很好发现@Svetlio,非常感谢。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2011-02-18
    • 2014-05-19
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多