Как в PHP реализовать переход на другую страницу.

Cкриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений.
Ответить
Аватара пользователя
SheeZe
Администратор
Сообщения: 152
Зарегистрирован: 03 апр 2022, 12:01
Откуда: Планета Земля
Поблагодарили: 2 раза
Контактная информация:

Как в PHP реализовать переход на другую страницу.

Сообщение SheeZe »

 
Предположим, что вы хотите, чтобы пользователям, которые переходят на страницу https://example.com/initial.php отображалась страница https://example.com/final.php.
Возникает вопрос как в PHP реализовать редирект на другую страницу?

Это можно сделать с помощью несколько методов PHP, JavaScript и HTML.
В этой статье мы расскажем о каждом из методов, которые можно использовать для PHP перенаправления на другую страницу.

Вот несколько переменных, которые мы будем использовать:

Code: Select all

<?php
$new_url = 'https://example.com/final.php';
?>

Использование функции PHP header() для редиректа URL-адреса
Если хотите добавить редирект с initial.php на final.php, можно поместить на веб-странице initial.php следующий код.
Он отправляет в браузер новый заголовок location:

Code: Select all

<?php
$new_url = 'https://example.com/final.php';
header('Location: '.$new_url);
?>
Здесь мы используем PHP-функцию header(), чтобы создать редирект.
Нужно поместить этот код перед любым HTML или текстом.
Иначе вы получите сообщение об ошибке, связанной с тем, что заголовок уже отправлен.
Также можно использовать буферизацию вывода, чтобы не допустить этой ошибки отправки заголовков.
В следующем примере данный способ перенаправления PHP показан в действии:

Code: Select all

<?php
ob_start();
$new_url = 'https://example.com/final.php';
header('Location: '.$new_url);
ob_end_flush();
?>
Чтобы выполнить переадресацию с помощью функции header(), функция ob_start() должна быть первой в PHP-скрипте.
Благодаря этому не будут возникать ошибки заголовков.

В качестве дополнительной меры можно добавить die() или exit() сразу после редиректа заголовка, чтобы остальной код веб-страницы не выполнялся.
В отдельных случаях поисковые роботы или браузеры могут не обращать внимания на указание в заголовке Location.
Что таит в себе потенциальные угрозы для безопасности сайта:

Code: Select all

<?php
$new_url = 'https://example.com/final.php';
header('Location: '.$new_url);
exit();
?>
Как можно проверить какой IP, и запретить доступ к странице, или переслать на другую?
Чтобы прояснить ситуацию: die() или exit() не имеют отношения к редиректам.
Они используются для предотвращения выполнения остальной части кода на веб-странице.

При PHP перенаправлении на страницу рекомендуется использовать абсолютные URL-адреса при указании значения заголовка Location.
Но относительные URL-адреса тоже будут работать.
Также можно использовать эту функцию для перенаправления пользователей на внешние сайты или веб-страницы.

Вывод кода JavaScript-редиректа с помощью функции PHP echo()

Это не является чистым PHP-решением.
Тем не менее, оно также эффективно.
Вы можете использовать функцию PHP echo() для вывода кода JavaScript, который будет обрабатывать редирект.

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

Ниже приводится несколько примеров, в которых использованы разные методы JavaScript для редиректа с текущей страницы на другую:

Code: Select all

<?php
echo "<script>self.location='https://example.com/final.php';</script>";
echo "<script>document.location.href='https://example.com/final.php';</script>";
echo "<script>window.location.href='https://example.com/final.php';</script>";
echo "<script>window.location.replace('https://example.com/final.php');</script>";
?>
Пароль на страницу

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

Использование метатегов HTML для редиректа

Также можно использовать базовый HTML для выполнения редиректа.
Это может показаться непрофессиональным, но это работает.
И не нужно беспокоиться о том, что в браузере отключен JavaScript или ранее была отправлена ошибка заголовков:

Code: Select all

<meta http-equiv="Location" content="http://example.com/final.php">
<!-- The following line will redirect after the given number of seconds. Zero in our case. -->
<meta http-equiv="refresh" content="0;url=http://example.com/final.php">
Также можно использовать последнюю строку из предыдущего примера, чтобы автоматически обновлять страницу каждые «n» секунд.
Например, следующий код будет автоматически обновлять страницу каждые 8 секунд:
<meta http-equiv="refresh" content="8">
Заключение

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