重複の可能性:
PHP によって既に送信されたヘッダー
この問題は解決しましたが、原因がわからないため、本当に解決したかどうかはわかりません。
私の PHP サイトでは、ログインする前にホームページに最新のアクティビティが表示されます。最近、より多くの種類のアクティビティを含めるようにロジックを変更しました。動作しているように見えましたが、ログイン時に次のエラーが発生しました。
Warning: Cannot modify header information - headers already sent by
(output started at header.php:75)
in index.php on line 26
ホームページに表示されるアクティビティを取得する MySQL クエリで「LIMIT 10」を「LIMIT 9」に変更することで修正したため、このエラー メッセージは誤解を招くと思います。
public function getLatestActivity()
{
$sql = "SELECT 'Debate' AS Type, d.Debate_ID AS ID, CONCAT('debate.php?debate_id=', d.Debate_ID) AS URL, d.Title, d.Add_Date
FROM debates d
UNION SELECT 'Discussion' AS Type, d.Discussion_ID AS ID, CONCAT('discussion.php?discussion_id=', d.Discussion_ID) AS URL, d.Title, d.Add_Date
FROM discussions d
UNION SELECT 'Petition' AS Type, p.Petition_ID AS ID, CONCAT('petition.php?petition_id=', p.Petition_ID) AS URL, p.Petition_Title AS Title, p.Add_Date
FROM petitions p
ORDER BY Add_Date DESC
LIMIT 9";
try
{
$stmt = $this->_db->prepare($sql);
$stmt->execute();
$activity = array();
while ($row = $stmt->fetch())
{
$activity[] = '<span style="font-size: x-large"><strong>Latest activity</strong></span><br /><span style="font-size: large">' . $row['Type'] . ': <span style="color: #900"><a href="' . $row['URL'] . '" style="color: #900">' . $row['Title'] . '</a></span></span>';
}
$stmt->closeCursor();
return $activity;
}
catch(PDOException $e)
{
return FALSE;
}
}
そして、その関数によって返されたデータで私がしていることは次のとおりです。配列をループし、4 秒ごとに新しいアイテムを表示します。
<?php $latest_activity = $pdb->getLatestActivity(); ?>
<script type="text/javascript">
var activity = <?php echo json_encode($latest_activity); ?>;
var index = -1;
$(function()
{
getLatestActivity();
});
function getLatestActivity()
{
index = (index + 1) % activity.length;
var div = document.getElementById('divLatestActivity');
if (index < activity.length)
{
div.innerHTML = activity[index];
}
setTimeout("getLatestActivity()", 4000);
}
</script>
「LIMIT 10」を「LIMIT 9」に変更すると、「ヘッダー情報を変更できない」問題が修正されたのはなぜですか?