2012-01-27 2 views
0

У меня есть очень простая постраничная сценарий и искать формы с ~ 4 полей, и action="get" теперь моя проблема заключается в том, что, когда я представить мою форму, я получаю URL вроде этого:нумерация страниц и поисковая форма выпуск

так после того, как я отправить форму все нормально, но когда я перейти на страницу 2 мои изменения URL в:

user/people/2 

так мои параметры поиска исчезает, это, как я сделать мои ссылки

href="user/people/<?=$next?>" 

Так что мой вопрос в том, что является лучшим способом сохранить мои аргументы, потому что теперь я могу только думать о петле for и построить свою ссылку, объединив все значения $_GET, должен ли я сделать это так?

ответ

1

Просто добавьте $_SERVER[ 'QUERY_STRING' ] (обязательно htmlspecialchars() это первый).

href="user/people/<?php echo htmlspecialchars("{$next}?{$_SERVER[ 'QUERY_STRING' ]}"); ?>" 

Кстати, короткие теги PHP <?= ?> не являются переносимыми, поэтому следует учитывать не использовать те, и используя <?php echo ?> вместо этого.

Update:

@Wrikken поднимает несколько хороших точки в их ответе:

1) прохождение ENT_QUOTES в качестве второго аргумента htmlspecialchars()бы иметь важное значение при однократный кавычках значения атрибута (или чтобы оно было заменено на однократное цитирование в будущем). Это легко забыть, для меня так или иначе, так как я почти всегда дважды указываю значения атрибутов. К сожалению, он еще раздувает вызов, который уже раздувается длинным именем функции.

2) Если вы просто проходите строку запроса как есть, то я бы предпочел использовать $_SERVER[ 'QUERY_STRING' ] вместо http_build_query($_GET). Если, однако, вам нужно изменить некоторые параметры запроса, то http_build_query() будет билетом. Вы можете увидеть пример этого в моем PHP faceted browser.

1

Либо:

...ople/?<?php echo htmlspecialchars($_SERVER['QUERY_STRING'], ENT_QUOTES);?>" 

Или:

...ople/?<?php echo htmlspecialchars(http_build_query($_GET), ENT_QUOTES);?>" 

Или:

...ople/?<?php echo htmlspecialchars(http_build_query($some_custom_array), ENT_QUOTES);?>" 
Смежные вопросы