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

舞姬之光
发布: 2025-12-21 23:50:02
原创
315人浏览过
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');<br>$data = json_decode($raw, true);<br>if (json_last_error() !== JSON_ERROR_NONE) { /* 处理解析失败 */ }
    登录后复制

安全地处理请求输入

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

  • 避免直接使用$_GET['id']拼SQL或输出到页面,优先用filter_input()filter_var()
  • 例如获取整数ID:
    $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);<br>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或特殊格式:

ChatPDF
ChatPDF

使用ChatPDF,您的文档将变得智能!跟你的PDF文件对话,就好像它是一个完全理解内容的人一样。

ChatPDF 327
查看详情 ChatPDF

立即学习PHP免费学习笔记(深入)”;

  • 发送JSON响应:
    header('Content-Type: application/json; charset=utf-8');<br>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');<br>header('Pragma: no-cache');<br>header('Expires: 0');
    登录后复制
  • 注意:所有header()调用必须在任何输出(包括空格、BOM)之前执行

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

以上就是PHP请求与响应处理指南_PHP解析HTTP请求的方式的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号