1

私は自分のウェブサイトにコメントブロックを書いています。コメントをファイルに保存し、コンテンツを Web ページに印刷します。しかし、問題は、ウェブページを更新すると、最後のコメントが 2 回表示されることです。

ここに私のコードがあります: 私は自分のウェブサイトにコメント ブロックを書いています。コメントをファイルに保存し、内容を印刷します

ウェブページ。しかし問題は、最後にウェブページを更新したときです

コメントが 2 回表示されます。

これが私のコードです:

<html>


<body>

<form   method="GET">

<textarea rows="15" cols="50" name="comments" >
</textarea>

<input type="submit" value="submit" >

</form>

</body>
</html>



<?php


if(!($_GET["comments"]==null)){
$comments = "Anonymous said:<br>".$_GET

["comments"]."<br><br><br><br>";
$file_comments = fopen("comments.txt","a");
fwrite($file_comments,$comments);
fclose($file_comments);

$_GET["comments"] = null;
$comments = null;

}


$comments = file_get_contents("comments.txt");
echo $comments;


$_GET["comments"] = null;
$comments = null;

?>
4

2 に答える 2

3

簡単な解決策は次のとおりです。

  1. フォームを保存した後、またはエラーが発生した場合は、フォームを同じページにリダイレクトしますがGET、uriの変数は。のようになりprocess.php?action=saveます。リダイレクトにはヘッダー機能を使用します。

  2. また、Cookieを使用して、フォームを送信する人のIPを保存し、フォームを再度送信できるように一定期間制限します。

于 2012-11-15T03:50:17.933 に答える
1

解決策は、同じページにリダイレクトすることです。たとえば、これは機能します。それを試してみてください。

<html>
<body>
<form method="POST">
  <textarea rows="15" cols="50" name="comments"></textarea>
  <input type="submit" value="submit" name="submit">
</form>
</body>
</html>

<?php
if ( isset( $_POST[ 'submit' ] ) ) {
  $TextArea      = $_POST[ "comments" ];
  $comments      = "Anonymous said:<br>" . $TextArea . "<br><br><br><br>\n\n"; // Add \n\n to write the comments in a different paragraph inside the file.
  $file_comments = file_put_contents( "comments.txt", $comments, FILE_APPEND );
  echo '<script type="text/javascript">window.location ="";</script>';
}
$comments = file_get_contents( "comments.txt" );
echo $comments;
?>

ただし、更新には時間がかかります。これを行う最善の方法は、PHP スクリプトを別のファイルに入れることです。

于 2012-11-15T05:34:54.447 に答える