【问题标题】:Error on activating CSRF protection激活 CSRF 保护时出错
【发布时间】:2017-06-06 11:07:53
【问题描述】:

我在设置$config['csrf_protection'] = TRUE; 时收到以下错误消息:

致命错误:在第 369 行的 /opt/codeigniter/system/core/CodeIgniter.php 中找不到类“CI_Controller” 遇到 PHP 错误严重性:错误消息:找不到类“CI_Controller”文件名:core/CodeIgniter.php 行号:369 回溯:

我正在关注manual,但我看不到明确的原因。

顺便说一句,只有当我尝试(通过F5)重新加载使用POST 提交的表单时才会发生这种情况。我知道会出现错误,但我认为它应该显示在错误页面(或其他内容)中,并且可能是另一种错误。

谁能帮帮我?

【问题讨论】:

    标签: php codeigniter codeigniter-3


    【解决方案1】:

    我的问题是我修改了 views/errors/error_general.php 以动态化从 CI 实例获取变量的报告响应,然后,不知何故,来自 CSRF 保护的错误响应配置错误。

    显然,这个文件看不到 CI 实例,所以不能在其中使用实例引用。

    已通过将文件 views/errors/error_general.php 恢复为原始版本来解决此问题,但我仍在研究如何自定义它。

    感谢您的关注。

    【讨论】:

      【解决方案2】:

      确保您已正确命名文件和类名https://www.codeigniter.com/user_guide/general/styleguide.html#file-naming

      https://www.codeigniter.com/user_guide/general/styleguide.html#class-and-method-naming

      对于 CSRF

      我发现最好为您的项目创建一个虚拟主机,一旦完成了类似示例的域

      example.com
      

      config.php

      $config['cookie_prefix']    = 'ci_';
      $config['cookie_domain']    = '.example.com';
      $config['cookie_path']      = '/';
      $config['cookie_secure']    = FALSE;
      $config['cookie_httponly']  = FALSE;
      
      
      $config['csrf_protection'] = TRUE;
      $config['csrf_token_name'] = 'csrf_test_name';
      $config['csrf_cookie_name'] = 'csrf_cookie_name';
      $config['csrf_expire'] = 7200;
      $config['csrf_regenerate'] = TRUE;
      $config['csrf_exclude_uris'] = array();
      

      并使用表单助手 functions 为我修复它。

      【讨论】:

      • 已经完成了。我正在使用所有这些设置,但它仍然无法正常工作。我怀疑这与我的错误报告设置有关...
      猜你喜欢
      • 2020-12-02
      • 2019-12-15
      • 2011-10-23
      • 2014-03-06
      • 2020-08-08
      • 1970-01-01
      • 2020-03-12
      • 2017-01-01
      • 1970-01-01
      相关资源
      最近更新 更多