很久以来,问题已经回答过了,但实际上有更好的答案(或变通方法)。PHP允许您在原始输入流中,因此您可以执行如下操作:
$query_string = file_get_contents('php://input');
这将为您提供查询字符串格式的 $_POST 数组,句点应如此。
然后,您可以根据需要解析它(根据POSTer的评论))
<?php
// Function to fix up PHP's messing up input containing dots, etc.
// `$source` can be either 'POST' or 'GET'
function getRealInput($source) {
$pairs = explode("&", $source == 'POST' ? file_get_contents("php://input") : $_SERVER['QUERY_STRING']);
$vars = array();
foreach ($pairs as $pair) {
$nv = explode("=", $pair);
$name = urldecode($nv[0]);
$value = urldecode($nv[1]);
$vars[$name] = $value;
}
return $vars;
}
// Wrapper functions specifically for GET and POST:
function getRealGET() { return getRealInput('GET'); }
function getRealPOST() { return getRealInput('POST'); }
?>
对于 OpenID 参数非常有用,这些参数同时包含 '.' 和 '_',每个参数都有一定的含义!