Rumah >pembangunan bahagian belakang >tutorial php >Artikel yang menerangkan secara terperinci tentang penapisan data PHP

Artikel yang menerangkan secara terperinci tentang penapisan data PHP

藏色散人
藏色散人ke hadapan
2021-09-12 16:32:483982semak imbas
Apabila menapis data input pengguna, anda biasanya menulis kaedah anda sendiri untuk membuat pertimbangan
Sebagai contoh, gunakan ungkapan biasa semasa mengesahkan e-mel
$pattern = "/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/";
if (!preg_match($pattern, $email)) {
        throw new \Exception(self::ERROR_PARAMETER_EMPTY . '_邮件格式有误:' . $email);
}

Jika saya tidak menggunakan ungkapan biasa, adakah terdapat kaedah mudah lain?

Gunakan fungsi berkaitan penapis

filter_has_var(type, variable) sama ada terdapat pembolehubah jenis yang ditentukan.
filter_input mengambil input dari luar skrip dan menapisnya.
filter_input_array mendapat berbilang input dari luar skrip dan menapisnya.
filter_var mendapat pembolehubah dan menapisnya.
filter_var_array mendapat berbilang pembolehubah dan menapisnya.

filter_has_var

Tentukan sama ada hasil $_GET mengandungi nama

if(!filter_has_var(INPUT_GET, "name"))
{
    echo("name 不存在");
}
else
{
    echo("name 存在");
}

filter_input

Lihat contoh pengesahan e-mel

if (!filter_input(INPUT_GET, 'email', FILTER_VALIDATE_EMAIL))
{
    echo "E-Mail is not valid";
}
else
{
    echo "E-Mail is valid";
}

filter_input_array

Tapis keseluruhan sumber input

$filters = array
(
    "name" => array
    (
        "filter"=>FILTER_CALLBACK,
        "flags"=>FILTER_FORCE_ARRAY,
        "options"=>"ucwords"
    ),
    "age" => array
    (
        "filter"=>FILTER_VALIDATE_INT,
        "options"=>array
        (
            "min_range"=>1,
            "max_range"=>120
        )
    ),
    "email"=> FILTER_VALIDATE_EMAIL,
);
print_r(filter_input_array(INPUT_POST, $filters));

filter_var, filter_var_array

Tiada sumber input diperlukan, tapis nilai terus

if(!filter_var("someone@example....com", FILTER_VALIDATE_EMAIL))
 {
 echo("E-mail is not valid");
 }
else
 {
 echo("E-mail is valid");
 }

Julat sumber input

Pengesahan

Lain-lain Kaedah penapisan

strip_tags Padam teg html
htmlentiti Tukar aksara kepada entiti HTML (ia juga terlepas daripada simbol mata wang seperti euro, paun, dsb., simbol hak cipta, dsb.)
fungsi htmlspecialchars menukar aksara yang dipratentukan Tukar kepada entiti HTML. Aksara yang dipratentukan untuk
ialah:
& (ampersand) menjadi &
" (petikan berganda) menjadi "
' (petikan tunggal) menjadi '
<
(lebih besar daripada) menjadi>

*Petua: Untuk menukar entiti HTML khas kembali kepada aksara, gunakan fungsi htmlspecialcharsdecode().


$input = "<span>我是标题</span>";
echo htmlspecialchars($input) . "\n";
echo htmlentities($input) . "\n";
echo strip_tags($input) . "\n";

$input = "-- 'select * from ";
echo addslashes($input) . "\n";

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Artikel yang menerangkan secara terperinci tentang penapisan data PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam