- ベストアンサー
PHPでアンケート記入ページ作成のエラーについて
- PHPを使用してアンケート記入ページを作成している際に、チェックボックスの選択項目が未選択の場合にエラーが表示されます。
- エラーメッセージ「Warning: implode() [function.implode]: Invalid arguments passed」は、空の配列にimplode関数を適用しようとしていることを示しています。
- 対処方法として、チェックボックスが未選択の場合には空の値を代入するか、isset関数を使用して配列が存在するかチェックすることが考えられます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
implodeの引数が配列でないためですから、考え方は3つ (1)配列だと宣言する (2)配列かどうかチェックして配列じゃない場合はダミーを返す (3)エラー時のimplodeを無視する <form> <input type="checkbox" name="media[]" value="Yahoo!・Googleなどの検索エンジンから">Yahoo!・Googleなどの検索エンジンから<br /> <input type="checkbox" name="media[]" value="店舗様からのご紹介">店舗様からのご紹介<br /> <input type="checkbox" name="media[]" value="お客様に勧められて">お客様に勧められて<br /> <input type="checkbox" name="media[]" value="雑誌・新聞などで">雑誌・新聞などで<br /> <input type="submit" value="go"> </form> NO.1 <?php print(implode(' / ',(array) $_REQUEST['media']));?> <br> NO.2 <?php print(implode(' / ',is_array($_REQUEST['media'])? $_REQUEST['media']:array()));?> <br> NO.3 <?php print(@implode(' / ',$_REQUEST['media']));?> <br> ただし、送られてきた(汚染されている可能性が高い)mediaをサニタイズ していないので、このままソースに組み込むのは問題外 きちんとした手順で安全な処理をしてあげてください
お礼
初歩的な質問で申し訳ないです。 「サニタイズ」とはどういう処理をいうのでしょうか。 ネットには「HTMLに埋め込むデータについて、そのデータを送出する情報処理システムの設計上の意図を超えて外部からの操作によって受け手に悪影響を及ぼす動作をさせないように編集してしまうこと。」ってな説明があるのですが。