PHP $_GET 变量
$_GET 是 PHP 超级全局变量之一,主要用于通过 URL 向服务器发送数据。它用于获取 URL 中的查询字符串(查询参数)。例如,当你在浏览器中输入类似 http://example.com/index.php?name=John&age=25 这样的 URL 时,$_GET 变量将包含 name 和 age 作为键,并存储相应的值。
1️⃣ $_GET 变量的基本用法
当通过 GET 方法提交表单时,数据会以查询字符串的形式附加到 URL 后面。$_GET 允许你在 PHP 脚本中访问这些数据。
示例 1:通过 URL 获取参数
假设我们有以下 URL:
http://example.com/index.php?name=John&age=25
在 PHP 文件中,我们可以使用 $_GET 来访问 URL 中的查询参数:
<?php
// 获取 URL 中的查询参数
$name = $_GET['name']; // John
$age = $_GET['age']; // 25
echo "姓名: " . $name . "<br>";
echo "年龄: " . $age . "<br>";
?>
2️⃣ 使用 $_GET 获取表单数据
通过 GET 方法提交的表单会将数据附加到 URL 中,并使用 $_GET 变量进行访问。例如:
HTML 表单
<form action="index.php" method="get">
姓名: <input type="text" name="name">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form>
PHP 处理脚本(index.php)
<?php
// 获取表单数据
if (isset($_GET['name']) && isset($_GET['age'])) {
$name = $_GET['name'];
$age = $_GET['age'];
echo "姓名: " . $name . "<br>";
echo "年龄: " . $age . "<br>";
} else {
echo "请填写表单!";
}
?>
提交后的 URL
http://example.com/index.php?name=John&age=25
3️⃣ 安全性注意事项
由于 $_GET 数据直接暴露在 URL 中,它容易被篡改并且可以被日志记录器、浏览器历史等泄露。因此,敏感数据(如密码或私人信息)不应通过 GET 方法传递。对于敏感数据,应使用 POST 方法。
过滤与验证:
- 验证输入数据:使用
filter_var()函数验证$_GET数据的格式。 - 数据清理:避免 XSS 攻击,使用
htmlspecialchars()函数清理数据。
示例:
<?php
// 获取并清理输入数据
$name = isset($_GET['name']) ? htmlspecialchars($_GET['name']) : '';
$age = isset($_GET['age']) ? (int)$_GET['age'] : 0;
echo "姓名: " . $name . "<br>";
echo "年龄: " . $age . "<br>";
?>
4️⃣ 使用 $_GET 传递多个参数
$_GET 可以同时传递多个参数,多个参数通过 & 符号分隔。例如:
http://example.com/index.php?name=John&age=25&city=NewYork
你可以在 PHP 中访问这些参数:
<?php
$name = $_GET['name'];
$age = $_GET['age'];
$city = $_GET['city'];
echo "姓名: " . $name . "<br>";
echo "年龄: " . $age . "<br>";
echo "城市: " . $city . "<br>";
?>
5️⃣ $_GET 和 $_POST 的区别
| 特点 | $_GET | $_POST |
|---|---|---|
| 数据传输方式 | URL 查询字符串 | HTTP 请求体 |
| 数据长度限制 | URL 长度限制(大约 2000 字符) | 没有明显限制 |
| 安全性 | 数据暴露在 URL 中 | 数据不直接暴露在 URL 中 |
| 使用场景 | 查询数据、简单表单 | 提交敏感信息、大量数据 |
6️⃣ 推荐阅读与文档
通过 $_GET 变量,我们可以轻松地从 URL 获取用户提交的数据。适当的验证和数据清理是确保应用安全的关键。更多详细内容请关注其他相关文章!