php GETを使用してURL内のIDを確認し、そのIDに一致するデータベースからtekstを取得します。これは、それを行うコードのスニペットです。
function getLyric() {
$id = (int)$_GET['id'];
$query = mysql_query("SELECT * FROM lyrics WHERE id = ".$id."") or die(mysql_error());
if ($row = mysql_fetch_assoc($query)) { ?>
<h1><?= $row['title']; ?> lyrics</h1>
<h2><?= $row['author']; ?></h2>
<pre><?= $row['lyrics']; ?></pre>
<?php }
else { header("HTTP/1.1 404 Not Found"); header("Status 404 Not Found"); }
}
そして、これは私がこの関数を呼び出すページがどのように見えるかです:
<?php include 'includes/header.php' ?>
<?php getLyric(); ?>
<?php include 'includes/footer.php' ?>
残念ながら、関数の404部分は機能しません。次の警告が表示されます。Warning: Cannot modify header information - headers already sent by [redacted] functions.php on line 61
。61行目は404部分です。"else {header}〜"。
Stackoverflowから、これは<html><head>
パーツがすでにページに出力されているためであることがわかりました。したがって、これを変更することはできません。正解です?
以前、else〜の部分がなかったとき、空白のページが表示されました。この場合、どうすれば404を適切に送信できますか?一番近いオプションがわからない場合はどうすればよいですか?