表单基础知识
表单是用户与网站互动的重要手段。HTML 中的表单由 <form>
标签包裹,用于收集用户输入的信息。表单可以包含多种类型的输入元素,如文本框、密码框、复选框、单选按钮、下拉菜单等。
表单的基本结构
一个基本的表单结构如下:
-- -------------------- ---- ------- ----- ------------------- -------------- ------ --------------------------- ------ ----------- ------------- ------------------------ ------ -------------------------- ------ --------------- ------------- ------------------------ ------ ------------- ----------- -------
在这个例子中:
action
属性指定了表单数据提交到哪个页面进行处理。method
属性指定了提交表单的方式,可以是get
或者post
。
输入元素类型
文本输入
文本输入是最常见的输入方式,通常用于输入姓名、地址等信息。
<input type="text" name="username" id="username">
密码输入
密码输入用于输入敏感信息,如密码。输入的内容会被隐藏显示。
<input type="password" name="password" id="password">
单选按钮
单选按钮允许用户从一组选项中选择一个。
<label><input type="radio" name="gender" value="male"> 男</label> <label><input type="radio" name="gender" value="female"> 女</label>
复选框
复选框允许用户从一组选项中选择多个。
<label><input type="checkbox" name="interests[]" value="sports"> 运动</label> <label><input type="checkbox" name="interests[]" value="music"> 音乐</label>
下拉菜单
下拉菜单允许用户从一组选项中选择一个。
<select name="country"> <option value="china">中国</option> <option value="usa">美国</option> <option value="japan">日本</option> </select>
PHP 表单处理
在 PHP 中,可以通过 $_POST
或者 $_GET
超全局变量来获取表单提交的数据。
使用 POST 方法
当使用 POST
方法提交表单时,数据被包含在请求体中,不会显示在 URL 中。
if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST['username']; $password = $_POST['password']; echo "用户名:$username<br>"; echo "密码:$password"; }
使用 GET 方法
当使用 GET
方法提交表单时,数据会附加在 URL 的查询字符串中。
if ($_SERVER["REQUEST_METHOD"] == "GET") { $username = $_GET['username']; $password = $_GET['password']; echo "用户名:$username<br>"; echo "密码:$password"; }
数据验证与过滤
用户输入的数据可能包含恶意内容或不符合预期格式的数据,因此需要进行验证和过滤。
验证数据
检查是否为空
if (empty($_POST['username'])) { echo "用户名不能为空!"; } else { $username = $_POST['username']; }
检查长度
$username = $_POST['username']; if (strlen($username) < 3 || strlen($username) > 20) { echo "用户名长度应在3到20个字符之间!"; } else { // 处理合法的用户名 }
检查格式
$email = $_POST['email']; if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "无效的电子邮件地址!"; } else { // 处理合法的电子邮件地址 }
过滤数据
转义特殊字符
使用 htmlspecialchars()
函数将特殊字符转换为 HTML 实体,防止 XSS 攻击。
$username = htmlspecialchars($_POST['username']); echo "用户名:$username";
过滤非法字符
使用 filter_var()
函数过滤非法字符。
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING); echo "密码:$password";
文件上传
文件上传功能允许用户向服务器上传文件,如图片、文档等。
HTML 表单设置
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="上传文件" name="submit"> </form>
注意,enctype="multipart/form-data"
是必需的,否则文件将无法上传。
PHP 文件处理
-- -------------------- ---- ------- -- --------------------------- -- ------- - -- -------------------------------- - ----------- - ----------- ------------ - ----------- - ------------------------------------------ --------- - -- -------------- - --------------------------------- --------------------- -- --------- -- --------------------------- - ---- ---------- --------- - -- - -- ------ -- -------------------------------- - ------- - ---- -------- --------- - -- - -- -------- -- --------------- -- ----- -- -------------- -- ----- -- -------------- -- ------ -- -------------- -- ------ - ---- ---- ------------ - --- -------- --------- - -- - -- -- --------- ------- - ----- -- ---------- -- -- - ---- --------- - ---- - -- -------------------------------------------------------- -------------- - ---- --- - - ----------------------------------------- - - ------ - ---- - ---- ----------------- - - - -
以上代码演示了如何处理文件上传,包括检查文件是否存在、大小限制、文件类型等,并将文件移动到指定目录。
总结
通过本章的学习,你应该已经掌握了基本的表单设计方法,以及如何在 PHP 中处理表单数据。同时,了解了如何对用户输入的数据进行验证和过滤,确保应用程序的安全性和稳定性。在实际项目中,表单处理是不可或缺的一部分,希望你能灵活运用所学知识。