@ PHP

form:送信データの検証

サブミッションのテストのように隠れたパラメータを使うことで、汎用性を持たせることができます。

フォームサブミッションをチェックする隠れたパラメータを使う

_submit_check という hidden パラメータを使ってサブミットされたデータを検証します。

form_04.php

<?php
if (isset($_POST['_submit_check'])) {
    process_form();
} else {
    show_form();
}

function process_form() {
    print 'こんにちは、' . $_POST['my_name'] . 'さん。';
}

function show_form() {
    print <<<_HTML_
<form method="post" action="">
  <p>お名前:<input type="text" name="my_name"></p>
  <p><input type="submit" value="送信する"></p>
  <input type="hidden" name="_submit_check" value="1">
</form>
_HTML_;
}

フォームデータを検証する

validate_form() 関数は、$_POST[‘my_name’] が 3 文字未満の場合は false を返し、それ以外では true をかえします。ページの先頭では、validate_form() はフォームがサブミットされるときにがよびだされます。true を返すと、process_form() がよびだされます。それ以外は、show_form() がよびだされます。

form_04.php

<?php
if(isset($_POST['_submit_check'])) {
    if (validate_form()) {
        process_form();
    } else {
        show_form();
    }
} else {
    show_form();
}

function process_form() {
    print 'こんにちは、' . $_POST['my_name'] . 'さん。';
}

function show_form() {
    print<<<_HTML_
<form method="post" action="">
  <p>お名前:<input type="text" name="my_name"></p>
  <p><input type="submit" value="送信する"></p>
  <input type="hidden" name="_submit_check" value="1">
</form>
_HTML_;
}

function validate_form() {
    if (strlen($_POST['my_name']) < 6) {
        return false;
    } else {
        return true;
    }
}