久々の更新!
どうもisamです。仕事場が変わって忙しくしておりました。。。
やっと落ち着いてきたのでできるだけ更新するように頑張ります。
それでは今日はPHPネタでいこうと思います。
今日のお題はこちら!
■Formの処理を楽にする関数を作成してみよう!
PHPだと$_GETや$_POSTや$_REQUESTのグローバル変数からFormの値を取得します。
その際、一旦バリデートして変数に入れたりすると思いますが、毎回trimだhtmlspecialcharsだと連続で書いたりするのは面倒だと思います。
また面倒くさくてバリデートなしでグローバル変数をそのまま使ったりなどあるかと思います。
そんな時に関数を作っておくと楽チンになります。
それでは早速コードにいってみましょう!
<?php
/**
* Formの値をバリデートして取得する
*
* @param string $key 取得したいキー
* @param array $func 適用したい関数の関数名配列
* @param string $type どのグローバル変数を使うか (g=$_GET:p=$_POST:r=$_REQUEST)
* @return string $val キーの値
*/
function param($key, $func, $type) {
switch($type) {
case "g" :
if(isset($_GET[$key])) {
$val = $_GET[$key];
}else{
return '';
}
break;
case "p" :
if(isset($_POST)) {
$val = $_POST[$key];
}else{
return '';
}
break;
case "r" :
default:
if(isset($_REQUEST[$key])) {
$val = $_REQUEST[$key];
}else{
return '';
}
break;
}
if(is_array($func)) {
foreach($func as $function) {
if(function_exists($function)) {
$val = $function($val);
}
}
}else{
if(function_exists($function)) {
$val = $function($val);
}
}
return $val;
}
使い方は至って簡単で取得したいキーとバリデート用関数名とグローバル変数の種類を指定するだけ!
<?php
//URLのクエリが?str=<html><body></body></html>%0D%0Aだった場合で
//エスケープと末尾の空白を削除したい場合
$str = param("str", array("trim", "htmlspecialchars", "g"));
echo $str;
//ouput:
//<html><body></body></html>
ユーザ定義関数も指定できますので色んなバリデートが可能です。
これを利用してセキュリティを強くしましょう!
ではまた!