ユーザーがページを更新したときに、フォームが複数回送信されないようにしようとしています。これが私のコードです:
<form action="#" method="post">
<table border="0">
<tr>
<td id="tb-w_a"><p>Kategori</p></td>
<td>:</td>
<td>
<select name="kategori">
<?php
$query = "SELECT id, title FROM forum_kategorier";
$result = $mysqli->query($query);
while(list($id, $title) = $result->fetch_row())
{
echo "<option value=\"$id\">$title</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td id="tb-w_a"><p>Title</p></td>
<td>:</td>
<td><input type="text" name="title"></td>
</tr>
</table>
<textarea name="tekst_indhold" style="width:716px; height:170px;"></textarea><br />
<input type="hidden" value="<?php echo $_SERVER['PHP_SELF'] ?>" name="return_page">
<input type="submit" value="Opret indhold" name="godkendt">
</form>
<?php
if ($stmt = $mysqli->prepare('INSERT INTO `forum_traede` (`kategori_id`, `bruger_id`, `tekst`, `dato`, `titel`) VALUES (?, ?, ?, NOW(), ?)')) {
$stmt->bind_param('ssss', $katgori_id, $bruger_id, $tekst, $titel);
$katgori_id = $_POST["kategori"];
$bruger_id = $_SESSION["user_id"];
$tekst = $_POST["tekst_indhold"];
$titel = $_POST["title"];
$stmt->execute();
$stmt->close();
if (isset($_POST['return_page'])) {
$return_page = $_POST["return_page"];
} else {
header('Location: http://xxxx.dk/bruger-forum-opret/');
}
} else {
echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
}
?>
フォームを送信した後、次のエラーが表示されます。
警告: ヘッダー情報を変更できません - 78 行目の /home/jesperbo/public_html/xxx.dk/xxx.php で既に送信されたヘッダー (/home/jesperbo/public_html/xxx.dk/xxx.php:27 で開始された出力)
これはページの上部に表示されます。
また、フォーム処理コードを別の .php ファイルに移動しようとしましたが、次のエラーが発生します。
致命的なエラー: 2 行目の /home/jesperbo/public_html/xxx.dk/bruger_forum-indhold-godkendt.php の非オブジェクトに対するメンバー関数 prepare() の呼び出し
フォームの送信後にブラウザーを新しいページにリダイレクトするにはどうすればよいですか?