2011-08-07 46 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)) { 

など親切に Vivek Goel正しくページを示す有効なエントリで結果が、存在しないページこの修正されたコードの下にエラー表示されていることにより、元のコメントの結果としてMatt Wilsonによって提案された以下の修正:

を上記の修飾から生じる
<?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 

線22 nd 23は、次の2つのヘッダー行です。

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

答えて

25

有効なリダイレクトでない場合、私はあなたのためにはるかに簡単に解決策を持っている - それは簡単です!ただ非常にPHPのソースのを開始する時に、このコマンドを追加:PHPスクリプトが終了するまで何が本当に出力されないように

ob_start(); 

これは、出力をバッファリングを開始します(または手動でバッファをフラッシュするまで) - また、その時間までヘッダーは送信されません! だから、あなたは、あなたのコードを再編成する必要はありませんちょうどあなたのコードの先頭に次の行を追加し、それが

+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のリダイレクトを使用すると、ヘッダーを入れる前に、いくつかのテキストを送信している

関連する問題