Альтернатива «заголовку» для перенаправлений в PHP

Я работаю над проектом, и мне нужно запустить мою программу на чужом веб-сервере. Это довольно простая страница входа, с которой у меня возникла проблема. Программа работает правильно, если я запускаю ее через локальный хост через WAMP. Проблема, с которой я столкнулась, заключается в том, что часть перенаправления работает неправильно, она проверяет пользователя и запускает сеанс, но когда он получает перенаправление, ничего не происходит.

Я либо делаю что-то неправильно с моим синтаксисом, который, как мне кажется, маловероятен, поскольку он корректно работает с моим локальным хостом. Или, альтернативно, я думаю, что у сервера нет этой функции (не уверен, что можно выбрать, какие модули поддерживаются вашим сервером, хотя я уверен, что это возможно).

Я не знаю, имеет ли это значение, но они используют «cpanel», где я могу получить доступ к файлам и там все в одном каталоге, поэтому, если кто-то может сказать мне, где я ошибаюсь, или предложить альтернативу перенаправлению через «заголовок» «любая помощь была бы весьма признательна. Я огляделся, но кажется, что «заголовок» – стандартная рабочая лошадь.

Вот код, который у меня есть:

if( (!empty($_POST['username'])) && (!empty($_POST['password'])) ) { // username and password sent from Form $myusername = $_POST['username']; $mypassword = $_POST['password']; $sql="SELECT UserName FROM User WHERE UserName='$myusername' and Password='$mypassword'"; $result=mysql_query($sql); $row=mysql_fetch_array($result); //$active=$row['active']; $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row if($count==1) { echo "we made if to the if"; session_start(); session_register("myusername"); $_SESSION['login_user']=$myusername; echo "right b4 the re-direct"; header("location: UI.php"); exit; } else echo "Your user name/password was not correct pleast TRY AGAIN!!!"; } 

Обновление: в ответ на утверждения об эхо, возможно ли возникновение проблемы, я обрабатываю свою форму в том же файле и используя echo $ _SERVER ['PHP_SELF']

Из документов :

Помните, что header() должен быть вызван до отправки любого фактического результата либо с помощью обычных тегов HTML, пустых строк в файле, либо из PHP.

Ваше echo приводит к сбою переадресации, как и любой другой вывод, отправленный перед заголовком.

Я использую эту функцию для перенаправления …

Это работает во всех ситуациях. Даже если заголовки уже отправлены … или даже javascript отключен ..

 function redirect($url) { if (!headers_sent()) { header('Location: '.$url); exit; } else { echo '<script type="text/javascript">'; echo 'window.location.href="'.$url.'";'; echo '</script>'; echo '<noscript>'; echo '<meta http-equiv="refresh" content="0;url='.$url.'" />'; echo '</noscript>'; exit; } } 

Используя приведенный ниже код, мы перенаправляем страницу

 $page = $_SERVER['REQUEST_URI']; echo '<script type="text/javascript">'; echo 'window.location.href="'.$page.'";'; echo '</script>'; 

Вы не можете устанавливать заголовки после вывода некоторого текста, так что либо вы перемещаете вызов header перед echo (отлично в вашем случае), либо используете буферизацию вывода .

Перенаправление через заголовки является незаконным, если какой-либо контент прошел. Выньте все echo и это должно сработать. Если вы хотите, чтобы перед перенаправлением появилось сообщение, отображаемое пользователю, вам, скорее всего, придется это сделать с помощью JavaScript через location.href .

Вероятно, вы уже отправили контент в браузер до отправки заголовка php. Это может быть просто \ n после закрытия php-тега (?>)

Найти место, где генерируется нежелательный вывод, может быть затруднено для больших проектов или длинных строк классов, расширяющих друг друга. Чтобы найти проблему, вы можете сделать это:

  error_reporting(E_ALL); ini_set("display_errors", 1); header("Location: https://mydomain.com/myLoginAdress/"); die(); 

Строгая отчетность об ошибках будет вызывать строку и файл вывода.

 echo "<script>window.location.href='yourPage.php'</script>";