【助けて!】PHPのforeach文についての質問です。 チェックボックスを複数選択しても、データーは一つしか受け取れません。 全てデーターが受け取れるようにしたいです。教えてください。。。

PHP304閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ThanksImg質問者からのお礼コメント

ご回答ありがとうございます。 昨夜は色々試行錯誤した結果、連想配列array(A=>B,C=>D.....)みたいなやり方に変えたら無事解決しました。ご回答ありがとうございました<(_ _)>

お礼日時:2015/11/26 10:00

その他の回答(2件)

3

>> あれこれ読む暇があったら、こんなところで質問してねーよ!!くだらん回答に頭に来るわ。 ソースコード書いてほしいいだけなら、金払え。

3人がナイス!しています

1

まず配列をしっかり勉強しましょう。 配列 (「PHP5.4ではこのようにも書けます」の書き方に慣れてください) http://www.php.net/manual/ja/language.types.array.php このデータ構造を理解していれば $escaped_data = []; foreach ($_POST['data'] as $i => $data) { $escaped_data[$i] = htmlspecialchars($data, ENT_QUOTES, 'UTF-8'); }; と代入することがすぐ思いつきますよね。配列はechoでは表示出来ないので、デバッグ用に確認したいなら var_dump($escaped_data); print_r($escaped_data); var_export($escaped_data); などの関数を利用する方法、あるいは echo implode(',', $escaped_data); のようにコンマで結合して文字列にする方法などが考えられます。 …しかしそもそも「あらかじめエスケープしたものを変数に格納しておく」というのは人為的ミスにより脆弱性を生みやすい、悪い方法です。昔はよくこんなコードが書かれていましたが、これから書くコードでは(HTMLをまるごと生成したいなどの目的がある場合を除き)絶対に使ってはいけません。 そもそも「あらかじめ変数に格納したい」と考えた理由は「htmlspecialcharsが長くて書くのが面倒」だからですよね?だったらラッパー関数を用意すればいいのです。 $_GET, $_POSTなどを受け取る際の処理 http://qiita.com/mpyw/items/2f9955db1c02eeef43ea 上の記事に関数「h」の定義及び使い方が書いてあるので読んでみてください。また $_POST['data'] をノーチェックで参照することにも実はエラーのリスクがあるので、「フィルタ関数の活用」に書いてある配列の処理もよく読んでください。

1人がナイス!しています