在PHP中接收和处理GET请求

在PHP中接收和处理GET请求,php,httpwebrequest,Php,Httpwebrequest,我正在尝试用我的站点上的RSS轮询替换RSS轮询。我可以使用谷歌提供的订户库发送订阅请求。从代码上看,它看起来像是通过带有RSS URL和回调URL的cURL发送post请求 这就是我需要的方向: 为了完成订阅请求,我的回调URL必须接收GET请求,然后从GET请求回显一个值和一个200响应。如何从get请求中获取参数?是否通过卷曲再次进行回音?如果是这样,什么选项应该包括200响应?这个非常简单的脚本应该是一个开始: echo $_GET["request_name"]; 这将输出GET

我正在尝试用我的站点上的RSS轮询替换RSS轮询。我可以使用谷歌提供的订户库发送订阅请求。从代码上看,它看起来像是通过带有RSS URL和回调URL的cURL发送post请求

这就是我需要的方向:


为了完成订阅请求,我的回调URL必须接收GET请求,然后从GET请求回显一个值和一个200响应。如何从get请求中获取参数?是否通过卷曲再次进行回音?如果是这样,什么选项应该包括200响应?

这个非常简单的脚本应该是一个开始:

  echo $_GET["request_name"];
这将输出GET参数
request\u name
,并(隐式)发送一个200

在回显之前显式声明内容类型也是一个好主意,以防止默认内容类型(通常为“text/html”)进入:

header("Content-type: text/plain");

请注意,在回显外部数据时,您可能需要首先清理输出-如果输出格式为HTML,您可能希望执行类似于
echo htmlspecialchars($_GET[“request_name”])的操作以防止

php开发人员邮件列表上最近有一条关于这一点的帖子。您无法访问$\u GET superglobal中的“hub.challenge”的原因是由于注册了\u globals。基本上,PHP会在创建超全局变量之前清除所有参数名称。任何点都将转换为下划线。在PHP6中,它看起来是“修复”的,但由于BC问题,在这之前不会


这是我尝试的第一件事。GET请求假定包含一个名为“hub.challenge”的参数。因此,我使用了$\u GET,并尝试将值写入txt文件。我还添加了一个字符串,它确实到达了回调,因为它在txt文件中显示了字符串,但没有使用$\u GET.$request=$\u GET['hub.challenge']显示参数中的值;fh=fopen('test.txt,'a')或die(“无法打开文件”);fwrite($fh,‘测试:’。$request);fclose($fh);嗯,看起来没问题,应该会输出一个该名称的GET参数。变量名中的点也不应该是问题。您是否可以首先确认您的脚本正在使用参数进行实际调用,例如通过检查访问日志?什么是PHP版本?注意:变量名中的点和空格转换为下划线。例如变成$_请求[“a_b”]。来自PHP文档。@Benji此处预期的响应内容类型看起来不是HTML,而是类似于
text/plain
,这将解决这些问题,但您是对的,我将添加一个关于清理输出和显式声明内容类型的注释。