しらべものドット宇宙HTMLコーダーが必死こいて〇〇〇を目指すブログ

【PHP】HTMLフォームから受け取ったチェックボックスの複数選択を受け取る方法

参考サイト

フォームの構築方法 | mdn web docs
https://developer.mozilla.org/ja/docs/Learn/Forms/How_to_structure_a_web_form

【PHP・HTML】フォームのチェックボックスの値を取得する方法【配列】
https://deco8.net/php-html-form-checkbox-array/

結論(コード)

送信元のHTMLフォーム

  <form action="/result-page" method="post">
    <fieldset>
      <legend>好きな動物</legend>
      <p>
        <input type="checkbox" name="favoriteAnimal[]" id="cat" value="猫">
        <label for="cat">猫</label>
      </p>
      <p>
        <input type="checkbox" name="favoriteAnimal[]" id="dog" value="犬">
        <label for="dog">犬</label>
      </p>
      <p>
        <input type="checkbox" name="favoriteAnimal[]" id="rabbit" value="兎">
        <label for="rabbit">兎</label>
      </p>
    </fieldset>
    <button type="submit">送信する</button>
  </form>

受け取り先PHPファイル

  <?php
    $favorite_animal = $_POST['favoriteAnimal'];
  ?>
  <p>
  <?php
    if($favorite_animal) {
      foreach($favorite_animal as $favorite_animal_item) {
        echo '<span>' . htmlspecialchars($favorite_animal_item) . '</span>';
      }
    }
  ?>
  </p>

勘所

HTMLフォーム側では、input要素のtype属性でcheckboxを使うこと。

HTMLフォーム側のcheckboxでは、name属性に配列(favariteAnimal[])を渡すこと。

PHPファイル側では、$_POST[‘favoriteAnimal’] でPOSTリクエストを取得するんだけど、配列として扱うこと。

PHPファイル側では、POSTリクエストが空っぽだったことを考慮すること。

配列から取得したデータは必ずサニタイズして扱うこと。