掲示板での確認ページで掲示板に書き込みが重複してしまう問題の解決方法を教えてください

このQ&Aのポイント
  • 掲示板で確認画面を作り、書き込みをさせる際に重複を避ける方法を知りたいです。
  • 問題のソースコードを掲示し、解決策を教えていただけると助かります。
  • 原因となる箇所を特定し、修正方法を詳しく教えてください。
回答を見る
  • ベストアンサー

掲示板について

過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 掲示板で確認画面を作り確認して書込みをさせる掲示板を作っています。 確認ボタンを押して確認ページにいくと既に掲示板に書き込んであるらしく確認ページで確認すると2度、掲示板に書き込んでしまいます。 それを直すにはどうしたらよいでしょうか。 問題のソースは下です。 掲示板の書込みページ <html> <head> <title>一行掲示板</title> </head> <body> <h2>一行掲示板</h2> 書き込む内容を入力してください。<hr color="black"> <form name="form" action="./sample01.php" method="POST"> タイトル      <input type=text name="title" action="./sample01.php" size="30" method="POST"><br><br> 名前          <input type=text name="namae" action="./sample01.php" size="30" method="POST"><br><br> メッセージ  <textarea name="body" rows="5" cols="50"></textarea> <input name="write" type="submit" value="書込"> <input name="write" type="reset" value="リセット"><hr> </form> <?php $data = file("../php/test1.txt"); for($i=sizeof($data)-1;$i>=0;$i--){ print "タイトル.${i}:<br>\n名前.${i}:<br>\n記事NO.${i}:${data[$i]}<br>\n<hr>"; } ?> <br> <a href="../phpcollect/index.html">トップページへ</a> </body> </html> 確認ページ <?php $title = $_REQUEST["title"]; $title = $title."\n"; $namae = $_REQUEST["namae"]; $namae = $namae."\n"; $body = $_REQUEST["body"]; $body = $body."\n"; ?><html> <head> <title>Sample01</title> </head> <body> <?php $fp = fopen("../php/test1.txt","a"); fwrite($fp,$body); fclose($fp); echo "書込み確認画面", "<a href=\"./form.php\"></a>"; ?> <br><br> タイトル <table border="1" width="200" ><tr><td> <?= $title; ?> </td></tr></table> </font><br><br> 名前 <table border="1" width="200" ><tr><td> <?= $namae ?> </td></tr></table> </font><br><br> メッセージ <table border="1" width="350" ><tr><td> <?= $body; ?> </td></tr></table><br><br> <form name="form" action="./sample01.php" method="POST"> <input type="submit" value="書込"> <input name="reset" type="reset" value="リセット"> <hr color="black" width="44%" align="left"> </form> <a href="form.php">掲示板へ</a> </body> </html> わかる方おりましたらご教授お願いします。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

正しい方法は分かりませんが 私は、データファイル(test1.txt)を開いて 直前に書いたデータと比較して、同じなら 何もしないという処理を追加しました。

suzuka790
質問者

お礼

無事解決いたしました。 ありがとうございました。

