php - CodeIgniter Controller 被调用两次

标签 php codeigniter controller

完全有可能我在某个地方犯了一个大错误,但由于某种原因,我的 Controller 被调用了两次。这会破坏 Chrome 上的 DX_Auth 验证码,但不知何故,Firefox 和 IE 可以处理它。

问题是,每个 Controller 都被调用两次,相隔毫秒。我使用 log_message() 从 $_SERVER 超全局打印每个键/值对。

唯一的区别是:

第一次通话

'HTTP_CACHE_CONTROL' => 'max-age=0'
'HTTP_ACCEPT' => 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'
'HTTP_COOKIE' => 'ci_session=a:4:{s:10:"session_id";s:32:"4be9cef4e2cdae468c7443f52a5fb3f2";s:10:"ip_address";s:13:"321.321.321.321";s:10:"user_agent";s:50:"Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US)+Ap";s:13:"last_activity";s:10:"1282151409";}70b300096c8d40c60a676ac65bcb222c'
'REMOTE_PORT' => '61828'

和第二次通话

'HTTP_CACHE_CONTROL' => NULL
'HTTP_ACCEPT' => '*/*'
'HTTP_COOKIE' => 'ci_session=a:4:{s:10:"session_id";s:32:"a5bb2c98a8ff4438cef3a3fe3d5ff73e";s:10:"ip_address";s:13:"321.321.321.321";s:10:"user_agent";s:50:"Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US)+Ap";s:13:"last_activity";s:10:"1282151734";}4adf1de21f9708d66b3d4bc36d0b0d92'
'REMOTE_PORT' => '61842'

CI 论坛上已经有一个帖子,其他人也有类似的问题,但他的问题原来是 spy 软件。我不是这种情况。我在几台计算机上试过,但我的访问者都无法注册该网站。

你看,DX_auth 在第一次调用时将验证码的值存储为 CI session 闪存数据。第二个调用删除闪存数据,结果没有人能得到正确的验证码。

这是我的访问日志示例

123.123.123.123 - - [18/Aug/2010:12:31:26 -0500] "GET /welcome HTTP/1.1" 200 3391 "http://somewhere.com/[age" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4"
123.123.123.123 - - [18/Aug/2010:12:31:27 -0500] "GET /welcome HTTP/1.1" 200 3391 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4"

如您所见,第一个电话似乎是我打来的,第二个电话没有推荐人。

我认为我用来从 uri 中删除 index.php 的 .htaccess 文件有问题。因此,我切换到 CI 文档中所述的“默认”.htaccess 重定向。双重加载仍然发生。

RewriteEngine on
RewriteCond $1 !^(index\.php|asset|captcha|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

我还使用了 FireFox 的“Live HTTP headers”插件。看起来只发送了一个请求,但 FireBug 的控制台显示返回了两个回复。

有人知道这是怎么回事吗?这发生在其他人身上吗?

最佳答案

请参阅我对类似问题的回复,以了解可能导致此问题的原因,以及如何开始确定确切的问题:Controller actions being called twice --- Php application

关于php - CodeIgniter Controller 被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516216/

相关文章:

mysql - 如何使用另一个表数据更新下拉列表的列表值

Spring Redis缓存不驱逐

c# - 路径 '/' 的 Controller 未找到或未在 Sitecore 中实现 IController

php - 在mysql数据库的一列中插入多个值

php - CodeIgniter:未加载输入类(或者我认为如此)

php - 如何使用 curl GET 而不是 POST

php - 列出 codeigniter/php 目录中的文件

ruby-on-rails - Controller 规范无法找到由我的 Rails 引擎定义的路由

php - Laravel url 显示未找到错误

php - 按 ID 和名称对查询进行排序