Ссылка для проверки PHP на следующую страницу - PullRequest
2 голосов
/ 06 ноября 2011

У меня есть страница формы HTML, которую я отправляю себе, чтобы выполнить некоторую валидацию PHP.

После того, как публикация вернулась к себе и проверка прошла, я направляю страницу к следующей ссылке, используя строку:

echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.website.com/planning/page2.php\">"; 

При использовании этого, однако, страница обновляется сама перед переходом на следующую страницу (page2.php), это означает, что страница мигает во время выполнения проверки, а затем перенаправляет.Как я могу сделать так, чтобы это не было 'flash' при выполнении проверки?

моя проверка такова:

//validation
if(isset($_POST['loadid'])){
$errors = array();
$load=$_POST['loadid'];

if (empty($load)){
$errors[]='<strong><font color=red>Please select a load number</font></strong>';
}


if (!empty($errors)) {
foreach ($errors as $error) {
    echo $error."<br>";
    }}
    else {
        echo "Population accurate";
        echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.website.com/planning/page2.php\">"; 
        $_SESSION['sessionloadid']=$_POST['loadid'];

}
}

Спасибо за помощь, Райан Смит

1 Ответ

4 голосов
/ 06 ноября 2011

Вспышка получается, потому что вы делаете перенаправление "в браузере". Это означает, что браузер должен загрузить ваш HTML, а затем уже начинает отображать его.

Затем браузер видит, что он должен перенаправить, сбрасывает окно (флэш) и выполняет перенаправление.

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

$_SESSION['sessionloadid']=$_POST['loadid'];
$uri = 'http://www.website.com/planning/page2.php';
header('Location: '.$uri);
printf('<a href="%s">Moved.</a>', $uri);
exit;

вместо:

echo "Population accurate";
echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.website.com/planning/page2.php\">"; 
$_SESSION['sessionloadid']=$_POST['loadid'];

Браузер обрабатывает заголовки HTTP перед началом отображения страницы, затем видит перенаправление и перенаправления (часто автоматически). Если браузер не перенаправляет автоматически, короткое «Перемещено». сообщение отображается, поэтому пользователь может перейти к новому местоположению, щелкнув ссылку.

См. Также функцию http_redirect, которая предлагает больше для перенаправления с помощью PHP. Если у вас нет доступного расширения, в документации по функциям показано несколько моментов, о которых следует позаботиться при перенаправлении с помощью PHP:

  • Использование абсолютного URI.
  • Предложение тела HTTP.
  • Указание кода перенаправления (301, 302, ...).
  • Выход из скрипта.

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

...