如何通过file_get_contents()传递PHP变量到外部URL?
解决方案
方案1:GET方式传参(最简单,适合参数不敏感的场景)
你直接把需要传递的变量拼到请求URL的查询字符串里即可,示例代码如下:
<?php $id = '123456'; // 对参数值做URL编码,避免特殊字符破坏URL格式 $url = "https://www.example.com/user.php?id=" . urlencode($id); echo file_get_contents($url); ?>
外部站点的user.php对应接收代码:
<?php $id = $_GET['id'] ?? ''; // 取不到参数时给默认值避免报错 echo $id; ?>
方案2:POST方式传参(适合参数多、或参数内容较敏感的场景)
如果需要用POST请求传参,你可以自定义file_get_contents的请求流上下文,修改请求方式和携带POST参数,示例代码如下:
<?php $id = '123456'; // 构造POST参数数组 $postData = [ 'id' => $id ]; // 创建HTTP请求上下文 $context = stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => http_build_query($postData) ] ]); $url = "https://www.example.com/user.php"; // 传入上下文发起POST请求 echo file_get_contents($url, false, $context); ?>
外部站点的user.php对应接收代码:
<?php $id = $_POST['id'] ?? ''; echo $id; ?>
注意事项
- 你原来的代码无法生效是因为外部站点的PHP脚本运行在对方服务器上,和你本地代码的变量完全隔离,不可能直接读取你本地的
$id,必须通过HTTP请求的参数传递过去 - 以上方案不需要修改
include相关的PHP配置,只要你的环境开启了allow_url_fopen(绝大多数环境默认开启,和外部include权限是独立的两个配置)即可正常使用 - 传递参数前做好编码处理,避免特殊字符导致请求异常
内容的提问来源于stack exchange,提问作者r0naldinio
相关产品推荐
相关产品推荐

