Как я могу сделать перенаправление с 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>