PHP: Невозможно перенаправить на другую страницу при условии

#php

Вопрос:

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

 function redirect($url) {  ob_start();  header('Location: '.$url);  ob_end_flush();  die(); }  

Затем, в начале страницы PHP, я проверяю значение var. Если это превышает пороговое значение, я перенаправляю на другую страницу:

 lt;?php  . . . if (var gt;= 100) {  redirect('error1.html'); } ?gt;  lt;htmlgt;  lt;bodygt;  lt;!-- HTML page here --gt;  lt;/bodygt; lt;/htmlgt;  

Хотя var превышает 100 (он печатается на экране), перенаправление не происходит. Есть идеи, почему? Это потому, что на странице есть HTML-контент?

Комментарии:

1. Где определена ваша функция «перенаправление»?

2. Обратите внимание, что var это отличается от $var . Какой из них вы действительно используете? Пожалуйста, попробуйте var_dump(var); (в случае, если вы используете var ), чтобы узнать, что это за значение.

3. Вы не должны ничего отправлять в браузер до того, как выполните перенаправление с помощью заголовка(). Если вам это нужно, вы можете использовать ob_start() в начале вашего сценария или, по крайней мере, перед отправкой любого вывода и выполнить ob_end_flush() в конце. Эти функции непригодны для использования так, как вы используете их внутри функции перенаправления(9.

Ответ №1:

вы не можете использовать «если (var…)», потому что var является защищенным термином.

Я не знаю, является ли это примером, но правильный способ делать то, что вам нравится, должен быть:

 function redirect( $code, $url ) {   // Test code  if( $code gt;= 100 ){    // If you will redirect you don't need OB function  // ob_start(); ** removed    // Redirect  header('Location: '.$url);    // ob_end_flush(); ** removed  exit(); // better use function exit then die    } // end if test code  }   ...   lt;?PHP     redirect( $code, 'error1.html');  ?gt; ´´´  Hope help you ! ;)  

Комментарии:

1. Спасибо! это сработало! честно говоря, я не использовал «var» в качестве переменной. Я только что создал простой фрагмент кода. Тем не менее, это сработало с вашей помощью.

2. Идеальный. Рад вам помочь 🙂