Перенаправление с таймером в PHP?

Как я могу сделать перенаправление с PHP после 10 секунд …

Я много читал об этом, похоже, было бы лучше с javascript. Но PHP спасет меня от кодирования.

Итак, как я могу сделать переадресацию с помощью таймера в PHP?

благодаря

Вы можете заставить свой PHP-скрипт спать в течение 10 секунд,

sleep(10); 

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

 <meta http-equiv="refresh" content="10;url=http://google.com"> 

или javascript.

 setTimeout(function(){ window.location = "http://google.com"; }, 10000); 

Найдено в комментариях Даниила:

 header('Refresh: 10; URL=http://yoursite.com/page.php'); 

был бы идеальным для этой ситуации, поскольку он не требует Javascript или HTML.

header ('Refresh: 10; URL = http: //yoursite.com/page.php');

Поместите этот код PHP внутри раздела заголовка страницы, иначе это не сработает.

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

 <meta http-equiv="refresh" content="5;url=http://yourdomain.com"/> 

но если вам кажется, что это должно быть на PHP, вы можете сделать что-то вроде:

 <?php // wait 5 seconds and redirect :) echo "<meta http-equiv=\"refresh\" content=\"5;url=http://yourdomain.com\"/>"; ?> 

Это плохая идея, чтобы скрыть скрипт PHP. На самом деле это способ легко сделать DoS-сервер;) PHP-скрипт в памяти потребляет достаточно ресурсов, особенно если он работает как CGI.

PHP является, вероятно, неправильной технологией для этого, поскольку он работает на стороне сервера и не будет давать пользователям полезной обратной связи во время задержки.

Это не очень много кодирования в Javascript. См. Эту ссылку для очень простого способа реализовать это на своей странице.

 <?php header( "refresh:10; url=https://example.com/index.php" ); ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Redirect with countdown</title> <style type="text/css"> .myClass { font-family: verdana; font-size: 16px; font-weight: normal; color: black; line-height: 30px; } </style> </head> <body> <script type="text/javascript"> (function () { var timeLeft = 10, cinterval; var timeDec = function (){ timeLeft--; document.getElementById('countdown').innerHTML = timeLeft; if(timeLeft === 0){ clearInterval(cinterval); } }; cinterval = setInterval(timeDec, 1000); })(); </script> Redirecting in <span id="countdown">10</span> seconds. <br><br> <span class="myClass">Thank you! Your submission has been received!</span> </body> </html> 

После загрузки веб-страницы PHP больше не работает. Это означает, что вы не можете ничего сделать с PHP после загрузки страницы, если вы не используете что-то вроде AJAX (Javascript, вызывающего страницу PHP) для переноса данных на страницу. Это дает вам несколько методов для достижения желаемого 10-секундного ожидания при перенаправлении.

Во-первых, вы можете сказать своему сценарию спать () в течение 10 секунд. Это, однако, как упоминал Джонатан, означает, что вы будете выглядеть так, как будто ваша страница была очень медленной, только чтобы пользователь перенаправлял.

 sleep(10); 

Вы также можете просто добавить META-тег, который сообщает, что страница перенаправляет себя через 10 секунд. Это предпочтительный метод, поскольку он не затрагивает практически никакого другого кодирования, поскольку вы просто бросаете метку META, и вам вообще не нужно иметь дело с javascript.

 <meta http-equiv="refresh" content="10;url=http://example.com"/> 

Тогда у вас также может быть проблема с Javascript: location.href = "bleh"; после ожидания в течение 10 секунд.

Еще один способ, который стоит упомянуть, – отправить HTTP-заголовок местоположения с помощью функции header () PHP. Таким образом, если вам требуется надежное решение, позволяющее избегать javascript и мета-тегов, сохраняя при этом веб-приложение, которое может создавать iframe (или фрейм) и загружать там скрипт php, который содержит следующее:

 sleep(10); header("Location: http://my.redirect.location.com"); 

попробуйте этот скрипт, и это будет работа!

 <?php $msg ="This Is Just Checking"; header('Refresh: 5; URL=http://www.google.com.pk'); ?> <body> <?php echo $msg ?> </body> </html> 

Мне удалось сделать это с помощью простой функции на PHP

 function RedirectToURL($url, $waitmsg = 0.4) { header("Refresh:$waitmsg; URL= $url"); exit; } 

и вы звоните с вашего PHP для ожидания за 2 секунды до перенаправления. Обратите внимание, что $ waitmsg = 0.4 используется для определения значения по умолчанию.

 RedirectToURL("http://website.php", 2); 

Если вы хотите перенаправить после отправки формы, вы можете попробовать

 if(isset($_POST['submitted'])) { echo '<div style="text-align:center; margin-left:auto; margin-right:auto"><br><br>Sucess. Thanks for contribution.</div>'; RedirectToURL("http://thewebsiteilookforaftersubmit", 2); // I want to wait 2 seconds and not 0.4 as defined by default } 

Создайте файл, например: «go.php», с кодом

 <?php $site = $_GET['iam']; sleep(5); Header ("Location: ".$site.""); exit(); ?> <a href="http://whatever.com/go.php?iam=http://google.com">Link</a> 

или вроде этого, без «сна»

 <?php $site = $_GET['iam']; Header('HTTP/1.1 301 Moved Permanently'); Header("Refresh: 10; URL=".$site.""); exit(); ?> <a href="http://whatever.com/go.php?iam=http://google.com">Link</a>