[PHP]: Neden sayfa yönlendirme değil mi?

3 Cevap

Aşağıdaki kodda, "başlık:" satırı sorun veriyor.

  $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 Cevap

Ben sahip olma eğilimi üç kullanışlı fonksiyonlar:

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']);
}

Yukarıdaki doğru zaten çıkış tamponları içiçe olabilir ama içerik zaten hakkında bir şey yapamaz kullanıcıya gönderildi başarısız olur ne işler. Ben tamponlar temizlemek için döngüler ile çöp aksi kodunuzu yukarıdaki edeceğiz kullanarak öneririm ve bu hiçbir nokta yoktur.

Sen başarısız oluyor neden olan, hatalı çıktı tamponlama kullanıyorsanız. Değiştir:

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

için:

ob_end_clean();
header("Location: personal_view.php");
exit;

You should put the ob_start at the very beginning of the script Also, i'm not sure about this, but i always seen the location header written in this way

header("Location: location.php");

Kolon sonrasında sermaye L bir boşlukla Yer ":"

Bu aptalca gelebilir, ama sen header() işlev çağrısı önce bir şey çıkış olmadığından emin misin? Bir komut başlangıç ​​etiketi <?php önce bir satır karakteri bulursa bile Apache yönlendirme olmaz.