アクセス向上大失敗 www.igros.net
Last updated 2004/8/16
コメントバック 対応

書込みの判定(submit) -簡単PHP掲示板講座 STEP6-

[PR]特集 Amazon.co.jp レコメンドコンテンツ



STEP6
・新規書込みがあったのか?それとも呼出されただけなのか?判定を行い処理を振り分ける
  [STEP5の問題点] 掲示板にアクセスしただけでエラー表示になってしまう。
  [要点] 送信ボタンがクリックされたのか否かを判定します。
  [決め事] 送信ボタンの値を$submitと言う任意の変数に格納して処理するものとします。
参考ソースプログラム
解説
<?php
# プログラム bbs.php STEP6
 $submit = $HTTP_POST_VARS["SUBMIT"];
 if ($submit=="送信") {
  $name = $HTTP_POST_VARS["NAME"];
  $mail = $HTTP_POST_VARS["MAIL"];
  $body = $HTTP_POST_VARS["BODY"];
  if ($name=="" or $body=="") {
   echo '<font color="#FF000">必須項目入力エラー</font><br>';
   echo 'お名前と本文は必ず入力してください<br>';
   echo '<a href="javascript:history.back()">戻る</a>';
   exit;
  }
  $body = str_replace("\r\n", "<br>", $body);
 }
 echo '
  <html>
  <head>
  <title>PHP-BBS</title>
  </head>
  <body>
  <h1>PHP-BBS</h1>
  STEP6<br>
  <form method="post" action="bbs.php" accept-charset="x-euc-jp">
  お名前 <input type="text" size="16" maxlength="30" name="NAME">
  メール <input type="text" size="30" maxlength="50" name="MAIL"><br>
  本文<br>
  <textarea rows="10" cols="70" wrap="soft" name="BODY"></textarea><br>
  <input type="submit" name="SUBMIT" value="送信">
  </form>
 ';
 if ($mail=="") { echo "お名前:$name<br>"; }
 else { echo "お名前:<a href=\"mailto:$mail\">$name</a><br>"; }
 echo "本文:$body<br>";
 echo '</body></html>';
?>
$HTTP_POST_VARS["SUBMIT"];の"SUBMIT"はHTMLフォームで作成した時のname="任意の名前"です。
もし、[送信]ボタンがクリックされ、このプログラムが呼出された場合、<input type="submit" name="SUBMIT" value="送信">のように、value="送信"と強制的に値をセットしているので、"送信"と言う文字列が必ず引渡されます。
つまり、新規書込みがあった場合、$submitは"送信"と言う値を持つことになります。
それ以外の値を持つ場合、[送信]ボタンがクリックされず呼出された場合と考えられます。
if ($submit=="送信") {   は
[送信]ボタンが押されたかどうかを判定し、押された場合のみ{ }の処理を行います。
上記以外のケースでは{ }の処理はスキップされます。
では質問です!
[送信]ボタン名を[書きこむ]に変更した場合、新規書込みかどうかをどうやって判定しますか?
答えは最後に...

ここまでのサンプル check!

次はいよいよファイル処理を追加します。
投稿されたデータをファイルに記録し消えないよう対応します。

答え:if ($submit=="書きこむ") {処理;}


<<<< トップ <<< テーマトップ << サブテーマトップ < 前頁次頁 >

www.igros.net
[PR]特集 Amazon.co.jp レコメンドコンテンツ



Copyright(C) アクセス向上大失敗 All Rights Reservd.
version2.0