web関連

【PHP】$_GETとかを使うときにfilter_inputを使ったほうがいいらしい

2021/01/12

スーパーグローバル変数である$_GETや$_POSTを使う時にfilter_inputでフィルタリングした方がいいらしいので備忘録

filter_inputを使ったほうがいい理由

まず、スーパーグローバル変数である$_GETを使った方法

if ($_GET['ja'] === 'test') {
	echo $_GET['ja'] . 'だよ';
}

これだと値がない時にnoticeが表示される
じゃあ、isset()を使ってあるかチェックすればいいじゃんということで書き換え

if (isset($_GET['ja'])) {
	if ($_GET['ja'] === 'test') {
		echo $_GET['ja'] . 'だよ';
	}
}

可読性が下がった気がするなぁ…
そこでfilter_input()を使ってスーパーグローバル変数をフィルタリングする!

if (filter_input(INPUT_GET, 'ja') === 'test') {
	echo filter_input(INPUT_GET, 'ja') . 'だよ';
}

うん、シンプル!
noticeも出ないしスーパーグローバル変数はセキュリティ的にラッパー関数とかを経由で使ったほうがいいらしい
$_GET['ja'] = '値'って感じで代入できちゃったりするからとのこと

否定の条件文でif ($_GET['ja'] == !'test') {…}みたいな書き方してて上手くいかないなーって思って調べた
if ($_GET['ja'] !== 'test') {…}こうだね
javascriptとごっちゃになってたわ