15

Как сделать редирект в PHP?

21

Вопрос о редиректе пользователя с помощью PHP на StackOverflow.com

Здравствуйте!

У меня возникла проблема: возможно ли перенаправить пользователя на другую страницу с помощью PHP?

Предположим, пользователь заходит на страницу www.example.com/page.php, и я хочу перенаправить его на www.example.com/index.php. Как это можно сделать без использования мета-обновления? Это возможно?

Такое перенаправление могло бы также защитить мои страницы от несанкционированного доступа.

Спасибо!

5 ответ(ов)

1

Ваш код функции Redirect в целом выглядит неплохо, но вы уже используете exit(), что абсолютно правильно. Несмотря на это, функциональность может быть улучшена для более четкого управления заголовками и выходом. Вот перевод вашего кода на русский язык с разъяснениями по его работе:

function Redirect($url, $permanent = false)
{
    // Проверяем, были ли заголовки уже отправлены
    if (headers_sent() === false)
    {
        // Устанавливаем HTTP заголовок для перенаправления
        header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
    }

    // Прекращаем выполнение скрипта
    exit();
}

// Пример вызова функции для перенаправления на Google
Redirect('http://www.google.com/', false);

Обратите внимание на следующее:

  • Функция принимает два параметра: $url — адрес для перенаправления и $permanent — булевый параметр, определяющий, должно ли перенаправление быть постоянным (301) или временным (302).
  • headers_sent() проверяет, были ли уже отправлены заголовки, чтобы избежать ошибок.
  • В конце обязательно вызывается exit(), чтобы прекратить выполнение текущего скрипта после перенаправления.

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

Надеюсь, это поможет!

0

Для редиректа в PHP используйте следующий код:

<?php header('Location: another-php-file.php'); exit(); ?>

Если вы уже открыли PHP-теги, можно воспользоваться этим вариантом:

header('Location: another-php-file.php'); exit();

Также вы можете перенаправлять на внешние страницы, например:

header('Location: https://www.google.com'); exit();

Не забудьте включить exit(), или же вы можете использовать die(). Это важно, чтобы прекратить выполнение скрипта после редиректа.

0

Вы можете использовать переменные сеанса для контроля доступа к страницам и авторизации действительных пользователей. Вот пример кода:

<?php
    session_start();

    if (!isset($_SESSION["valid_user"])) {
        header("location:../");
        exit();
    }

    // Код страницы
?>

Дополнительную информацию можно найти в документации PHP.

Недавно я столкнулся с кибератакой и решил, что мне необходимо отслеживать пользователей, пытающихся получить доступ к Административной панели или защищенным разделам веб-приложения.

Поэтому я добавил логирование IP-адресов и пользовательских сеансов в текстовый файл, так как не хотел загружать свою базу данных.

0

Многие из этих ответов верны, но они предполагают, что у вас есть абсолютный URL, что может быть не так. Если вы хотите использовать относительный URL и сгенерировать остальную часть, вы можете сделать что-то вроде этого...

$url = 'http://' . $_SERVER['HTTP_HOST'];            // Получаем хост сервера
$url .= rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); // Получаем текущую директорию
$url .= '/ваш-относительный/путь/здесь/';              // <-- Ваш относительный путь
header('Location: ' . $url, true, 302);              // Вы можете использовать 301 или 302

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

0

Команда header( 'Location: http://www.yoursite.com/new_page.html' ); используется в PHP для отправки заголовка HTTP, который перенаправляет пользователя на указанную страницу.

Вот пример того, как это может выглядеть в контексте ответа на StackOverflow:

<?php
// Перенаправление пользователя на новую страницу
header('Location: http://www.yoursite.com/new_page.html');
exit; // Не забудьте вызвать exit после header, чтобы остановить выполнение скрипта
?>

Важно помнить, что функция header() должна быть вызвана до того, как будет выведен любой контент на страницу (например, пробелы или HTML-теги). Также рекомендуется вызывать exit() сразу после header(), чтобы предотвратить выполнение дальнейшего кода после перенаправления.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь