一个愚蠢的问题,但我有点困惑。 我使用pubsubhubbub并使用if(isset($ _ HTTP_RAW_POST_DATA))检查新信息。 我检查,如果用户登录用:用户可以发送HTTP_RAW_POST_DATA到我的网站吗?
if(isset($_SESSION['user'])) {
//logged
}
用户可以发送HTTP_RAW_POST_DATA?
一个愚蠢的问题,但我有点困惑。 我使用pubsubhubbub并使用if(isset($ _ HTTP_RAW_POST_DATA))检查新信息。 我检查,如果用户登录用:用户可以发送HTTP_RAW_POST_DATA到我的网站吗?
if(isset($_SESSION['user'])) {
//logged
}
用户可以发送HTTP_RAW_POST_DATA?
所以,基本上任何向您的回调发送HTTP POST请求的人实际上都会发送$ HTTP_RAW_POST_DATA。许多语言和框架都有库将它解析为HTTP POST params。 在PubSubHubbub的上下文中,正文不是由params构成的,因此您必须使用较低级别的$ HTTP_RAW_POST_DATA来解析XML,因为params无意义。
如果你想,以确保您的回调URL,也有倍数的方法来做到这一点:
原始发布数据是用于提取可由$ _POST访问的POST参数的数据。用户也可以发布未发布的数据,是的。
用户将始终将原始POST数据发送到您的脚本。 PHP会解析它并填充$ _POST。当从表单提交,$ _ POST等价于:
parse_str($HTTP_RAW_POST_DATA, $data);
var_dump($_POST);
var_dump($data); // yields the same as $_POST
但是,如果你真的想获取原始POST数据的首选方法是:
$rawPost = file_get_contents('php://input');
...因为$ HTTP_RAW_POST_DATA依赖于always_populate_raw_post_data INI设置,并且还因为它不会与multipart/form-data内容类型配合使用。
请注意,如果您希望使用类型为application/x-www-form-urlencoding的请求实体,那么'HTTP_RAW_POST_DATA'在PHP *中仅* * lower-level * *。这是因为PHP具有处理具有该类型的请求实体的本地功能。如果您希望使用其他类型的请求实体(如XML,YAML或JSON),那么PHP可能不具备该类型的本机功能。在这种情况下,'HTTP_RAW_POST_DATA'是处理请求实体的级别。 – yfeldblum 2010-11-12 17:29:14
正是,谢谢澄清! – 2010-11-12 17:34:15