PHPネタ!Formの入力処理!

Posted in PHP

久々の更新!
どうも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:
//&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;

ユーザ定義関数も指定できますので色んなバリデートが可能です。

これを利用してセキュリティを強くしましょう!

ではまた!

Posted by isam   @   29 4月 2010

Like this post? Share it!

RSS Digg Twitter StumbleUpon Delicious Technorati

1 Comments

Comments
Trackbacks to this post.
Leave a Comment

Name

Email

Website

Previous Post
«
Next Post
»
Powered by Wordpress   |   Lunated designed by ZenVerse