在 HTTP 请求中传递参数可以通过多种方式,包括 URL 查询参数、请求体(如 POST 表单数据或 JSON 数据)和 HTTP 头部。在 PHP 中,你可以通过不同的全局变量来接收这些数据。

1. URL 查询参数

这是通过 URL 传递参数的一种方式。例如:https://example.com/page.php?param1=value1&param2=value2

在 PHP 中,你可以使用 $_GET 全局数组来获取这些参数:

$param1 = isset($_GET['param1']) ? $_GET['param1'] : null;
$param2 = isset($_GET['param2']) ? $_GET['param2'] : null;

2. 请求体(POST 方法)

当使用 POST 方法发送请求时,参数通常放在请求体中。这包括表单数据或可以是 JSON、XML 等格式的数据。

对于表单数据(Content-Type: application/x-www-form-urlencoded 或 multipart/form-data):

$param1 = isset($_POST['param1']) ? $_POST['param1'] : null;
$param2 = isset($_POST['param2']) ? $_POST['param2'] : null;

对于 JSON 数据(Content-Type: application/json),你需要从原始输入流中读取数据:

$json = file_get_contents('php://input');
$data = json_decode($json, true);
$param1 = isset($data['param1']) ? $data['param1'] : null;
$param2 = isset($data['param2']) ? $data['param2'] : null;

3. HTTP 头部

可以自定义 HTTP 头部来传递额外的数据。例如,可以设置一个名为 X-Custom-Param 的头部。

在客户端(如使用 cURL):

curl -H "X-Custom-Param: value" https://example.com

在 PHP 中,所有 HTTP 请求头部都会被包含在 $_SERVER 数组中,键名会被转换为全大写,并且前缀为 HTTP_。因此,你可以这样获取:

$customParam = isset($_SERVER['HTTP_X_CUSTOM_PARAM']) ? $_SERVER['HTTP_X_CUSTOM_PARAM'] : null;

ps:

在 HTTP 头部中传递参数时,通常使用短横线(dash, -)来分隔单词,而不是下划线(underscore, _)。这是因为 HTTP 标准头部字段通常使用短横线作为单词分隔符。例如,常见的 HTTP 头部如 Content-Type 和 User-Agent 都是使用短横线分隔的。虽然技术上可能可以使用下划线,在实际应用中,为了确保最大的兼容性和遵循 HTTP 标准,最好使用短横线来分隔 HTTP 头部中的单词。

总结

根据你的需要选择适合的方法来传递参数。对于从客户端到服务器的数据传递,这些方法各有优势和适用场景。在 PHP 中,$_GET 用于接收 URL 查询参数,$_POST 用于接收 POST 请求体中的表单数据,php://input 用于接收非表单格式的请求体数据,而 $_SERVER 用于获取 HTTP 头部信息等服务器环境数据。