我无法弄清楚是什么原因导致我的Code Igniter应用程序两次提交数据,但我真的担心,稍后它将成为bug和性能问题(x2数据库使用率)的源头。
我的状态更改网页为/user/login
我怀疑是CRSF。
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = TRUE;
$config['cookie_httponly'] = TRUE;
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'xg93ScAg5VzEG';
$config['csrf_cookie_name'] = 'xgesheE7EfuBZ';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = FALSE;
$config['csrf_exclude_uris'] = array();
这是我的路由器,有问题的页面是用户/登录
$route['user/login'] = 'user/login';
这是我的.htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这是页面
<FORM method="POST" action="user/login">
<input type="hidden" name="<?php echo $this->security->get_csrf_token_name();?>" value="<?php echo $this->security->get_csrf_hash();?>">
<button type="submit" onClick="this.innerHTML='Processing...'; this.disabled=true; ">Login </button>
</FORM>
在仔细阅读了可能导致双页提交的内容之后,该列表似乎过于折衷,依赖于浏览器,而且在整个时间上都不稳定。
问题:阻止我的页面(假设它在应用程序范围内)两次调用Controller方法的最简单,最可重用的方法是什么?
出于数据库性能方面的考虑,我想在流到达数据库之前停止该流。