リクエストパラメータ取得における補足説明

$userid = $lmd->httpGet('userid');

上記の $lmd->httpGetメソッドは下記とほぼ等価ですが、

$userid = $_GET['userid'];

以下の機能が拡張されている点が異なります。

1) パラメータが存在しない場合は、空文字が返る

$userid = $lmd->httpGet('userid');

上記は、下記と等価です。

$userid = isset($_GET['userid']) ? $_GET['userid'] : '';

2) パラメータが存在しない場合、空文字以外を返したい

デフォルトでは空文字が返りますが、例えば NULL を返したい場合、次のように「第二引数」を指定します。

$userid = $lmd->httpGet('userid', NULL);

3) 取得時にルールを適用したい

userid は、半角数字の連続であり、それ以外の値が渡ってきたら NULL として扱いたい場合は、
「第三引数」に正規表現を記述してルールを適用させることができます。

$userid = $lmd->httpGet('userid', NULL, '/^[0-9]+$/');

さらに、1 以上という制約を設ければ、下記になるでしょう。

$userid = $lmd->httpGet('userid', NULL, '/^[1-9][0-9]*$/');

4) 前後のホワイトスペースは暗黙のうちに除去されます

値の前後にある、ホワイトスペース(全角スペースを含む)は自動的に除去されます。

メールフォームを想像してください。
「お名前」という、氏名を入力する必須項目があります。
以下の入力値が渡って来たことを想定してください。

a) スペース1文字だけ → 「 」
b) 前後に不要なスペースがある → 「 山田 太郎   」

a のようにスペースのみの入力を許可しないように、trim 関数等で余計なホワイトスペースを除去してからバリデーションを行うと思いますが、$lmd->httpGetメソッドではその手間を省きます。
また過去の経験から、b のようなケースの場合、前後のホワイトスペースは不要な場合が多いので、このような仕様になっています。

5) 制御文字は暗黙のうちに除去されます

値に含まれる制御文字は自動的に除去されます。
これは、NULL バイト攻撃の予防になります。

ただし、次の制御文字は除去しません。

\t(タブ)、\r(キャリッジリターン)、\n(ラインフィード)

6) 無加工の値を取得したい

4と5のように勝手なことをされては困る場合は、rawHttpGet メソッドが利用できます。

$userid = $lmd->rawHttpGet('userid');

無加工の値を取り出せます。

lmd で利用できる、リクエストパラメータ関連のメソッドを紹介します

GETリクエスト

  • $lmd->httpGet
  • $lmd->hasHttpGet
  • $lmd->rawHttpGe

POSTリクエスト

  • $lmd->httpPost
  • $lmd->hasHttpGet
  • $lmd->rawHttpPost

COOKIE

  • $lmd->httpCookie
  • $lmd->hasHttpCookie

詳しい使い方は、リファレンスを参照してください。

なお、$_REQUEST をラップする $lmd->httpRequest はありません。
$_REQUEST の使用はセキュリティーホールの原因になり、「百害あって一利なし」です。
横着をせず、必ず GET/POST/COOKIE を意識して実装を行いましょう。

次ページ: LPV (Logic-Prep-View)