Arale

アパレル、バリスタを経て未経験からのプログラマーになった男の勉強ログ

フォームで考えられるバグを防ぐ

一つ前の記事ではフォームで入力された値を

$_GET["a"]を用いて、表示する記述を書きました。

ただ、このままではタグなども入力が出来、

悪意のある情報を埋め込まれる可能性があります。

それを防ぐためにhtmlspecialcharsを用います。

$input = htmlspecialchars($_GET["a"], ENT_QUOTES);
print isset($_GET["a"]) ? $input . "だしん" : "何かしゃべって!";

$inputという変数に代入してます。

送信文字列のタグを無効化するhtmlspecialchars関数

第一引数には変換したい入力文字列を入れてます。

第二引数には変換パターンを入れてます。詳しい説明は下記にある参考URLをご覧ください。

空白のまま送信を押しても「だしん」が表示される

上記のコードの記述でタグを入力されても、

有効化されずに文字列として表示される処理を完了しました。

しかし、空入力のまま送信ボタンを押すと「だしん」と表示されてしまいます。

何か文字列が入力されたら「だしん」と語尾に表示したいように設定します。

$input = htmlspecialchars($_GET["a"], ENT_QUOTES);
print isset($_GET["a"]) && $_GET["a"] != "" ? $input . "だしん" : "何かしゃべって!";

&&はrubyでも出てきた用法かと思います。AかつBの時と条件を加えます。

!= は否定の時の用法ですね。この場合だと空ではない時という条件です。

参考URL

techplay.jp