header('Location: ...'); + Refresh страницы
Такая траблочка образовалась.. или я чего-то не понимаю, или бродилка взбесилась, или хз что...
Вобщем имеется страница, скажем script.php .
На этой странице выполняется один Очень важный скрипт, после чего производится редирект - header('Location: page.php'); на page.php .
Теперь суть проблемы - попадая на page.php , и жмакая там F5 - производится повторное выполнение скрипта из script.php и возврат на эту страницу .
Всё-бы ничего, но в script.php юзеру начисляется бабло на личный счёт. Соответственно нажимая на page.php (после удачного единоразового пополнения) 100 раз F5 - пополнение баланса происходит 100 раз ...
Почему при обновлении страницы на которую пришли редиректом с другой, выполняется сначала реферер ?
Заранее спасибо.
Посчет проблемы - я пока чет не соображу. Проблема где-то в скриптах. Проверьте на всякий какие заголовки возвращаются скриптом браузеру.
Код:
<script language='javascript'>window.location.replace(page.php);</script>
Franky: Строить защиту используя JS, по понятным причинам, не хотелось-бы.
Не понятен сам факт того, как рефреш страницы, которая загрузилась как результат редиректа с другой страницы, перезагружает предыдущую страницу, которая опять-таки выполняет скрипт и опять-таки сюда-же редиректит.
зы Пожалуй придётся немного переделать скрипт, так что-бы отрабатывался один единственный раз.
Каким-то таинственным образом бага исчезла. Спишу на усталость и на помешательство бродилки ..
Ну так надо значит где-то хранить инфу о только что внесенном платаже, чтобы ф5 не работала. Перемещение на другую страницу - это далеко не идеальная защита.
Я понимаю это =) И не смотря на то что бага уже исчерпана, думаю сейчас как лучше организовать пополнение только единожды.
может скрестить page.php и script.php в один?
Но на деле всё немного сложней.. абстрактные page.php и script.php - являются подсистемами, которые скрещивать не столько нежелательно, сколько проблематично. Не буду вдаваться в детали архитектуры =))
Можно использовать код ошибки перенаправления 301. и от такого заголовка браузер не будет лезть на предыдущий скрипт от ф5, а будет перегружать только нужную страницу. *не вовремя, но в тему!*
Хе. спасибо, однако. Малоли, может пригодится =)