Artikel yang menerangkan secara terperinci tentang penapisan data PHP

藏色散人
Lepaskan: 2023-04-10 16:46:02
ke hadapan
3915 orang telah melayarinya
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);
}
Salin selepas log masuk

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 存在");
}
Salin selepas log masuk

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";
}
Salin selepas log masuk

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));
Salin selepas log masuk

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");
 }
Salin selepas log masuk

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";
Salin selepas log masuk

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!

Label berkaitan:
php
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan