[PHP] スーパーグローバル変数を取得してみるfunction
篠原 隆司
[Utility.php] GET, POST, COOKIE を安全に取得するfunction()
なぜかこちらの記事があがっていたのでちょい補足。
この記事は1年も前に書いたものなので正直、現在は使ってません。
情報を集めるときは、記事が書かれた年月日に注目することをおすすめします。
ってことで、最近使ってるのはこちらです。
配列を指定して値を得る関数
とりあえず、arr_get()を作る。
/*
* arr_get
*/
function arr_get($arr, $key, $default = ''){
return (isset($arr[$key]) ? $arr[$key] : $default);
}
渡した$arrに、$keyがセットされていればその値を、見つからなければ$defaultを返すシンプルな関数です。
example:
$sample = array('あ', 'か', 'さ', 'た');
$s = arr_get($sample, 2); // => 「さ」 が返ります。
$s = arr_get($sample, 10, '無いよ'); // => 「無いよ」 が返ります。
グローバル変数を安全に取得
こっちがメインです。
function get($array, $key, $charset = 'utf-8'){
$s = arr_get($array, $key);
$s = str_replace("\0", '', $s);
$s = mb_convert_encoding($s, $charset, $charset . ', SJIS-WIN, Shift_JIS, JIS, eucjp-win, utf-8');
$s = str_replace("rn", "n", $s);
$s = str_replace("r", "n", $s);
return $s;
}
こんなもんです。
前のものからの変更というと、& とか < > とかとか、変換することをやめました。
htmlタグを入力されたなら、htmlとして扱いたい場合に困るんですよね。
前のだと。
あと、trimもここでやってたので外してます。
$_GET を取得してみる
example:
<form method="get">
<input type="submit" name="sample" value="サンプル" />
</form>
<?php
$s = get($_GET, 'sample'); // => 「サンプル」 が返ります。
$_POST を取得してみる
example:
<form method="post">
<input type="submit" name="sample" value="サンプル" />
</form>
<?php
$s = get($_POST, 'sample'); // => 「サンプル」 が返ります。
$_COOKIE を取得してみる
example:
// cookieに sample : サンプル が入っているとして・・・
<?php
$s = get($_COOKIE, 'sample'); // => 「サンプル」 が返ります。
$_SERVER を取得してみる
example:
<?php
echo get($_SERVER, 'SERVER_ADDR');
echo get($_SERVER, 'HTTP_USER_AGENT');
echo get($_SERVER, 'REMOTE_HOST');
こんな感じです。
で、注意。
本記事を書くにあたって、掲載したサンプルなどはテスト実行してません。
(動かなかったとしても、どうせ綴り間違い程度の問題なので)
あと、シンプルになったぶん、他に必要な処理は他の場所できちんとやる必要があります。
・・・・あと・・・・
古過ぎる記事にツッコミを入れられたとしても「ごめんなさい」としか言えません。