📜  php 使用 get 获取 url - PHP (1)

📅  最后修改于: 2023-12-03 14:45:22.158000             🧑  作者: Mango

PHP 使用 GET 获取 URL

在 Web 开发过程中,我们经常需要从 URL 中获取特定的参数,这时候就可以使用 GET 方法获取 URL 中的参数。在 PHP 中,我们可以通过 $_GET 超全局数组来获取 URL 中的参数。

GET 请求

GET 请求是通过 URL 传递数据的一种请求方式。GET 请求不像 POST 请求那样将请求数据封装在请求体中,而是将请求参数直接拼接在 URL 中。GET 请求通常用于获取数据,因为 GET 请求将会以明文形式将请求参数暴露在 URL 中,所以不适合用于敏感数据的传输。GET 请求的 URL 格式如下:

http://example.com/page.php?id=123&name=foo

其中 ? 后面的参数是请求参数,不同的参数之间以 & 符号分隔,参数名和参数值之间以 = 符号分隔。

使用 $_GET 获取 URL 参数

当我们收到一个 GET 请求时,我们可以通过 $_GET 超全局数组获取 URL 中的参数。例如,假设我们已经收到一个 GET 请求 http://example.com/page.php?id=123&name=foo,我们可以通过以下方式获取 URL 中的参数:

$id = $_GET['id'];    // 123
$name = $_GET['name'];  // "foo"

注意,当 URL 中的参数不存在时,使用 $_GET 获取对应的参数将会导致 PHP 警告。为了避免这个问题,我们应该先判断对应的参数是否存在:

if (isset($_GET['id'])) {
    $id = $_GET['id'];
} else {
    // 参数不存在
}
URL 参数编码

URL 中的参数需要进行编码,否则容易导致参数值错误。PHP 提供了 urlencode() 函数和 urldecode() 函数来进行 URL 编码和解码。例如,以下代码将字符串 "Hello, world!" 编码成了 "Hello%2C+world%21":

$str = urlencode("Hello, world!");    // "Hello%2C+world%21"

需要注意的是,+ 符号在 URL 中代表空格,所以当参数值中存在空格时,将会被自动转换成 + 符号。例如,以下代码将字符串 "Hello world!" 编码成了 "Hello+world%21":

$str = urlencode("Hello world!");    // "Hello+world%21"
示例代码
<?php
if (isset($_GET['id'])) {
    $id = $_GET['id'];
} else {
    $id = 0;
}
$name = "";
if (isset($_GET['name'])) {
    $name = $_GET['name'];
}

echo "ID: " . $id . "<br>";
echo "Name: " . $name . "<br>";
?>

以上代码演示了如何使用 $_GET 获取 URL 中的参数,并对不存在的参数做了处理。可以通过如下 URL 进行测试:

http://example.com/page.php?id=123&name=foo