Dalam artikel sebelum ini, saya membawakan anda " Bagaimana untuk menetapkan dan mendapatkan atribut PDO dalam pembelajaran pangkalan data PHP? 》, yang memperkenalkan secara terperinci cara menetapkan dan mendapatkan atribut PDO dalam PHP Dalam artikel ini, kami akan melihat isu berkaitan borang PHP.
Dalam artikel sebelum ini kita telah mempelajari tentang asas PHP, termasuk $_GET
dan $_POST
pembolehubah, yang digunakan untuk mendapatkan maklumat dalam bentuk, antaranya Titik pengetahuan yang memerlukan perhatian kami ialah input pengguna borang PHP dan pengesahan borang. Kemudian mari kita lihat pengetahuan berkaitan input borang dan pengesahan borang dalam PHP.
Borang PHP dan input pengguna
Untuk memahami borang PHP dan input pengguna, mula-mula kita perlu memahami apa itu satu borang. Tepatnya, borang Web ialah platform interaktif, dan fungsi utamanya adalah untuk menyediakan platform interaktif untuk penonton dan tapak web. Borang digunakan terutamanya dalam halaman web untuk menghantar data ke pelayan.
Sebagai contoh, borang yang digunakan semasa mendaftar maklumat perlu dihantar semasa anda mengisi maklumat pada masa ini adalah untuk memindahkan kandungan pada borang semasa anda mendaftar dari pelayar klien ke pelayan, dan kemudian melalui PHP Selepas program diproses, maklumat yang diperlukan oleh pengguna dihantar semula ke pelayar klien, dan interaksi antara PHP dan borang Web direalisasikan dengan mendapatkan maklumat pengguna. Ia hanya menyediakan platform interaktif sedemikian.
Seterusnya mari kita lihat borang tersebut melalui contoh contohnya seperti berikut:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP中文网</title> </head> <body> <form action="form.php" method="post"> 名字: <input type="text" name="fname"><br> 年龄: <input type="text" name="age"><br> <input type="submit" value="提交"> </form> </body> </html>
Apa yang perlu kita perhatikan ialah borang tersebut adalah milik HTML. . Untuk pengetahuan yang lebih relevan, semua orang Anda boleh klik "Tutorial HTML" untuk mengetahui hasil larian contoh di atas:
Ini. adakah apa yang kita panggil borang, maka kita akan ke mana maklumat yang diisi, iaitu maklumat borang akan dihantar? Apabila kita klik submit, data dalam borang akan dihantar ke page form.php dalam bentuk POST.
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 echo "欢迎你:".$_POST["fname"] ."<br/>"; echo "你的年龄是:".$_POST['age']; ?>
Hasil yang kami hantar ke from.php adalah seperti berikut:
Selepas input pengguna selesai, anda perlu mengubah suai borang pada masa ini Pengesahan dilakukan dan input pengguna harus disahkan melalui skrip sebelah klien apabila boleh. Pengesahan penyemak imbas lebih pantas dan mengurangkan beban pada pelayan.
Jika input pengguna perlu dimasukkan ke dalam pangkalan data, anda harus mempertimbangkan untuk menggunakan pengesahan pelayan. Cara yang baik untuk mengesahkan borang pada pelayan adalah dengan menghantar borang itu kepada dirinya sendiri, dan bukannya melompat ke halaman lain. Dengan cara ini pengguna boleh mendapatkan mesej ralat pada halaman borang yang sama. Ia akan lebih mudah bagi pengguna untuk mencari ralat. Jadi mari kita lihat pengetahuan berkaitan pengesahan borang.
Pengesahan Borang PHP
Kita perlu mempertimbangkan keselamatan semasa berurusan dengan borang PHP. Kami akan menunjukkan pemprosesan data borang PHP yang selamat Untuk mengelakkan penggodam dan spam, kami perlu melakukan pengesahan keselamatan data pada borang. Seterusnya, mari kita lihat medan teks yang diperlukan dan pilihan, butang radio dan butang serahkan dalam borang melalui contoh.
Contohnya adalah seperti berikut:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>PHP.cn</title> </head> <body> <h2>PHP 表单验证实例</h2> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字: <input type="text" name="name" value=""> <br> E-mail: <input type="text" name="email" value=""> <br> 网址: <input type="text" name="website" value=""> <br> 备注: <textarea name="comment" rows="5" cols="40"></textarea> <br> 性别: <input type="radio" name="gender" value="female">女 <input type="radio" name="gender" value="male">男 <br> <input type="submit" name="submit" value="提交"> </form> </body> </html>
Hasil keluaran:
Apa yang perlu kita perhatikan to are the differences Medan mempunyai peraturan pengesahan yang berbeza Peraturan pengesahan untuk medan berbeza dalam contoh di atas adalah seperti berikut:
Peraturan pengesahan untuk nama diperlukan dan hanya boleh mengandungi huruf dan ruang. Peraturan pengesahan E-mel diperlukan, yang mestilah alamat e-mel yang sah (mengandungi '@' dan '.'). Peraturan pengesahan URL adalah pilihan dan jika ada, ia mesti mengandungi URL yang sah. Peraturan pengesahan untuk nota adalah pilihan, medan input berbilang baris. Peraturan pengesahan jantina diperlukan dan satu mesti dipilih.
Mari kita lihat pengetahuan yang digunakan dalam contoh di atas:
<span style="max-width:90%"><strong>$_SERVER["PHP_SELF"] </strong></span>
$_SERVER["PHP_SELF"]
$_SERVER["PHP_SELF"]
$_SERVER["PHP_SELF"]
ialah pembolehubah super global yang mengembalikan nama fail skrip yang sedang dilaksanakan. Oleh itu, <strong><span style="font-size: 16px;">htmlspecialchars()</span></strong>
hantar data borang ke halaman itu sendiri dan bukannya melompat ke halaman lain. Dengan cara ini, pengguna boleh mendapatkan maklumat mesej ralat pada halaman borang.
htmlspecialchars()
函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
其中我们需要注意的是:
$_SERVER["PHP_SELF"]
变量能够被黑客利用,如何避免 $_SERVER["PHP_SELF"]
被利用?
$_SERVER["PHP_SELF"]
可以通过 htmlspecialchars()
函数来避免被利用。
form 代码如下所示:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。现在如果用户想利用 PHP_SELF 变量, 结果将输出如下所示:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
尝试该漏洞失败!
通过PHP验证表单数据
我们要做的第一件事是通过 PHP 的 htmlspecialchars()
函数传递所有变量。在用户提交该表单时,我们还要做两件事:
首先通过 PHP trim()
函数去除用户输入数据中不必要的字符,比如多余的空格、制表符、换行等,然后通过 PHP stripslashes()
函数删除用户输入数据中的反斜杠(\
)。接下来我们创建一个检查函数,我们把函数命名为 test_input()
。最后我们能够通过 test_input()
函数检查每个 $_POST
变量。
我们将验证程序可以放到上述示例中去,示例如下:
PHP中文网(php.cn) PHP 表单验证实例
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 名字:
E-mail:
网址:
备注:
性别: 女 男
您输入的内容是:"; echo $name; echo "
"; echo $email; echo "
"; echo $website; echo "
"; echo $comment; echo "
"; echo $gender; ?>
输出结果:
其中我们需要注意的是:
我们在执行以上脚本时,会通过$_SERVER["REQUEST_METHOD"]
来检测表单是否被提交 。如果 REQUEST_METHOD
是 POST, 表单将被提交 - 数据将被验证。如果表单未提交将跳过验证并显示空白。在以上实例中使用输入项都是可选的,即使用户不输入任何数据也可以正常显示。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
Atas ialah kandungan terperinci Input dan pengesahan borang pembelajaran bentuk PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!