登录
首页 >  文章 >  php教程

PHP处理HTTP请求与响应详解

时间:2026-01-05 10:18:43 308浏览 收藏

在文章实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《PHP处理HTTP请求与响应方法解析》,聊聊,希望可以帮助到正在努力赚钱的你。

PHP通过超全局数组获取HTTP请求数据:$_GET接收URL参数,$_POST处理表单数据,file_get_contents('php://input')读取JSON等原始请求体,$_SERVER['HTTP_*']访问请求头,并需校验方法、类型及过滤输入。

PHP请求与响应处理指南_PHP解析HTTP请求的方式

PHP如何获取HTTP请求数据

PHP通过超全局数组自动解析客户端发来的HTTP请求数据,不同来源的数据对应不同变量:

  • $_GET:接收URL查询参数(如 ?id=123&name=test
  • $_POST:接收表单提交的application/x-www-form-urlencodedmultipart/form-data数据
  • $_REQUEST:默认合并GET、POST、COOKIE,但不推荐依赖,因顺序和配置可变
  • file_get_contents('php://input'):读取原始请求体,适用于JSON、XML等application/json请求(此时$_POST为空)
  • $_SERVER['HTTP_*']:访问请求头,如$_SERVER['HTTP_AUTHORIZATION']$_SERVER['HTTP_CONTENT_TYPE']

判断请求方法与内容类型

不能只靠变量是否存在来判断请求类型,需主动检查:

  • $_SERVER['REQUEST_METHOD']确认是GET、POST、PUT、DELETE等
  • $_SERVER['CONTENT_TYPE']识别数据格式,例如application/jsontext/plain
  • 对JSON请求,建议先校验Content-Type,再解析:
    $raw = file_get_contents('php://input');
    $data = json_decode($raw, true);
    if (json_last_error() !== JSON_ERROR_NONE) { /* 处理解析失败 */ }

安全地处理请求输入

所有外部输入都不可信,必须过滤和验证:

  • 避免直接使用$_GET['id']拼SQL或输出到页面,优先用filter_input()filter_var()
  • 例如获取整数ID:
    $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
    if ($id === false || $id === null) { /* 参数无效 */ }
  • 对输出到HTML的内容,用htmlspecialchars()转义;对数据库操作,用PDO预处理或mysqli_real_escape_string(仅限非预处理场景)
  • 上传文件需检查$_FILES['file']['error']$_FILES['file']['type'],但不要只信type字段(可被伪造),应结合finfo_file()验证实际MIME类型

构造HTTP响应头与输出

PHP默认输出Content-Type:text/html,需手动设置才能支持API或特殊格式:

  • 发送JSON响应:
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode(['status' => 'ok', 'data' => $result]);
  • 返回状态码:
    http_response_code(404); // 或 header('HTTP/1.1 404 Not Found');
  • 禁止缓存(如API):
    header('Cache-Control: no-cache, no-store, must-revalidate');
    header('Pragma: no-cache');
    header('Expires: 0');
  • 注意:所有header()调用必须在任何输出(包括空格、BOM)之前执行

基本上就这些。不复杂但容易忽略细节。

好了,本文到此结束,带大家了解了《PHP处理HTTP请求与响应详解》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>