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

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

PHP请求与响应处理指南_PHP解析HTTP请求的方式-第1张图片-佛山资讯网

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或特殊格式:

标签: mysql php html js json cookie app ai 状态码 表单提交 php解析 lsp

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~