我设置$config['csrf_protection'] = TRUE;
时收到以下错误消息:
致命错误:Class' CI_Controller'在第369行的/opt/codeigniter/system/core/CodeIgniter.php中找不到 遇到PHP错误严重性:错误消息:Class' CI_Controller'找不到文件名:core / CodeIgniter.php行号:369 Backtrace:
我跟随manual,但我看不清楚原因。
顺便说一下,只有当我尝试(通过 F5 )重新加载用POST
提交的FORM时,才会发生这种情况。我知道会出现错误,但我认为它应该显示在错误页面(或其他内容)中,并且可能是另一种错误。
任何人都可以帮助我吗?
答案 0 :(得分:1)
我的问题是我修改了 views / errors / error_general.php 来动态化从CI实例获取变量的报告响应,然后,某种程度上,CSRF保护的错误响应变得配置错误。
显然,此文件无法查看CI实例,因此无法在其中使用实例引用。
通过将文件 views / errors / error_general.php 返回到原始版本来解决此问题,但我仍在研究如何自定义它。
感谢您的关注。
答案 1 :(得分:0)
确保您已正确命名文件和类名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
我发现,一旦完成域名,就可以为项目创建一个vHost
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为我修复了它。