PHP マジック:パラメータ名にドット(.)を使ってはいけない

register_global を有効にした場合、パラメータ名にドットがあると不都合があるという理由で、リクエストのパラメータ名にドット(.)が含まれていると無条件にアンダースコア(_)に変換されることが分かった。
この変換ルールは、 $_POST, $_GET, $_COOKIE, $_REQUEST などの変数にも適用される。

正確なパラメータ名が知りたい場合は、自分でパースする必要がある。

変換前の値を取得するには、
$_GET:

<?php
$source = $_SERVER['QUERY_STRING'];

$_POST:

<?php
$source = file_get_contents('php://input');

$_COOKIE: (Apache モジュールの場合のみ可能)

<?php
$headers = getallheaders();
$source = $headers['Cookie'];

変換前の値を元にパラメータを取得する(POST の例)
http://stackoverflow.com/questions/68651/can-i-get-php-to-stop-replacing-characters-in-get-or-post-arrays

<?php
// Function to fix up PHP's messing up POST input containing dots, etc.
function getRealPOST() {
    $pairs = explode("&", file_get_contents("php://input"));
    $vars = array();
    foreach ($pairs as $pair) {
        $nv = explode("=", $pair);
        $name = urldecode($nv[0]);
        $value = urldecode($nv[1]);
        $vars[$name] = $value;
    }
    return $vars;
}
?>