У меня есть простой вопрос, но я не знаю. Я хотел бы сначала отобразить сообщение перед перенаправлением на другую страницу, но мой код просто перенаправляет страницу напрямую, не отображая сообщение, или время отображения слишком короткое, я не уверен. Мой код, как показано ниже, советует PLS. большое спасибо.
echo "Please Log In First"; header("location: login6.php");
Вы не можете так поступать. Заголовок PHP должен быть отправлен перед любым контентом, поэтому правильный порядок:
header("location: login6.php"); echo "Please Log In First";
Но эти коды будут перенаправлены мгновенно и не позволят вам увидеть контент. Поэтому я бы сделал перенаправление JavaScript:
echo "Please Log In First"; echo "<script>setTimeout(\"location.href = 'http://www.forobd2.com';\",1500);</script>";
Вы можете использовать обновление заголовка. Он будет ожидать указанное время перед перенаправлением. Тогда вы можете отобразить свое сообщение.
header( "refresh:5; url=login.php" ); //wait for 5 seconds before redirecting
HTTP перенаправить перенаправление на ожидание 5 секунд:
header('Refresh:5; url=login6.php'); echo 'Please Log In First';
Переадресация – это перенаправление 😉
Если вы сообщите обозревателю, используя заголовок Location:
для перенаправления на другую страницу, браузер выполняет именно это: он перенаправляет на другую страницу. И браузер делает это немедленно – без каких-либо задержек.
Поэтому ваше echo
не будет отображаться вообще.
Сначала установите заголовки
Кроме того, вам нужно установить заголовки перед каждой другой операцией вывода (как указано Fred-ii- ):
// First, echo headers header("location: login6.php"); // Then send any other HTML-output echo "Please Log In First";
Лучше не использовать авто-перенаправления
Вполне вероятно, что вы не будете показывать сообщение, а затем – через определенное время – автоматически переадресовываете на другую страницу. Люди могут запутаться в этом процессе. Лучше сделайте это:
Показать страницу входа и представить на этой странице пользователь-hinter или сообщение об ошибке.
Общее решение
Подготовьте компонент в сеансе пользователя, который содержит информацию, которая будет отображаться на следующем экземпляре сценария . Этот компонент может быть списком таких сообщений:
$_SERVER[ 'sys$flashMessagesForLater' ] = array( "Sorry, userID and password didn't match.", "Please login again." );
Каждый раз, когда приходит запрос на скрипт , проверьте, является ли $_SERVER[ 'sys$flashMessagesForLater' ]
непустым массивом.
Если это так, испустите эти значения в четко определенные, расположенные на сгенерированной HTML-странице. Четко определенное местоположение всегда будет находиться в том же месте, где-то в верхней части каждой страницы. Возможно, вы захотите добавить окно с сообщением об ошибках.
Возможно, вы захотите подготовить такой класс:
class CFlashMessageManager { static public function addFlashMessageForLater( $message ) { $_SERVER[ 'sys$flashMessagesForLater' ][] = $message; } static public function flashMessagesForLaterAvailable() { return isset( $_SERVER[ 'sys$flashMessagesForLater' ] ) && is_array( $_SERVER[ 'sys$flashMessagesForLater' ] ) && ( 0 < count( $_SERVER[ 'sys$flashMessagesForLater' ] )) ; } static public function getFlashMessageForLaterAsHTML() { return implode( '<br />', $_SERVER[ 'sys$flashMessagesForLater' ] ); } } // CFlashMessageManager
Вы можете выполнить перенаправление html: поместите это в свою голову
<meta http-equiv="refresh" content="5; url=http://example.com/">
И страница будет перенаправлена через 5 секунд (измените 5 на количество секунд, которое вы хотите)
Рабочий пример в php.
echo "<script>"; echo " alert('Import has successfully Done.'); window.location.href='".site_url('home')."'; </script>";
попробуйте функцию сна
<?php sleep(10);//seconds to wait.. echo "Please Log In First"; header("location: login6.php"); ?>