Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Petua Pengaturcaraan PHP: Cara Mengendalikan Penapisan Data Borang

Petua Pengaturcaraan PHP: Cara Mengendalikan Penapisan Data Borang

王林
王林asal
2023-08-20 12:52:48699semak imbas

Petua Pengaturcaraan PHP: Cara Mengendalikan Penapisan Data Borang

Petua Pengaturcaraan PHP: Cara mengendalikan penapisan data borang

Dalam pembangunan web, borang adalah cara interaksi yang sangat biasa Pengguna memasukkan data melalui borang dan menyerahkan data ini kepada pelayan untuk diproses. Walau bagaimanapun, memandangkan input pengguna tidak boleh dikawal, kami perlu menapis dan mengesahkan data borang dengan berkesan untuk memastikan keselamatan dan kebolehpercayaan data. Artikel ini akan memperkenalkan beberapa teknik pengaturcaraan PHP yang biasa digunakan untuk membantu anda memproses penapisan data borang.

  1. Menggunakan fungsi penapis
    PHP menyediakan satu siri fungsi penapis yang boleh digunakan untuk menapis pelbagai jenis data. Berikut ialah beberapa fungsi penapis yang biasa digunakan dan penggunaannya:
  • filter_input(): Fungsi ini boleh menapis GET, POST, COOKIE dan data lain serta menentukan jenis penapis. Sebagai contoh, kita boleh menggunakan filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING) untuk menapis data POST bernama 'name' dan menukarnya kepada rentetan. FILTER_SANITIZE_STRING digunakan untuk mengalih keluar teg HTML dan aksara khas. filter_input(): 这个函数可以过滤GET、POST、COOKIE等数据,并指定过滤器类型。例如,我们可以使用filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING)来过滤名为'name'的POST数据,并将其转换为字符串。FILTER_SANITIZE_STRING用于移除HTML标签和特殊字符。
  • filter_var(): 这个函数可以过滤任意类型的变量,并指定过滤器类型。例如,我们可以使用filter_var($email, FILTER_VALIDATE_EMAIL)来验证一个电子邮件地址是否合法。FILTER_VALIDATE_EMAIL用于验证电子邮件地址。
  • filter_var_array(): 这个函数可以过滤一个数组中的多个变量。例如,我们可以使用filter_var_array($_POST, $filters)来过滤$_POST数组中的多个数据,并指定每个数据的过滤器类型。$filters是一个关联数组,其中键是数据的名称,值是过滤器类型。

以下是一个示例代码,演示如何使用以上过滤函数过滤表单数据:

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$filters = array(
    'name' => FILTER_SANITIZE_STRING,
    'email' => FILTER_VALIDATE_EMAIL
);
$data = filter_var_array($_POST, $filters);
  1. 使用正则表达式
    正则表达式是一种强大的工具,可以用来匹配和过滤字符串。使用正则表达式,您可以定义一个模式,然后使用模式来验证字符串是否匹配。以下是一个示例代码,演示如何使用正则表达式过滤表单数据:
$name = $_POST['name'];
if (!preg_match("/^[a-zA-Z ]*$/", $name)) {
    echo "只允许字母和空格!";
}

在上面的代码中,使用正则表达式/^[a-zA-Z ]*$/

filter_var(): Fungsi ini boleh menapis sebarang jenis pembolehubah dan menentukan jenis penapis. Sebagai contoh, kami boleh menggunakan filter_var($email, FILTER_VALIDATE_EMAIL) untuk mengesahkan sama ada alamat e-mel adalah sah. FILTER_VALIDATE_EMAIL digunakan untuk mengesahkan alamat e-mel.
  1. filter_var_array(): Fungsi ini boleh menapis berbilang pembolehubah dalam tatasusunan. Sebagai contoh, kita boleh menggunakan filter_var_array($_POST, $filters) untuk menapis berbilang data dalam tatasusunan $_POST dan menentukan jenis penapis bagi setiap data. $filters ialah tatasusunan bersekutu dengan kuncinya ialah nama data dan nilainya ialah jenis penapis.
  2. Berikut ialah contoh kod yang menunjukkan cara menapis data borang menggunakan fungsi penapis di atas:
$name = $_POST['name'];
$email = $_POST['email'];

$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
$stmt->execute();
$stmt->close();

    Menggunakan ungkapan biasa

    Ekspresi biasa ialah alat berkuasa yang boleh digunakan untuk padanan dan rentetan penapis. Menggunakan ungkapan biasa, anda mentakrifkan corak dan kemudian menggunakan corak untuk mengesahkan bahawa rentetan sepadan. Berikut ialah contoh kod yang menunjukkan cara menggunakan ungkapan biasa untuk menapis data borang:


    rrreee

    Dalam kod di atas, gunakan ungkapan biasa /^[a-zA-Z ]*$/ Padanan rentetan yang mengandungi hanya huruf dan ruang. Jika perlawanan gagal, mesej segera dikeluarkan.

    🎜Cegah SQL Injection🎜Apabila memproses data borang, kita perlu memberi perhatian untuk mencegah serangan suntikan SQL. Untuk mengelakkan suntikan SQL, kita harus menggunakan pernyataan yang disediakan dan pertanyaan berparameter untuk mengendalikan pertanyaan pangkalan data. Berikut ialah contoh kod yang menunjukkan cara mencegah suntikan SQL: 🎜🎜rrreee🎜 Dalam kod di atas, kami menggunakan penyata yang disediakan dan kaedah bind_param() untuk memasukkan data borang ke dalam pangkalan data. Parameter pertama kaedah bind_param() ialah jenis data dan "ss" bermaksud kedua-dua parameter ialah rentetan. 🎜🎜Ringkasan: 🎜Apabila memproses data borang, penapisan data adalah penting. Menggunakan fungsi penapisan, ungkapan biasa dan teknologi pencegahan suntikan SQL boleh melindungi keselamatan dan kebolehpercayaan data dengan berkesan. Anda perlu memilih kaedah penapisan yang sesuai berdasarkan keperluan sebenar, dan memberi perhatian kepada pengendalian ralat dan pengecualian dalam kod. 🎜🎜Di atas adalah pengenalan kepada kemahiran pengaturcaraan PHP: cara mengendalikan penapisan data borang saya harap ia akan membantu anda! 🎜

Atas ialah kandungan terperinci Petua Pengaturcaraan PHP: Cara Mengendalikan Penapisan Data Borang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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