PHP フィルターは、ユーザー入力などの安全でないソースからのデータを検証およびフィルターするために使用されます。
PHP フィルターとは何ですか?
PHP フィルターは、安全でないソースからのデータを検証およびフィルターするために使用されます。
ユーザー入力またはカスタム データの検証とフィルタリングは、Web アプリケーションの重要な部分です。
PHP のフィルター拡張機能は、データのフィルター処理を簡単かつ迅速に行うように設計されています。
なぜフィルターを使用するのですか?
ほぼすべての Web アプリケーションは外部入力に依存しています。通常、このデータはユーザーまたは他のアプリケーション (Web サービスなど) から取得されます。フィルターを使用すると、アプリケーションが正しい入力タイプを取得できるようになります。
外部データは常にフィルタリングする必要があります。
入力フィルタリングは、アプリケーションのセキュリティの最も重要なトピックの 1 つです。
外部データとは何ですか?
フォームからの入力データ
Cookie
サーバー変数
データベースクエリ結果
関数とフィルター
変数をフィルターするには、以下のいずれかのフィルター関数を使用します:
filter_var () - 指定したフィルターで単一の変数をフィルターします
filter_var_array() - 同じまたは異なるフィルターで複数の変数をフィルターします
filter_input - 入力変数を取得してフィルターします
filter_input_array - 複数の入力変数を取得してフィルターします同じまたは異なるフィルターを通してそれらを比較します
以下の例では、filter_var() 関数を使用して整数を検証します。
コードをコピー コードは次のとおりです。
$int = 123;
if( !filter_var($int, FILTER_VALIDATE_INT))
{
echo("整数が無効です");
}
else
{
echo("整数は有効です");
}
?>
上記のコードは、「FILTER_VALIDATE_INT」フィルターを使用して変数をフィルター処理します。この整数は有効であるため、コードの出力は「整数は有効です」となります。
整数以外の変数を使用しようとすると、「整数が無効です」という出力が表示されます。
関数とフィルターの完全なリストについては、PHP フィルター リファレンス マニュアルを参照してください。
検証とサニタイズ
フィルターには次の 2 種類があります:
検証フィルター:
ユーザー入力の検証に使用されます
厳密な形式ルール (URL や電子メールの検証など)
成功した場合は予期されたタイプを返し、それ以外の場合は FALSE を返します
サニタイズフィルター:
文字列内の指定された文字を許可または禁止するために使用されます
データ形式規則はありません
常に文字列を返します
オプションとフラグ
オプションとフラグは、指定されたフィルターに追加のフィルター オプションを追加するために使用されます。
フィルターが異なれば、オプションとフラグも異なります。
以下の例では、filter_var() と "min_range" および "max_range" オプションを使用して整数を検証します。
コードをコピーコードは次のとおりです:
$var=300;
$int_options = array(
"options"=>array (
"min_range"=>0,
"max_range"=>256
)
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options) ))
{
echo("整数が無効です");
}
else
{
echo("整数が有効です"); ?> ;
上記のコードと同様に、オプションは「options」と呼ばれる関連付けられた配列に入れる必要があります。フラグを使用する場合、フラグを配列にする必要はありません。
関数とフィルターの完全なリストについては、W3School が提供する PHP フィルター リファレンス マニュアルを参照してください。各フィルターで使用可能なオプションとフラグを確認できます。
入力の検証
フォームからの入力を検証してみましょう。
最初に行う必要があるのは、探している入力データが存在することを確認することです。
次に、filter_input() 関数を使用して入力データをフィルターします。
次の例では、入力変数 "email" が PHP ページに渡されます。
コードをコピーします
コードは次のとおりです。 : if(!filter_has_var(INPUT_GET, "メール"))
{
echo("入力タイプが存在しません"); }
else
{
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
{
echo "電子メールが無効です"
}
; else
{
echo "電子メールは有効です"
}
}
?>;
例の説明:
上記の例には、「GET」メソッドを通じて送信される入力変数 (電子メール) があります。
タイプ「GET」の「電子メール」入力変数があるかどうかを検出します。
入力変数がある場合は、それが有効な電子メール アドレスであるかどうかを確認します
入力をサニタイズします
フォームから渡された URL をクリーンアップしてみましょう。
まず、探している入力データが存在することを確認します。
次に、filter_input() 関数を使用して入力データを精製します。
次の例では、入力変数 "url" が PHP ページに渡されます:
コードをコピーします コードは次のとおりです。 :
if(!filter_has_var(INPUT_POST, "url"))
{
echo("入力タイプが存在しません"); }
else
{
$url = filter_input(INPUT_POST,
"url", FILTER_SANITIZE_URL);
}
?> :
上記の例には、「POST」メソッドを通じて送信される入力変数 (url) があります。
この入力変数の場合存在する場合は、サニタイズ (不正な文字を削除) して $url 変数に保存します
入力変数が次のような場合: "http://www.W3#$%S^%$#ool.com.cn /"、精製後 $url 変数は次のようになります。
http://www.W3School.com.cn/ 複数の入力をフィルターする
フォームは通常、複数の入力フィールドで構成されます。 filter_var または filter_input の繰り返し呼び出しを避けるために、filter_var_array または filter_input_array 関数を使用できます。
この例では、filter_input_array() 関数を使用して 3 つの GET 変数をフィルターします。受信した GET 変数は、名前、年齢、電子メール アドレスです:
コードをコピー
コードは次のとおりです: $filters = array
("name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => ; 配列
(
"フィルター"=>FILTER_VALIDATE_INT,
"オプション"=>配列
(
"min_range"=>1,
"max_range" => ;120
)
),
"email"=>,
);
$result = filter_input_array(INPUT_GET, $filters); 🎜> if (!$result["age"])
{
echo("年齢は 1 から 120 までの数値である必要があります。
");
elseif (! $result["email"])
{
echo("電子メールが無効です。
")
}
else
{
echo ("ユーザー入力は有効です");
}
?>
上の例には 3 つの入力変数があります (name 、 age 、 email)
入力変数の名前を含む配列と、指定された入力変数のフィルターを設定します
filter_input_array 関数を呼び出します。パラメーターには GET 入力変数と設定したばかりの配列が含まれます
$result変数の「age」変数と「email」変数に不正な入力がないか確認してください。 (不正な入力がある場合)
filter_input_array() 関数の 2 番目のパラメーターには、配列または単一フィルターの ID を指定できます。
パラメーターが単一フィルターの ID の場合、指定されたフィルターは入力配列内のすべての値をフィルター処理します。
パラメータが配列の場合、配列は次の規則に従う必要があります:
は、配列のキーである入力変数 (「年齢」など) を含む連想配列でなければなりません。 " 入力変数 )
この配列の値はフィルターの ID、またはフィルター、フラグ、オプションを指定する配列である必要があります
フィルター コールバックを使用する
FILTER_CALLBACK フィルターを使用すると、カスタム関数を呼び出すことができますフィルターとして機能します。このようにして、データのフィルタリングを完全に制御できます。
独自のカスタム関数を作成することも、既存の PHP 関数を使用することもできます。
オプションを指定するのと同じ方法で、フィルターに使用する関数を指定します。
以下の例では、カスタム関数を使用してすべての「_」をスペースに変換します。
コードをコピー
コードは次のとおりです。 🎜>
function ConvertSpace($string)
{ return str_replace("_", " ", $string); $string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK,array("options"=>"convertSpace"));
上記のコードの結果は次のようになります:
Peter is a great guy! 例の説明:
上記の例はすべての "_" をスペースに変換します:
「_」をスペースに置き換える関数を作成します
filter_var() 関数を呼び出します。そのパラメーターは FILTER_CALLBACK フィルターと関数を含む配列です

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版
中国語版、とても使いやすい

Dreamweaver Mac版
ビジュアル Web 開発ツール

ホットトピック



