2017-01-12 7 views
0

私はPOSTリクエスト変数を検証していると私はこのように行うために使用:PHPでhtmlentitiesでfilter_varを使用するとよいですか?

$email = htmlentities($_POST['email']); 

しかし、今、私が検索しにfilter_varについて学び、私はこのような検証をやっている:

$email = filter_var(htmlentities($_POST['email']), FILTER_SANITIZE_EMAIL); 

どちらの方が良いですか?すべてのタイプの入力[電話 - 文字列 - など..]私は何を使用する必要がありますか?

申し訳ありません私は初心者ですが、マニュアルを調べましたが、私は多くのことを理解できませんでした。

ありがとうございました。

+0

。 –

+1

'htmlentities'は'& 'を' & 'に変えますが、'& 'は有効な電子メール文字ですが、'; 'は電子メールの検証に' htmlentities'を使いません。 – apokryfos

+0

@apokryfos、文字列の検証(ユーザー名やコメントなど)で何を使うべきですか? –

答えて

1

はメールのみのために次の行を使用します。これは正しく電子メールの文字から(例えば;として違法chractersを削除し、法的なものを維持します

filter_input(INPUT_POST, "email", FILTER_SANITIZE_EMAIL); 

ようになるかもしれないhtmlentitiesを使用して&として、あるいは+

法律上の電子メールアドレスであるFILTER_SANITIZE_EMAILが破損する場合があります。

ユーザー入力のラベルまたはその場合、は入力を通常は(DBが入力を正しくエスケープできるように準備された文を使用して)格納し、ページに表示するときはhtmlentitiesを使用します。代わりに、次のものを使用することもできます。

filter_input(INPUT_POST, "description", FILTER_SANITIZE_STRING); 

これは、文字列のサニタイズフィルタのストリップタグです。

あなたはで複数のフィルタを確認することができます:あなたのコードでテストを作成し、参照http://php.net/manual/en/filter.filters.sanitize.php

+0

ありがとう.. –

関連する問題