什么是表单?
表单(Form) 是网页中用于收集用户输入数据的区域。常见的表单控件包括:
-
输入框(文本、密码)
-
单选按钮(Radio)
-
多选框(Checkbox)
-
下拉框(Select)
-
提交按钮(Submit)
简单例子
<formaction="process.php"method="POST"> 用户名:<inputtype="text"name="username"><br> 密码:<inputtype="password"name="password"><br><inputtype="submit"value="提交"></form>
action
:提交表单数据的地址
method
:请求方式,通常是 GET 或 POST
什么是请求(Request)?
表单提交后,浏览器会向服务器发起一个 HTTP 请求。
常见请求方式:
请求方式 | 说明 |
---|---|
GET | 一般用于查询,参数会拼接在 URL 后面,数据不安全 |
POST | 一般用于提交,参数放在请求体内,数据更安全,适合表单提交 |
GET 和 POST 的区别
比较项 | GET | POST |
---|---|---|
参数位置 | URL | 请求体 |
安全性 | 低,参数明文显示 | 高,参数不显示 |
数据大小限制 | 有限制(浏览器和服务器限制 URL 长度) | 理论上无限制(但服务器可能有限制) |
适用场景 | 查询数据、跳转链接 | 提交数据、登录表单、上传文件 |
PHP 获取表单数据的方法
请求方式 | PHP 超全局变量 | 说明 |
---|---|---|
GET | $_GET['参数名'] |
获取地址栏参数 |
POST | $_POST['参数名'] |
获取表单提交数据 |
任意 | $_REQUEST['参数名'] |
自动获取 GET/POST 数据 |
示例:
// GET 请求echo$_GET['username'];// POST 请求echo$_POST['username'];
表单数据的请求流程图
用户输入数据 -> 点击提交 -> 发送 HTTP 请求(GET/POST) -> PHP 接收请求 -> 处理并返回结果
以之前的表单为例:
<!DOCTYPE html><html><body><h2>登录表单</h2><formaction="process.php"method="POST"> 用户名:<inputtype="text"name="username"><br><br> 密 码:<inputtype="password"name="password"><br><br><inputtype="submit"value="提交"></form></body></html>
action="process.php"
:点击提交按钮,表单数据会被提交到 process.php
。
method="POST"
:使用 POST 请求。
PHP 处理文件
<?php// 接收表单数据$username=$_POST['username'];$password=$_POST['password'];// 输出数据echo"您提交的用户名是:" . $username . "<br>";echo"您提交的密码是:" . $password;?>
$_POST['username']
:接收表单输入框 name 为 username 的数据。
$_POST['password']
:接收表单输入框 name 为 password 的数据。
htmlspecialchars()函数
htmlspecialchars()
是 PHP 的一个内置函数,用来将特殊的 HTML 字符转义成 HTML 实体,防止页面解析为标签,防止 XSS 攻击。
-
&
(和号) 成为&
-
"
(双引号) 成为"
-
'
(单引号) 成为'
-
<
(小于) 成为<
-
>
(大于) 成为>
通俗解释:
<script>alert('XSS攻击');</script>
但是如果你这样输出:
<?php// 接收表单数据$username=htmlspecialchars($_GET['username']);$password=htmlspecialchars($_GET['password']);// 输出数据echo"您提交的用户名是:" . $username . "<br>";echo"您提交的密码是:" . $password;?>
页面会显示:
<script>alert('XSS攻击');</script>
不会被浏览器执行,页面会原样展示,达到防御 XSS 的目的。
0x0 每日资源分享【PHP项目实战教程】
原文始发于微信公众号(风铃情报站):PHP基础-表单和请求
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论