• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのアンケート記入ページを作りたいのですが。。。)

PHPでアンケート記入ページ作成のエラーについて

このQ&Aのポイント
  • PHPを使用してアンケート記入ページを作成している際に、チェックボックスの選択項目が未選択の場合にエラーが表示されます。
  • エラーメッセージ「Warning: implode() [function.implode]: Invalid arguments passed」は、空の配列にimplode関数を適用しようとしていることを示しています。
  • 対処方法として、チェックボックスが未選択の場合には空の値を代入するか、isset関数を使用して配列が存在するかチェックすることが考えられます。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

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をサニタイズ していないので、このままソースに組み込むのは問題外 きちんとした手順で安全な処理をしてあげてください

webama_fk
質問者

お礼

初歩的な質問で申し訳ないです。 「サニタイズ」とはどういう処理をいうのでしょうか。 ネットには「HTMLに埋め込むデータについて、そのデータを送出する情報処理システムの設計上の意図を超えて外部からの操作によって受け手に悪影響を及ぼす動作をさせないように編集してしまうこと。」ってな説明があるのですが。

その他の回答 (2)

  • ignite20
  • ベストアンサー率50% (1/2)
回答No.3

No.1の補足ですが、request.phpの323行目付近にあると思われるimplodeに@を付ければとりあえずWarningは消えると思います。 #問題を解決したわけではなく、問題から逃げただけですが。

参考URL:
http://php.net/manual/ja/language.operators.errorcontrol.php
  • ignite20
  • ベストアンサー率50% (1/2)
回答No.1

Warningが出るだけで動作に問題がないのなら関数の前に@付けてエラー無視しちゃうのも手です。 @implode とか。

webama_fk
質問者

お礼

これはimplodeが使われている箇所すべてに@マークを入れればよいのでしょうか?

関連するQ&A

専門家に質問してみよう