PHP Как мне сохранить все переменные GET в ссылках? - PullRequest
2 голосов
/ 26 апреля 2009

У меня есть некоторый код PHP, который генерирует динамические таблицы данных на лету. Нажимая на разные ссылки, вы «уточняете» таблицы данных. Мне бы хотелось, чтобы каждая из этих ссылок сохранила текущую информацию GET и добавила к ней. IE:

$allPreviousVars = ???; // Could be 20+ vars
echo "<a href='".$allPreviousVars."&newVar=2'>Link</a>";

Я могу придумать способы сделать это, выполнив цикл $ _GET с циклом, но наверняка есть более быстрый способ сделать это?

Ответы [ 5 ]

8 голосов
/ 26 апреля 2009

Как насчет $ _SERVER ["QUERY_STRING"]?

РЕДАКТИРОВАТЬ: Поскольку вы были достаточно любезны, чтобы дать мне кредит на этот ответ, я должен добавить одну вещь. Вы должны обернуть вышеупомянутую переменную в htmlspecialchars () перед ее выводом. В противном случае кто-то может ввести URL-адрес с ">, и он сломает вашу ссылку.

2 голосов
/ 27 апреля 2009

Я делаю это следующим образом:

<?php echo http_build_query(array_merge($_GET, array('foo'=>'bar', 'foo2'=>'bar2')); ?>

Обратите внимание, что любые существующие ключи 'foo' или 'foo2' будут заменены.

1 голос
/ 26 апреля 2009

Я бы, наверное, сделал это:

$query = mySanitizeFunction($_GET);
$url = http_build_query($query) . '&newVar=2';
1 голос
/ 26 апреля 2009

Используйте http_build_query () , если вам нужно сгенерировать строку запроса из измененного массива. Если вы просто хотите, чтобы строка запроса была отправлена ​​на текущую страницу, сделайте, как предложено, и используйте $ _SERVER ["QUERY_STRING"].

0 голосов
/ 26 апреля 2009

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

...