Хранить все GET-запросы в одной переменной PHP - PullRequest
2 голосов
/ 24 декабря 2011

Я пытаюсь сохранить все переменные, отправленные на сайт, в одной переменной (только для целей регистрации).

Так что, если пользователь заходит на www.mysite.com и ставит? Id= 4 & auth = 230984721839

Я хочу захватить оба этих GET и сохранить их в переменной, такой как $ gets

Я пытался:

$gets = print_r($_GET);
$posts = print_r($_POST);

Но это сделалне работа.Это вообще возможно?Я не хочу, чтобы пользователь знал, что я их снимаю.

Я бы тоже хотел получить POST!

Ответы [ 6 ]

7 голосов
/ 24 декабря 2011

Вы можете добавить флаг к print_r , чтобы сказать ему возвращать результат, а не выводить его.

$gets = print_r($_GET, true);
$posts = print_r($_POST, true);

Однако вы можете захотеть изучить сериализацию вместо этого ассоциативный массив.

Обновление

На основании ваших комментариев по вашему вопросу, я полагаю, вы действительно хотите:

$gets = $_SERVER['QUERY_STRING'];
$posts = file_get_contents('php://input');
5 голосов
/ 24 декабря 2011

Если вы хотите, чтобы и $_GET, и $_POST как строки запроса, вы можете сделать это:

$gets = http_build_query($_GET);
$posts = http_build_query($_POST);
2 голосов
/ 24 декабря 2011

Прежде всего, вы можете оценить, что все параметры, как GET, так и POST, собраны в $_REQUEST.

Во-вторых, не используйте print_r. Это выведет переменную и не даст вам никакого разумного результата. Вместо этого просто скажите

$params = $_REQUEST;

Если вам нужны необработанные данные, вы можете получить их, как в @ MichałŠrajer's answer (GET) и comment (POST) Таким образом,

$get = $_SERVER['QUERY_STRING'];
$post = file_get_contents("php://input");
2 голосов
/ 24 декабря 2011

$_SERVER['QUERY_STRING'].См. this .

Это даст вам необработанный запрос, чтобы вы могли перехватить любые недействительные URL, которые могут быть полезны для целей ведения журнала.

1 голос
/ 24 декабря 2011

Для целей хранения есть еще одна возможность, и это serialize массив $ _GET.

$data = serialize($_GET);

А затем вы сохраняете $data в своей базе данных.

Например, если ваша строка get равна ?foo=bar

вы получите эту строку a:1:{s:3:"foo";s:3:"bar";}

Вы можете десериализовать его с помощью unserialize($data);

1 голос
/ 24 декабря 2011

С помощью этого кода вы можете получить любые значения POST или GET, а затем, возможно, поместить их в массив для последующего использования

    foreach ($_REQUEST as $key => $value ) {
        ##Do what you want here - may be push values into array here
    }
...