ВСЕ СТАТЬИ
Блог начинающего программиста
Регистрация

Редирект

Опубликовано:

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

Также, редиректом можно воспользоваться для перебрасывания посетителей со старого имени домена на новый со сменой URL-адреса в адресной строке веб-браузера.

Такой редирект на PHP можно выполнить с помощью функции header().

Эта функция добавляет заголовок к документу, пересылаемому браузеру. Ее необходимо вызывать до первой команды вывода сценария.

Сценарий, или скрипт - программа, которая запускается пользователем на сервере, обрабатывающая данные и генерирующая HTML-страницу.

Оператор вывода:

  • команда echo,
  • текст вне <?php ... и ?>,
  • текстом, также, считаются пробелы и переводы строк,
  • предупреждение, сгенерированное PHP и выведененное в браузер.

Если не выполнено это условие использования header(), то выскочит подобное сообщение:

Warning: Cannot modify header information - headers already sent by (output started at щей.рф\article.php?id=22:29) in article.php?id=22 on line 44

Сообщается о том, что на строке 29 сценария article.php?id=22 произошел вывод. В строке 44 функция header() вызывает ошибку.

Задача:

1. Создайте 2 текстовых поля с метками "Число 1" и "Число 2".
2. На отдельной странице сделайте обработку этой формы, вычислив сумму двух чисел.
3. Затем сделайте редирект обратно на страницу с формой и там выведите эту сумму. 

Решение:

Файл с формой для вычисления dex.php


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Редирект</title>
    </head>
    <body>
        <form action="scrip.php" method="post">
            <p>
                Ввести число 1: <input type="text" name="int1">
                Ввести число 2: <input type="text" name="int2">
                Сумма двух чисел:
                <?php
                    echo $_GET['x'];
                ?>  
            </p>
            <br>
            <p>
                <input type="submit">
            </p>
        </form>                 
    </body>
</html>

Файл обработчик вычисления scrip.php. Одна из функций для редиректа - header с добавлением заголовка Location.


<?php
    $int1 = $_POST['int1'];
    $int2 = $_POST['int2'];
    $x = ($int1 + $int2);
    header ("Location: dex.php?x=$x");
?>

Проверить работу скрипта можно в новом окне.

Редирект с помощью заголовка Location с абсолютным адресом

Функция header() отправляет заголовки браузеру или клиенту. В эту функцию передается заголовок ответа сервера с именем Location и его значение адреса, отделенное от имени двоеточием. (Например, header ("Location: http://example.com");). Заголовок Location указывает браузеру клиента, что требуется немедленно перейти по указанному адресу (в нашем случае http://example.com), не дожидаясь тела документа, которое следует после заголовков.

Поэтому после такого заголовка не должно быть записей скрипта, кроме функции exit; Она служит для прекращения выполнения кода на текущей странице. Так как дальнейшее выполнение кода сервером не имеет смысла - клиент уже перенаправился на другую страницу (осуществился редирект).

После Location указывается абсолютный путь, а не относительный.

Комментарии

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

Оставить свой комментарий:

Зарегистрироваться
Имя:
Электронная почта:
Текст комментария:
Введите код с картинки:
картинка