1
0

More than 5 years have passed since last update.

PHPエラー Warning: Cannot modify header information - headers already がでます。

Last updated at Posted at 2012-03-16

エラーが出ます。(Warning: Cannot modify header information - headers already sent by
on line 16 とon line 28が 同様のエラーで出ます・・・。)
コードは下記になります

<?php
session_start();
require('dbconnect.php');

if (isset($_SESSION['id']) && $_SESSION['time'] + 3600 > time()) {
// ログインしている
$_SESSION['time'] = time();

$sql = sprintf('SELECT * FROM members WHERE id=%d',
    mysql_real_escape_string($_SESSION['id'])
);
$record = mysql_query($sql) or die(mysql_error());
$member = mysql_fetch_assoc($record);

} else {
// ログインしていない
header('Location:twitter.login.php');
}
// 投稿を記録する

if (!empty($_POST)) {
if ($_POST['message'] != '') {
$sql = sprintf('INSERT INTO posts SET member_id=%d, message="%s", reply_post_id=%d, created=NOW()',
mysql_real_escape_string($member['id']),
mysql_real_escape_string($_POST['message']),
mysql_real_escape_string($_POST['reply_post_id'])
);
mysql_query($sql) or die(mysql_error());
header('Location:twitter.index.php'); exit();}
}

// 投稿を取得する
$page = $_REQUEST['page'];
if ($page == '') {
$page = 1;
}
$page = max($page, 1);

// 最終ページを取得する
$sql = 'SELECT COUNT(*) AS cnt FROM posts';
$recordSet = mysql_query($sql);
$table = mysql_fetch_assoc($recordSet);
$maxPage = ceil($table['cnt'] / 5);
$page = min($page, $maxPage);

$start = ($page - 1) * 5;
$start = max(0, $start);

$sql = sprintf('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id ORDER BY p.created DESC LIMIT %s, 5',
$start
);
$posts = mysql_query($sql) or die(mysql_error());

// 返信の場合
if (isset($_REQUEST['res'])) {
$sql = sprintf('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id AND p.id=%d ORDER BY p.created DESC',
mysql_real_escape_string($_REQUEST['res'])
);
$record = mysql_query($sql) or die(mysql_error());
$table = mysql_fetch_assoc($record);
$message = '@' . $table['name'] . ' ' . $table['message'];
}

// htmlspecialcharsのショートカット
function h($value) {
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}

// 本文内のURLにリンクを設定します
function h($value) {
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "" class="autolink">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">




ひとこと掲示板




ひとこと掲示板







<?php echo htmlspecialchars($member['name']); ?>さん、メッセージをどうぞ


<?php echo h($message); ?>



<?php
while($post = mysql_fetch_assoc($posts)):
?>


(<?php echo h($post['name']); ?>)[">返信元のメッセージ
<?php
endif;
?>
<?php
if ($_SESSION['id'] == $post['member_id']):
?>
[ 1) { ?> 前のページへ 前のページへ 次のページへ 次のページへ



(C) H2O Space. MYCOM






このエラーは、header("Location:~"); の前に何かしら出力してしまうと
でてくるエラーらしいのですが、ちょっとわかりません。教えてくれないでしょうか?
1
0
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0