PHPで入力値を検査する

(1/6)
PHP のようなサーバサイド・プログラミングでは、クライアントから入力されたデータに対して何か処理を行う場面が多い。そこで、入力されたデータが正しいかどうか、事前にチェックする作業が不可避である。入力値が予想外の値であったり、故意にプログラムを破壊するための値を入力される可能性もあるからだ。
悪意のある入力への対策については、「PHP とクロスサイトスクリプティング対策」などで述べていくことにするが、ここでは、入力値が正常な範囲にあるかどうかをチェックする方法を紹介する。
通常、入力エラーチェックは JavaScript などクライアントサイドで行うことが多い。ここでは isleap.php と同様、1つの PHP プログラムの中で、入力、エラーチェック、結果出力を行う方法を紹介する。

入力テキストの長さを検査するサンプル・プログラム

まずは PHP のソースプログラムをダウンロードしてほしい。
解凍できたら、input1.php というファイル名で Apache の仮想ディレクトリが通っているディレクトリにセーブすること。
例によって、画面に表示している行番号は説明の便宜上のものであり、ソースプログラムには含まれていない。

0001: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
0002:  "http://www.w3.org/TR/html4/loose.dtd">
0003: <html lang="ja">
0004: <head>
0005: <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
0006: </head>
0007: <body>
0008: <?php
0009: // ここからPHPプログラム ===================================================
0010: /**input1.php
0011:  * 入力テキストのエラーチェック(長さ)
0012:  * @copyright (c)studio pahoo
0013:  * @author     パパぱふぅ
0014:  * @version     1.0  2004/10/11
0015: */
0016: $min_length = 1;         //最小長
0017: $max_length = 10;            //最大長
0018: 
0019: //メインプログラム
0020: if (isset($_POST["text"]) == FALSE)     $text = "";     //初回起動時
0021: else                                    $text = $_POST["text"];
0022: 
0023: $l = mb_strwidth($text);     //テキストの長さ
0024: //正常なら入力テキストを表示して終了
0025: if ($l >= $min_length && $l <= $max_length) {
0026:     print "入力されたテキストは>" . $_POST["text"];
0027: 
0028: //異常なら再入力を促す
0029: else {
0030:     if (strlen($text) < $min_length)        $msg = "テキストを入力して下さい>";
0031:     else if (strlen($text) > $max_length)   $msg = "テキストが長すぎます>";
0032: 
0033:     print "<form action=\"input1.php\" method=\"post\">\n";
0034:     print $msg;
0035:     print "<input type=\"text\" size=\"20\" name=\"text\" value=\"\n"
0036:             . $text . "\">\n";
0037:     print "<input type=\"submit\" value=\"実行\">\n";
0038:     print "</form>\n";
0039: }
0040: // ここまでPHPプログラム ===================================================
0041: ?>
0042: </body>
0043: </html>

プログラムを実行する

プログラムをダウンロードする

サンプル・プログラムの実行方法

ブラウザから http://localhost/***/input1.php (*** はセーブした仮想ディレクトリ名)と入力すると、テキスト入力を促す画面が表示される。テキストを入力し [実行] ボタンを押下する。10 桁を超えて入力しようとするとエラーを表示し、再入力を促す。
この項つづく
header