"PHP" / Говнокод #5882 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Сайт Управления безопасности информационных технологий</title>
  </head>
  <body>
<?php
echo "You will be redirected after 5 seconds";
sleep(5);
header("Location: https://itsdhub");
?>
  </body>
</html>

Найдено в fido7.ru.php.
Хотел сделать с помощью PHP редирект с таймаутом.

Считал, что сначала пользователь увидит сообщение "You will be...", а через
пять секунд сработает header. Hо получается так, что сообщение в браузере не
выводится, а просто идет пятисекундная задержка с последующим срабатыванием
header. Почему? Что я не так сделал?

Запостил: 0__1 0__1, (Updated )

Комментарии (18) RSS

  • О_о любопытно, особенно от будущей ошибки, ведь хеадер нельзя устанавливать после эхо)
    Ответить
  • Потому что PHP кеширует вывод в браузер, и на момент выполнения sleep() в апстрим еще ничего не отправлено. См. http://ru.php.net/flush

    Кстати, если flush вставить, то работать это перестанет, потому что заголовки HTTP идут до тела. То есть так, как сейчас, из-за кеширования вывода заголовок втыкается до тела и браузер сразу же после его получения (даже не глядя на тело) делает перенаправление, а после втыкания flush() PHP не сможет добавить заголовок, и редирект не сработает вообще.

    Выкиньте к чертям весь код и оставьте HTML с тегом <meta http-equiv="refresh" content="5;URL=https://whatever">
    Ответить
    • черт, 2009 год, а старое доброе фидо всё еще радует...
      надо бы RU.HACKER выписать...
      Ответить
      • Да, там не очень оживлённо, с сожалению - http://pix.am/LCuO.png
        В javascript и html.profy немного оживлённее, и то, за счёт МицголаТхеВебмасты.
        Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8