[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');

こんな感じです。

で、注意。

本記事を書くにあたって、掲載したサンプルなどはテスト実行してません。
(動かなかったとしても、どうせ綴り間違い程度の問題なので)

あと、シンプルになったぶん、他に必要な処理は他の場所できちんとやる必要があります。

・・・・あと・・・・
古過ぎる記事にツッコミを入れられたとしても「ごめんなさい」としか言えません。

広告