2011-08-07 121 views
8

我有一個顯示各種元素的頁面,即使它從數據庫調用的ID不存在或被刪除(這會引發各種醜陋的錯誤,隨着搜索引擎的繼續列出不存在的頁面)。PHP頁面重定向問題 - 無法修改標題信息

如果$ id不存在,您可以修改下面顯示的頁面代碼的第一部分以發送404(或至少包含404頭文件的projecterror.php)嗎?非常感謝!

<?php 
include_once("includes/linkmysql.php"); 
$adda=$_GET['a']; 
$cont=$_GET['c']; 
$select="SELECT * FROM projects where id='$id'"; 
$qselect = mysql_query($select); 
while ($row = mysql_fetch_array($qselect)) { 

以下修改爲友好地Matt Wilson通過 Vivek Goel導致有效條目正確顯示頁面,但不存在的網頁顯示下面這個修改後的代碼中的錯誤建議作爲原始評論的結果:

<?php 
include_once("includes/linkmysql.php"); 
$adda=$_GET['a']; 
$cont=$_GET['c']; 
$select="SELECT * FROM projects where id='$id'"; 
$qselect = mysql_query($select); 
if(mysql_num_rows($qselect) === 0) 
{ 
    header("HTTP/1.1 301 Moved Permanently"); 
    header('Location: http://examplesite.domain/errorpage') ; 
    exit; 
} 
while ($row = mysql_fetch_array($qselect)) { 

錯誤從上述修飾得到的:

Warning: Cannot modify header information - headers already sent by (output started at /home/website/public_html/header1.php:14) in /home/website/public_html/header1.php on line 22 
Warning: Cannot modify header information - headers already sent by (output started at /home/website/public_html/header1.php:14) in /home/website/public_html/header1.php on line 23 Lines 22 and 23 are the two header lines in your example above 

線22a nd 23是兩個標題行如下:

header("HTTP/1.1 301 Moved Permanently"); 
header('Location: http://examplesite.domain/errorpage') ; 

回答

25

我對你更容易的解決方案 - 這是簡單的!就在PHP源代碼的一開始添加此命令

ob_start(); 

這將啓動緩衝輸出,所以沒有什麼事是真的輸出,直到PHP腳本結束(或直到您刷新緩衝區手動) - 直到那個時候也沒有發送標題! 所以你不需要重新組織你的代碼,就在你的代碼的最開始加入這行就是這樣:-)

+1

偉大的工作 - 完全按照希望工作,非常感謝! – JoeW

+1

工作完美!謝謝! –

+1

偉大的解決方案! – Newbyman

2

在發送任何東西來查看(瀏覽器中的文本)之前。 檢查你的模型,如果id是有效的或不。 如果ID無效重定向到您的錯誤頁面

header("HTTP/1.1 301 Moved Permanently"); 
header('Location: http://examplesite.domain/errorpage') ; 
+0

您發送推杆頭之前一些文字。這些事情會在發送任何視圖之前發生。 (瀏覽器的任何東西) –

+0

雖然文字在哪裏?我無法解決這個問題...... – JoeW

+0

是您的完整頁面代碼嗎? 或部分代碼 –

0

沒有內容使用PHP頭之前應發送到瀏覽器()重定向。如果標題已經發送,您可以嘗試使用JavaScript重定向。

if(mysql_num_rows($qselect) === 0) 
{ 
    echo "<script type='text/javascript'>window.location.href='{http://examplesite.domain/errorpage}'</script>"; 
    exit; 
} 

但我不知道的JavaScript重定向是搜索引擎友好

相關問題