Вполне возможно, что я где-то допустил огромную ошибку, но по какой-то причине мои контроллеры вызываются дважды.Это нарушает капчу DX_Auth на Chrome, но каким-то образом Firefox и IE могут с этим справиться.
Проблема в том, что каждый контроллер вызывается с интервалом в два миллисекунды.Я использовал log_message () для печати каждой пары ключ / значение из суперглобального $ _SERVER.
Разница только в следующем:
1-й вызов
'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'
и 2-й вызов
'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 уже есть тема, где у кого-то еще была похожая проблема, но его проблема оказалась шпионской программой.Это не тот случай для меня.Я пробовал на нескольких компьютерах, и ни один из моих посетителей не может зарегистрироваться на сайте.
Видите ли, DX_auth сохраняет значение капчи как флэш-данные сеанса CI при первом вызове.Второй вызов стирает флэш-данные, и в результате никто не может получить правильную капчу.
Вот пример моих журналов доступа
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"
Как видите, первый вызовкажется, исходит от меня, и второй вызов не имеет реферера.
Я думал, что была проблема с файлом .htaccess, который я использовал для удаления index.php из uri.Итак, я переключился на перенаправление .htaccess «по умолчанию», как указано в документации по CI.Двойная загрузка все еще происходит.
RewriteEngine on
RewriteCond $1 !^(index\.php|asset|captcha|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Я также использовал плагин FireFox «Live HTTP headers».Похоже, что отправляется только один запрос, но консоль FireBug показывает, что возвращаются два ответа.
Кто-нибудь знает, что происходит?Это случилось с кем-то еще?