Вывод Javascript-сообщений через HTTP заголовок в PHP скриптах

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

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

Обычно сообщение выдается как минимум где-то в коде выдаваемой страницы, а можно его запихнуть в HTTP-заголовок при помощи функции header(). Заголовок нам понадобится Refresh (заставляет браузер обновить страницу по заданному адресу через заданное количество секунд).

К слову, заголовок Refresh не входит в стандарт HTTP, однако практически все браузеры его поддерживают. Поэтому я считаю, мы правомочны его поюзать.

Пример кода:

<?php

header("Refresh: 0; URL=javascript:alert('В корзину добавлено 2 позиции на сумму 34.50 руб');");

?>
<html>

... здесь код страницы ...

</html>

Это говорит браузеру, что нужно через 0 секунд после загрузки страницы сделать обновление страницы (рефреш) на страницу по адресу "javascript:alert('В корзину добавлено 2 позиции на сумму 34.50 руб');", что по сути является не страницей, а выполняемым кодом Javascript. Таким образом, если включен Javascript, то он выполняется, а никакого перехода на другую страницу не выполняется.

В принципе таким способом можно выполнять любой Javascript-код, алерты это просто что первое напрашивается на ум.
Примечание: Javascript конечно может не поддерживаться какими-либо браузерами или быть отключен, но на все случаи жизни не напасешься кода :)

· Добавьте на news2.ru

Похожие записи:


3 Комментариев »

  1. Dennion said,

    Октябрь 16, 2006 @ 23:54

    Ха прикольно, надо учесть в своих разработках :)

  2. SM said,

    Октябрь 17, 2006 @ 00:05

    Интересно, а Гугл спалит такое выполнения джаваскрипта или нет ;)

  3. Mikhail said,

    Октябрь 17, 2006 @ 00:12

    2SM: с одной стороны это редирект по идее. На джаваскрипт. С другой стороны - в джаваскрипте редиректа нет никакого.
    Да и ещё - вряд ли гугль попадет на такой редирект по ссылкам, я думаю целесообразно такие алерты делать в ответ на какое-то действие пользователя.

RSS feed for comments on this post · TrackBack URI.

Прокомментируйте