[PHP]: Почему страница не перенаправляет? - PullRequest
0 голосов
/ 31 октября 2009

В следующем коде строка header: вызывает проблемы.

  $q = mysql_query($a) or die(mysql_error());
  $row = mysql_fetch_array($q);

      $ValidationResponse = "false";

      if ($_COOKIE['user_name'] != "")
        {
  while ($row) {
      if ($_COOKIE['user_name'] = $row['username'])
      {
              $ValidationResponse = "true";
              break;
          }
      }
        if ($ValidationResponse == "true")
        {
            ob_start();
            header("location:personal_view.php");
            ob_clean();
        }
        else
            echo "<script>alert('Invalid Login. Try Again.');</script>";
        }
          $_COOKIE['user_name'] = "";

Ответы [ 3 ]

2 голосов
/ 31 октября 2009

У меня есть три полезные функции:

function redirect($url) {
  while (ob_end_clean()) ; // do nothing
  header("Location: " + $url);
  exit;
}

function reload() {
  redirect($_SERVER['REQUEST_URI']);
}

function reloadQS() {
  redirect($_SERVER['REQUEST_URI'] + '?' + $_SERVER['QUERY_STRING']);
}

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

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

ob_start();
header("location:personal_view.php");
ob_clean();

до:

ob_end_clean();
header("Location: personal_view.php");
exit;
0 голосов
/ 31 октября 2009

Это может звучать глупо, но вы уверены, что ничего не выводите до вызова функции header()? Apache не будет перенаправлять, даже если он обнаружит символ новой строки перед начальным тегом <?php в скрипте.

0 голосов
/ 31 октября 2009

Вы должны поместить ob_start в самом начале скрипта Кроме того, я не уверен в этом, но я всегда видел заголовок местоположения, написанный таким образом

header("Location: location.php");

Местоположение с заглавной буквы L a после двоеточия ":"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...