Code Igniter多表单提交问题

时间:2019-02-25 06:07:23

标签: controller codeigniter-3 csrf postback double-click

我无法弄清楚是什么原因导致我的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方法的最简单,最可重用的方法是什么?

出于数据库性能方面的考虑,我想在流到达数据库之前停止该流。

0 个答案:

没有答案