関連するQ&A

  • 戻りボタンについて

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 掲示板のページを戻る(やり直しが出来る)ボタンをつくりたいのですが、戻るとページの内容が既に書き込まれてしまい、戻りボタンが機能しません。機能させるにはどうしたらよいでしょうか? ソースは以下です。 <?php $title = $_REQUEST["title"]; $title = str_replace("\t", " ", $title); $namae = $_REQUEST["namae"]; $namae = str_replace("\t", " ", $namae); $body = $_REQUEST["body"]; $body = str_replace("\t", " ", $body); ?><html> <head> <title>Sample01</title> </head> <body> <?php $log = $title . "\t" . $namae . "\t" . $body . "\n"; $fp = fopen("../php/test1.txt","a"); fwrite($fp,$log); fclose($fp); echo "書込み確認画面", "<a href=\"./form.php\"></a>"; ?> <br><br> タイトル <table border="1" width="200" ><tr><td> <?= $title; ?> </td></tr></table> </font><br><br> 名前 <table border="1" width="200" ><tr><td> <?= $namae ?> </td></tr></table> </font><br><br> メッセージ <table border="1" width="350" ><tr><td> <?= $body; ?> </td></tr></table><br><br> <form name="form" action="./form.php" method="POST"> <input name="write" type="submit" value="書込"> </form> <form> <input type=button value="戻る" onClick='history.back();'> </form> <hr color="black" width="44%" align="left"> </form> <a href="form.php">掲示板へ</a> </body> </html> わかる方おりましたらご教授お願いします。

    • ベストアンサー
    • PHP
  • 掲示板で確認画面からデータを送るには

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 掲示板で確認画面から掲示板へ書込みのデータを送りたいのですが、なかなかうまくいきません。 以下が掲示板のソースと確認画面のソースです。 「掲示板のページ」 <?php if ($_POST["write"] == "書込") { $log = $title . "\t" . $namae . "\t" . $body . "\n"; $fp = fopen("../php/test1.txt","a"); fwrite($fp,$log); fclose($fp); } $data = file("../php/test1.txt"); for($i=sizeof($data)-1;$i>=0;$i--){ list($title, $namae, $body) = explode("\t", $data[$i]); print <<<eof タイトル:{$title}<br><br> 名前:{$namae}<br><br> 記事NO.${i}:{$body}<br> <hr> eof; } ?> 「確認のページ」 <form name="form" action="./form.php" method="POST"> <input type="hidden" VALUE="$title,$namae,$body" > <input name="write" type="submit" value="書込"> </form> おわかりの方いましたらご教授お願いします。

    • 締切済み
    • PHP
  • phpの掲示板で新しい順に表示したい

    php初心者です。 phpで掲示板を作っています。 新しい順に表示したいのですが、やり方がわかりません。 古い順に表示するやり方はわかるのですが、どうやったらよいでしょうか。 古い順のソースです <html> <head> <title>一行掲示板</title> </head> <body> <h2>一行掲示板</h2> 書き込む内容を入力してください。<hr color="black"> <form name="form" action="./sample01.php" method="POST"> タイトル      <input type=text name="title" action="./sample01.php" size="30" method="POST"><br><br> 名前          <input type=text name="namae" action="./sample01.php" size="30" method="POST"><br><br> メッセージ  <textarea name="body" rows="5" cols="50"></textarea> <input name="write" type="submit" value="書込"> <input name="write" type="reset" value="リセット"><hr> </form> <?php $data = file("../php/test1.txt"); for($i=0; $i<sizeof($data); $i++){ print "タイトル.${i}:<br>\n名前.${i}:<br>\n記事NO.${i}:${data[$i]}<br>\n<hr>"; } ?> <br> <a href="../phpcollect/index.html">トップページへ</a> </body> </html> どうかわかる方おりましたらご教授お願いします。

    • 締切済み
    • PHP
  • データの受け渡し(表内に収めたいのですが)

    phpで表から表へデータを飛ばし表示させようとしています。 例 ___________________ |_A___|__B___|___C__| |_____|______|_______| ↓ ___________________ |_A___|__B___|___C__| |_____|______|_______| 例えば、下記のようなソースsample.php→sample4.php を作りました。 データは飛ばすことが出来ますが、表内に収める場合 どのようにすればよいですか? ちなみに、YPHPSampleは、ソースがおいてあるディレクトリです。 (1)sample.php <html> <head> <title>サンプル</title> <head> <body> <table border="2"> <tr bgcolor="#AAAAAA"> <td><th>都市名</th></td> <td><th>最高気温</th></td> <td><th>最低気温</th></td> </tr> <tr bgcolor="#AAAAAA"> <td><th> <form action="http://localhost/YPHPSample/sample4.php" method="post"> <input type="text" name="aut"/> </th></td> <td><th> <form action="http://localhost/YPHPSample/sample4.php" method="post"> <input type="text" name="soft"/> </th></td> <td><th> <form action="http://localhost/YPHPSample/sample4.php" method="post"> <input type="text" name="hard"/> </th></td> </tr> </table> <input type="submit" value="送信"/> </form> </body> </html> (2)sample4.php <html> <head> <title>サンプル</title> </head> <body> <table border="2"> <tr bgcolor="#AAAAAA"> <td><th>都市名</th></td> <td><th>最高気温</th></td> <td><th>最低気温</th></td> </tr> </table> <?php if($_POST["aut"]) print"{$_POST["aut"]}<br/>\n"; if($_POST["soft"]) print"{$_POST["soft"]}<br/>\n"; if($_POST["hard"]) print"{$_POST["hard"]}<br/>\n"; ?> </body> </html>

    • 締切済み
    • PHP
  • テキストBOXを繰り返し処理にしたい。(若葉マーク)

    3列、10行の表を作成したいと思います。 それぞれの、セルの値をPOSTで飛ばしたいのですが 下記、ソースでは、表自体が表示されません。 どなたか、方法教えていただけませんか? <html> <head> <title>サンプル</title> </head> <body> <table border="2"> <tr bgcolor="#AAAAAA"> <td><th>都市名</th></td> <td><th>最高気温</th></td> <td><th>最低気温</th></td> </tr> <script type="text/javascript"> for($i=1;$i<10;$i++){ <tr bgcolor="#AAAAAA"> <td><th> <form action="http://localhost/YPHPSample/sample4.php" method="post"> <input type="text" name="aut[$i]"/> </th></td> <td><th> <form action="http://localhost/YPHPSample/sample4.php" method="post"> <input type="text" name="soft[$i]"/> </th></td> <td><th> <form action="http://localhost/YPHPSample/sample4.php" method="post"> <input type="text" name="hard[$i]"/> </th></td> </tr> } </script> </table> <input type="submit" value="送信"/> </form> </body> </html>

    • 締切済み
    • PHP
  • ボタンを押下するとダウンロードのダイアログが表示されてしまいます…

    ご教授お願いします。 PC&PHP初心者です。 参考書に沿ってPHPの勉強をしているのですが、以下のプログラムが思うように動作しません。 ***************************************************** addressbook.html <html> <head><title>addressinput.html</title></head> <body> 入力フォーム <form action = "addressinput.php" method = "post"> <table border = "1"> <tr> <td>名前</td> <td><input type = "text" name = "name"></td> </tr> <tr> <td colspan = "2" align = "center"> <input type = "submit" value = "入力"></td> </tr> </table> </form> </body> </html> ***************************************************** addressinput.php <html> <head><title>addressinput.php</title></head> <body> <?php $name = $_POST[ 'name' ]; print( "次のデータを受け取りました。<br />" ); print( "名前:" . htmlspecialchars($name)."<br />" ); ?> </body> </html> ***************************************************** addressbook.htmlにある「入力」ボタンを押下するとaddressinput.phpに入力したデータが渡されて、入力したデータを表示させるというものですが、何故かボタンを押下するとダウンロードのダイアログが表示されてしまい困っています。 これってなにか設定が必要なのでしょうか?

    • ベストアンサー
    • PHP
  • フォームで確認画面を表示させるにはどうすればいいのでしょうか?

    質問をご覧下さりありがとうございます。 <form action="18add.php" method="POST" name="form1"> <table> <tr> <th>番号(半角数字)</th> <td><input type="text" name="number" value=""></td> </tr> <tr> <th>名前</th> <td><input type="text" name="name" value=""></td> </tr> <tr> <td><input type="hidden" name="mode" value="add"></td> <td><input type="submit" name="submit" value="追加"></td> </tr> </table> </form> htmlでこんなフォームを作り、phpで $table_body = ""; if( isset( $_POST['mode'] ) ){ $mode = $_POST['mode']; $number = $_POST['number']; $name =$_POST['name']; } else{ $mode = ""; $number = ""; $name = ""; } if( $mode == "add" ){ $table_body .= "<tr>"; $table_body .= "<td>"; $table_body .= $number; $table_body .= "</td>"; $table_body .= "<td>"; $table_body .= mb_convert_encoding( $name, "SJIS", "EUC-JP" ); $table_body .= "</td>"; $table_body .= "</tr>"; } で一度入力された情報を確認する画面を作りたいのですが うまくいきません。 初心者なのでわかりやすく説明をつけてくださると大変助かります。

    • 締切済み
    • PHP
  • forで作成したフォームの値を更にPHPへ渡して表示する方法

    初心者です。 現在、PHPでforを利用し、繰り返しフォームを表示 させた後、その表示されたフォームへ入力をし、更に 違うPHPで入力された値を出力させようとしているのですが、 最終の出力が出来ずに悩んでおります。 繰り返しでフォームを作成するまでは出来たのですが、 どなたか御助力頂けたら助かります。 ---------------------------------------------------- <form.html> <html> <head> <title>it1</title> </head> <body> <form name="form" action="./it.php" method="POST"> <b>ラジオ選択<br> <input name="machine" type="radio" value="24">24<br> <input name="machine" type="radio" value="48">48<br> <input name="machine" type="radio" value="24">50</b><br><br> </body> <input type="submit" name="Submit" value="設定"> </form> </html> ------------------------------------------------------ <it.php> <?php $a = $_REQUEST["machine"]; ?> <html> <body> <p>入力テキストボックス表示</p> <?php for ($c=0; $c<$a; $c++){ $var[$c] += $var[$c]; $dest[$c] += $dest[$c]; $no[$c] += $c+1; } ?> <table> <tr> <td><center> <form name="form" action="./it2.php" method="POST"> <td> <center> <b>vlan</b><br> <?php for ($i=0; $i<count($var); $i++) { "<form name="form" action="./it2.php" method="POST">" print("fa0/${no[$i]}<input type=\"text\" name=\"${var[$i]}\" size=\"3\" maxlength=\"3\"><br>\n"); } ?> </td> <td> <b>description</b><br> <?php for ($i=0; $i<count($dest); $i++) { print("<input type=\"text\" name=\"${dest[$i]}\" size=\"15\" maxlength=\"15\"><br>\n"); } ?> </td> </tr> </table> <input type="submit" name="Submit" value="設定"> </form> </body> </html> -------------------------------------------------------- 以降の出力ソースに関して、難儀中。

    • ベストアンサー
    • PHP
  • JSPで個人データを入力、出力

    <html> <head><title>Costomer</head></title> <body bgcolor="white"> <div align="center"> <%@ include file="header.html"%> <form method="POST"action="customer.jsp"> <TABLE> <TR> <TD>Name</TD> <TD><input type="text" name="name"></TD> </TR><br> <TR> <TD>Mail Address</TD> <TD><input type="text" name="mail address"></TD> </TR><br> <TR> <TD>TEL No</TD> <TD><input type="text" name="tel no"></TD> </TR><br> </TABLE> <br> <input type="submit"value="Submit"> <input type="reset"value="Cancel"> </form> <jsp:include page="post-response.jsp" flush ="true" /> <%@ include file="copyright.html"%> </div> </body> </html> …………………………………………………………………………………… <html> <head><title>Post-Response</head></title> <body bgcolor="white"> <div align="center"> <TABLE BORDER="1"> <TR> <TD>Name</TD> <TD></TD> </TR><br> <TR> <TD>Mail Address</TD> <TD></TD> </TR><br> <TR> <TD>TEL No</TD> <TD></TD> </TR><br> </TABLE> <form method="GET"action="customer.jsp"> <input type="reset"value="Clear"> <br> </form> </div> </body> </html> …………………………………………………………………………………… 上のcustomer.jspにName,Mail Adress,Tel no,を入力し、打ち込んだものを下のpost-response.jspに出力したいのですがどのように出力したらよいのかわかりません!何度やってもエラーが出てしまいます。 教えてください!!お願いします! ・上のcustomer.jsp内の<%@ include file="header.html"%>と<%@ include file="copyright.html"%>無視してください!

  • Servletへフォームから配列を送信できますか?

    PHPでは、下記のようにHTMLを記述することで、 フォーム内容を配列で送信及び取得できるのですが、 Servletで同じ事をするにはどうすれば良いでしょうか? <HTML><title>一括更新</title><BODY> <form action=./test.php method=post> <table> <tr><td> <input type=input name=a[0] value="1"> <input type=input name=b[0] value="2"> </td></tr> <tr><td> <input type=input name=a[1] value="1"> <input type=input name=b[1] value="2"> </td></tr> </table> <input type="submit" value="更新"> </form></BODY></HTML>