PHPでfilter_input関数を使い色々なものをフィルタリングしていきたいと思います。6月7日記事
目次
ユーザに入力された文字列をフィルターを通して、どうフィルターできたのか表示させるプログラムを使ってみる。
confirm.php・・・POST受け取る側のファイル
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>フォーム</title> </head> <body> <?php //$text = $_POST["text"]; こういうのはなくてもいいです。 echo "FILTER_SANITIZE_STRING<br>"; $text0 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_STRING);/*ここのみ記入*/ echo $text0."<br><br>";
受け取る側(confirm.php側)で、下から2行目のみを書いていけばフィルタができます。
フィルターの書き方は、
(string)filter_input
という書き方と
filter_input
という書き方があります。明示的に書きたい場合は(string)と記入しましょう。 文法的にいうと、
filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] )
と書きます。
送る側form.php
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>フォーム</title> </head> <body> <form action="confirm.php" method="post"> <dl> <dt>タイトル</dt> <dd><input type="text" name="text"></dd> <dt>内容</dt> <dd><textarea name="contents" cols="30" rows="4"></textarea></dd> <input type="submit" name="submit" value="確認"> </form> </body> </html>
受け取る側confirm.php
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>フォーム</title>
</head>
<body>
<?php
//$text = $_POST["text"]; こういうのはなくてもいいです。
echo "FILTER_SANITIZE_EMAIL・・・英字、数字および !#$%&'*+-/=?^_`{|}~@.[] 以外のすべての文字を取り除きます。 <br>";
$text0 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_EMAIL);
echo $text0."<br><br>";
echo "FILTER_SANITIZE_ENCODED・・・文字列を URL エンコードします。<br>";
$text1 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_ENCODED);
echo $text1."<br><br>";
echo "FILTER_SANITIZE_MAGIC_QUOTES・・・シングルクオーテーションとダブルクオーテーションの前にバックスラッシュを付ける。<br>";
$text2 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_MAGIC_QUOTES);
echo $text2."<br><br>";
echo "FILTER_SANITIZE_NUMBER_FLOAT・・・数字、+- および オプションで .,eE 以外のすべての文字を取り除きます。 <br>";
$text3 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_NUMBER_FLOAT);
echo $text3."<br><br>";
echo "FILTER_SANITIZE_NUMBER_INT・・・数字、プラス記号、マイナス記号 以外のすべての文字を取り除きます。<br>";
$text4 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_NUMBER_INT);
echo $text4."<br><br>";
echo "FILTER_SANITIZE_SPECIAL_CHARS・・・htmlspecialchars+ENT_QUOTESと同じこと<br>";
$text5 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_SPECIAL_CHARS);
echo $text5."<br><br>";
echo "FILTER_SANITIZE_FULL_SPECIAL_CHARS・・・タグとダブルクオーテーションをエスケープ<br>";
$text6 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_FULL_SPECIAL_CHARS);
echo $text6."<br><br>";
echo "FILTER_SANITIZE_STRING・・・タグを取り除きます。<br>";
$text7 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_STRING);
echo $text7."<br><br>";
echo "FILTER_SANITIZE_URL・・・特殊文字等をエスケープ <br>";
$text8 = (string)filter_input(INPUT_POST,'text',FILTER_SANITIZE_URL);
echo $text8."<br><br>";
echo "検証フィルタ<br>";
echo "FILTER_VALIDATE_URL,FILTER_FLAG_PATH_REQUIRED・・・URL で、パス部分を必須とします。 <br>";
$text9 = (string)filter_input(INPUT_POST,'text',FILTER_VALIDATE_URL,FILTER_FLAG_PATH_REQUIRED);
echo $text9."<br><br>";
echo "FILTER_VALIDATE_URL,FILTER_FLAG_QUERY_REQUIRED・・・URL で、クエリ文字列を必須とします。 <br>";
$text10 = (string)filter_input(INPUT_POST,'text',FILTER_VALIDATE_URL,FILTER_FLAG_QUERY_REQUIRED);
echo $text10."<br><br>";
?>
</body>
</html>
除去された場合はNULLを返します。NULLを返すと何も表示されないので、何も表示されない箇所はNULLがはいってると思ってください。







