myoperam БАГ с перерисовыванием страницы
ВНИМАНИЕ! ОСТЕРЕГАЙТЕСЬ МОШЕННИКОВ!
Помните, что все браузеры Opera АБСОЛЮТНО БЕСПЛАТНЫ.
Загружайте новые версии ТОЛЬКО С ОФИЦИАЛЬНОГО САЙТА или с ресурсов, которым ДОВЕРЯЕТЕ!


Предыдущее | Следующее | Архив форума | operaman.ru | Поиск
БАГ с перерисовыванием страницы demon51085  05/28/10 02:19 AM

Кажется при перерисовывании страницы Opera v10.53 (остальные версии не проверял) не обращает внимания на содержимое тега img а именно на параметр src которым обычно задается путь до картинки. Дело в том что разработчики не учли что в src может быть как путь до изображения, так и путь до СКРИПТА генерирующего изображение (например src="captcha.php" - скрипт для генерации капчи), так что при перерисовывании страницы идет повторное обращение к этому скрипту. А теперь представьте ситуацию... пользователь заходит на страницу с капчей... выполняется скрипт генерации изображения и запись содержимого этого изображения в $_SESSION (таков скрипт). Через секунду либо после полной загрузки страницы (по умолчанию через секнду) происходит перерисовывание страницы, следовательно повтороное обращение к скрипту генерации изображения (ибо он задается как src="captcha.php" в теге img). Этот скрипт генерирует новое значение, ПЕРЕЗАПИСЫВАЕТ $_SESSION, а картинка то остается СТАРАЯ!!! В итоге получается что на картинке одно, а в сессии уже другое значение. Результат - пользователь вводит в форму значение с капчи, форма летит в обработчик, обработчик сверяет введенное пользователем значение с тем что в сессии и показывает ему фигу ибо в сессии совсем другое значение, "благодаря" тому что Opera сделала повтороное обращение к src (перерисовывание) не обращая внимания на то, что там не адрес до изображения, а адрес до СКРИПТА.
Как я выявил этот баг:
2 дня мучался чтоб понять почему на картинке одно, а в сесси другое. Это выглядело парадоксально. Я подумал что проблемма в кэше. Отключил в настройках оперы всё что было связано с кэшированием... очистил кэш... добавил в скрипт антикэширующие заголовки... сделал путь до скрипта вида src="captcha.php?id=<?=mt_rand()?>" для добавления случайного числа к URL, чтоб запрсы были уникальными... ничего не помогало! Потом обнаружил что в других браузерах этой проблеммы нет. Короче спустя пару дней до меня дошло что происходит двойное выполнение скрипта генерации и что такое может произойти только при перерисовывании страницы.

Re: БАГ с перерисовыванием страницы iNDiAnFLy  05/28/10 11:28 PM

заметь, что происходит такое только с твоим скриптом

Re: БАГ с перерисовыванием страницы demon51085  05/29/10 10:49 AM

заметь, что происходит такое только в опере. хотя это происходит не каждый раз (50/50). видимо когда страница перерисовывается ДО выполнения скрипта, то всё ок, а если ПОСЛЕ то при перерисовывании происходит повторное выполнение.

Re: БАГ с перерисовыванием страницы demon51085  05/29/10 11:10 AM

т.е. опера перерисовывает элементы находящиеся в тегах img только у меня? ты хоть думай прежде чем ляпнуть.

Re: БАГ с перерисовыванием страницы extreme  05/29/10 12:29 PM

demon51085
По крайней мере у себя такого не замечал...Как вариант попробуй Настройки/Расширенные/Навигация/Перерисовывать страницу непрерывно

Re: БАГ с перерисовыванием страницы demon51085  05/29/10 03:54 PM

ещё лучше блин. вместо двойного выполнения получем многократное. даже отключение перерисовывания не стало бы решением проблеммы, ибо это является проблеммой не для меня, а для пользователей моего сайта.
как временное решение добавил в скрипт строчку, проверяющую наличие капчи в сессии. т.е. если скрипт один раз отработал и капча записалась в сессию, то при повторном обращении (из-за перерисовывания страницы) не перезаписывать значение в сессии.
но надо чтоб опера сама не перерисовывала тег img, если в нем находится не картинка а скрипт. или хотя бы показывала повторно сгенерированную картинку, а то скрипт выполняется дважды, а картинка показывается от первой генерации (наверно потому что перерисовывание не затрагивает mt_rand. т.е. к скрипту идет повторное обращение с тем же url).

короче надо чтоб опера не перерисовывала тег img, если в нем находится не картинка а скрипт.

Re: БАГ с перерисовыванием страницы extreme  05/29/10 04:35 PM

_//validator.w3.org/_
И свое творение представить не хочешь..? авось кто поможет...

Re: БАГ с перерисовыванием страницы demon51085  05/30/10 01:23 PM

с кодом кажется всё нормально. да и валидатор ругается только на счетчики (спайлог, лайвинтернет, рамблертоп100. к делу не относится).
повторяю ещё раз проблемма только в Опере и скорее всего из-за того что при перерисовывании она не обращает внимания что там указано в теге img картинка или скрипт.
<td><img id="captcha" src="blocks/captcha.php?img_id=<?=mt_rand()?>" alt="captcha"></td>
результат - двойное выполнение скрипта.

Re: БАГ с перерисовыванием страницы iNDiAnFLy  05/31/10 06:09 AM

ты не думал о том. что у тебя просто сама реализация скрипта на стороне сервера кривая?

Re: БАГ с перерисовыванием страницы Eismann  05/31/10 07:54 AM

Выложи кусок кода да тестовую страничку сделай, чтобы все могли потестить.

Re: БАГ с перерисовыванием страницы demon51085  05/31/10 11:29 AM

мда... люди совсем не умеют читать. говорю же проблемма только в Опере.
А вот в Mozilla Firefox v3.6.3, Google Chrome v4.1.249.1064 и IE 8 всё работает четко! да и в Опере этот глюк проявляется не всегда (примерно 50/50). это всё косяки оперы. спасибо, но в оптимизации своего кода не нуждаюсь. ни первый год пишу на php. я топик написал для тех у кого будет такая же проблемма, чтоб знали почему такое происходит. если у кого-то нет таких проблемм, то возможно скорость инета большая и перерисовывания не происходит.

Re: БАГ с перерисовыванием страницы Ilya  05/31/10 04:40 PM

> А вот в Mozilla Firefox v3.6.3, Google Chrome v4.1.249.1064 и IE 8 всё работает четко! да и в Опере этот глюк проявляется не всегда (примерно 50/50). это всё косяки оперы. спасибо, но в оптимизации своего кода не нуждаюсь. ни первый год пишу на php. я топик написал для тех у кого будет такая же проблемма, чтоб знали почему такое происходит. если у кого-то нет таких проблемм, то возможно скорость инета большая и перерисовывания не происходит.

А чтобы у тебя потом всё работало, неплохо бы отправить баг-репорт с подробным тесткейсом.

Re: БАГ с перерисовыванием страницы demon51085  06/01/10 12:13 AM

я бы с удовольствием, но незнаю куда. да и скорее всего нужно будет на инглише, а с инглишом я в ссоре.


operaman.ru - Home


Rambler's Top100