• ベストアンサー

チェックボックスのvalue値のチェック

POSTされたチェックボックスの値の検証はどのようにしていますか? 私はチェックボックスの表示とともにvalue値をセッションに入れといて、送信先のページで、POSTされたvalue値がセッションに含まれていればOK、含まれていなければイタズラと判定しているのですが、 もっと簡単にすむ方法があれば教えていただきたいです。

  • PHP
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • twin_shu
  • ベストアンサー率100% (10/10)
回答No.1

「セッションと比較」という部分が、イマイチ状況が想像できません。 いろんな画面から同じパラメータ名で画面遷移する可能性がある、ということですか? POSTされたvalue値をそのまま使うような処理ならば、その方法でいいと思いますが、もし単にチェックされているかを見るだけ&チェックする値の範囲がわかるなら、無理にセッションを使わずに遷移先でチェックする値を記述してチェックする形でもいいと思います。 ただセッションだと、時間が経つと中身が消えるという懸念もあるので、それは使用する機能と相談ということで(^-^;

その他の回答 (1)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

> POSTされたチェックボックスの値の検証はどのようにしていますか? 私の場合は、POST先のスクリプトは決まっているので、 どのようなValue値が送られてくるのかは分かっています。 有効か否かは、その値の一致をPOST先のスクリプトで確認する だけです。セッションで管理しても信頼性は変わらないと思います。  SPAM等のイタズラを防止したいときは、CAPTCHAを使うか javascriptを使ってhidden属性のパラメータを返送させるなどの 難読化させる手を使っています。

dalianse
質問者

補足

なるほど、value値が固定ならセッションは要らないでしょうね。 私の場合はvlaue値にDBのテーブルからとってきたIDを埋め込んだりしてまして、それをPOST先でまたDBアクセスして存在するIDかどうか検証するのは面倒だなぁ…と思いまして。

関連するQ&A

  • チェックボックスから複数のvalueを取り出す

    HTMLフォームから、action="file.php"でデータの受け渡し→PHPで送られてきたvalueに応じて文章を出力、というプログラムを作っています。 例: グループAのラジオボタン1にチェック、送信 →グループAで押されたラジオボタンを送信されたvalueで判別、この場合はvalue==A →value==Aの場合に表示する文章を変数に受け渡し、その変数で表示 ラジオボタン、テキストボックスのvalueは$_POST['XXX']で取り出せたのですが、チェックボックスのデータだけが取り出せません。こちらの質問を検索したとき、多次元配列という言葉を見かけたのですが、いまいちよく分かりませんでした。 チェックボックスの複数のvalueで、上記の例のような動きを実現させるにはどうしたらいいでしょうか。どなたかご教授ください。

    • ベストアンサー
    • PHP
  • チェックボックスのチェック

    チェックボックスのチェックして送信した後のページから送信前のページに戻るとチェックボックスがチェックされた状態でブラウザで表示されます 1 2ここにチェックを入れて削除すると 3 1 3戻るを押した時にここにチェックが入ってしまいます javascriptで戻るボタンをつくっていますが他にチェックが残らずにに戻る方法はありますか? <input type=button value="戻る" onClick="history.back()"> よろしくお願いします

    • ベストアンサー
    • HTML
  • チェックボックスでのvalue値のスペースについて

    HTMLのformからチェックボックスで選択された値をCGIに飛ばしデータファイル(cgiファイル)に保存したいのですが、 チェックボックスのvalueを複数選択するとvalue値の間にスペースが入ってしまいます。 正確にはデータファイルをterapadで開こうとすると、 「NULL文字を含むファイルです。NULL文字は半角スペースへ変換しました。」というアラートがでてvalue値の間に半角スペースが入ってしまいます。 <チェックボックスのHTML> <input type="checkbox" name="■" value="jpn" />日本 <input type="checkbox" name="■" value="usa" />米国 ■にはデータを保存する項目の番号が入っており、一つのチェックボックスでは同じ番号が入ります。 例えば■が1なら1番に保存されます。 日本と米国を選択し送信するとデータファイル上では「jpn usa」となってしまいます。 NULL文字とはデータの値がない場合に返される値だという認識なのですが、全てのチェックボックスを選択していれば、 「jpnusa」という形で送信されるものではないのでしょうか? データを送信する際、このNULL文字による半角スペースをなくしたいのですが、何か方法はありますでしょうか? やはりCGIファイルを編集しなければ不可能なのでしょうか? ご教授よろしくお願いします。

    • ベストアンサー
    • CGI
  • チェックボックスのvalue値の取得について

    過去の質問にいくつか似たようなものはあったのですが、解決出来ませんでしたので質問させて頂きます。cgiでページを作成しています。今回処理したい内容は、一覧表の複数のチェックボックスから、オンになっているvalue値を取得し、その値に一致するナンバーを使って別のファイルのデータを削除するといった処理です。 == html一部内容 == <form action='update.cgi' method='POST'> <input type='checkbox' name='del_0' value='0'> <input type='checkbox' name='del_1' value='1'> <input type='checkbox' name='del_2' value='2'> <input type='submit' name='submit' value='削除'> </form> == update.cgiの一部内容 == for($loop=2,$loop>=0,$loop--) { $del[$loop]=$in{'del_$loop'}; } データ数が多いのでループさせてすべてのチェックボックスのvalue値を取得したいと思っています。チェックボックスがオフの場合の扱いがいまいち分かっていません。一つずつ例えば $del_1=$in{'del_1'}; と代入していくとonのもののみ取得できます。しかしループにするとonの値も変数に入りません。 どんな方法でも良いので、すっきりとチェックボックスのvalue値を変数に取得する方法を教えてください。お願い致します。M(v_v)M

    • ベストアンサー
    • Perl
  • チェックボックスの値取得

    以前、http://oshiete1.goo.ne.jp/qa2807598.htmlにて、 チェックボックスで配列を使わずに、チェックした値を取り出す方法を質問させていただいたものです。 教えていただいた方法で表示からメール送信、データベースへの格納まで上手く出来ていたのですが、仕様が変更になり、選択項目の量が増えてしまいました。(30~40になってしまいました・・・) 教えていただいた方法で何とか処理できるようなのですが、処理に時間がかかってしまっているような感じです。 <?PHP  session_start();  if (!empty($_POST['key01'])) {   $_SESSION['key'] = $_POST['key01'];  }  if (!empty($_POST['key02'])) {   if (empty($_SESSION['key'])) {    $_SESSION['key'] = $_POST['key02'];   }else{    $_SESSION['key'] .= "\t" . $_POST['key02'];   }  }  if (!empty($_POST['key03'])) {   if (empty($_SESSION['key'])) {    $_SESSION['key'] = $_POST['key03'];   }else{    $_SESSION['key'] .= "\t" . $_POST['key03'];   }  }    ・  ・  ・  ・ といった感じで、keyが30になるくらいまで続きます。 この後、確認メールの送信や、DB格納等の処理が続く予定ですが、どこかで処理が止まっているような感じで上手くいきません。 選択項目が多い場合のやり方は何かありますでしょうか?

    • ベストアンサー
    • PHP
  • チェックボックスのチェック済みを保持

    PHPを使ってフォームのチェックボックスの初期値にチェック済みでページを表示させ、そのチェックを外してサブミットし、同ページにリロードした際、セッションを使ってチェックを外した状態を保持しようとしているのですがうまくいきません。 チェックを外した状態でリロードしてもチェックがついた状態で表示されてしまいます、チェックを外した状態を保持表示させるにはどのように記述すればよいのでしょうか ご教授宜しくお願いします。 【PHP】 session_start(); $event = $_POST[ 'event' ]; $_SESSION[ 'event' ] = $event; if(!empty($event)){ $event_on = 'checked';} 【フォーム】 <form action="./" method="post" name="chbox"> <input type="checkbox" name="event" id="event" value="event" $event_on >イベント <button class="btn" onClick="boxCheck()" >表示</button> </form> 環境 php5.3 html5 javascriptのlocalStrage等を使ったほうが実装が現実的なら、検討いたします。

    • 締切済み
    • PHP
  • チェックボックスのvalueを、テキストボックスに挿入したい

    文末のように、4つのチェックボックスと1つのテキストボックスがあります。 (1) チェックボックスのチェックに伴い各チェックボックスのvalueを そのままテキストボックスの方に転記したいです。 (2) 逆に、チェックが外れたら、該当する valueをクリアしたいです。 (3) 鉄道~航空の一つ以上にチェックが入っている間、テキストボックス自体 をreadonlyにし、手動でいじれなくしたいです。 逆に、全てのチェックが解除されている間は、自由記述可能です。 (4) チェックする前に何らかの値が入っていたら、それらは強制クリアして、 valueの方を優先したいです。 イメージとして、「鉄道」と「航空」にチェックが入ったら、テキストボックスの値は 「新幹線 在来線 ヘリコプタ ジャンボ 」となります。 現在、テキストボックスはReadOnlyです。 そして「鉄道」の方だけチェックが解除されたら、テキストボックスの値は 「ヘリコプタ ジャンボ 」となります。テキストボックスは、まだReadOnlyです。 さらに「航空」のチェックも解除されたら、テキストボックスの値は 空白「」となります。テキストボックスのReadOnlyも解除されます。 <html> <head> </head> <body> <form method="post" action="samp.php" id="query" name="query"> <input type="checkbox" class="norimono" name="norimono[]" value="新幹線 在来線 ">鉄道 <input type="checkbox" class="norimono" name="norimono[]" value="軽 セダン クーペ ">四輪車 <input type="checkbox" class="norimono" name="norimono[]" value="小型 中型 大型 ">二輪車 <input type="checkbox" class="norimono" name="norimono[]" value="ヘリコプタ ジャンボ ">航空 <input value="" size="50" type="text" name="keyword"> </form> </body> </html>

  • チェックボックスのvalueをテキストに追加したい

    チェックボックスをオンにすると、そのオンした順番でそのチェックボックスのvalueをあるテキストの前に追加していきたいです。 下のように、テストという文字の前にチェックボックスのvalueを入力。 その際、チェックをオフにしたらテキストからも、そのvalueの値が消えるようにしたいのですが、 何か良い方法はありますか? 例えば、あいうの順番で選択すると、「あいうテスト」になって、いうあの順番で選択すると「いうあテスト」になり、 いのチェックボックスをオフにすると、「あうテスト」や「うあテスト」になるようにしたいです。 □ あ □ い □ う text1=あいうテスト

  • チェックボックスでの送信

    チェックボックスにチェックを入れて送信したときは1を チェックを入れずに送信したときは0をPHP側で受けたいのですが チェックを入れずに送信するとPHP側で$_POST['flg']を取得できないため、エラーになります。 方法はないでしょうか? <form action="test.php" method="post"> フラグ:<input type="checkbox" name="flg" value="1" /> </form> === test.php =========== <?php $flg = $_POST['flg']; print($flg); ?>

    • ベストアンサー
    • PHP
  • 複数のチェックボックスの確認

    初心者です。よろしくお願いします。 <form></form>の送信時の確認作業で困っています。 送信される前にチェックボックスにチェックがされていない場合エラーを出したいのですが、一つだった場合は if($_POST[xxx] == ""){ エラー } とすれば簡単にできるのですが、 チェックボックスが100個ほどあった場合どのような書き方をすれば良いのでしょうか。 100個の内一つでもチェックがされていればOKとしたいのです。nameの値は1から順に100まで振ってあります。 よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう