dimarina.ru

html, css и javascript1   Разное1   Рецепты программирования на PHP или практические советы по программированию7   Управление проектом1  

 

Рецепты программирования на PHP или практические советы по программированию → Меняем параметр в ссылке

Иногда возникает необходимость заменить один или несколько параметров в ссылке. Ссылки с параметрами на сайтах уже мало где используются, т.к. такие ссылки не являются "красивыми". Теме не менее, в системах администрирования использование параметров в строке - довольно частое явление.

Ситуация замены параметра возникает часто при совершении какого-то действия с возвратом на предыдущую страницу. Например, в форме редактирования товара по адресу http://domain.ru/admin/?action=edit&id=123 пользователь хочет удалить картинку. Для удаления картинки используется ссылка http://domain.ru/admin/?action=delete_picture&id=123, чтобы после отработки скрипта удаления картинки вернуть пользователя на исходную страницу, надо заменить параметр action=delete_picture на edit. Это простой случай, бывает, когда в строке параметров указывается довольно много параметров и приходится долго формировать ссылку заново.

Чтобы не пропустить ни один "старый" параметр, воспользуемся довольно простым приемом:

1 if(isset($_GET["action"])) $_GET["action"] = "edit";
2 $newURL "http://domain.ru/admin/?".http_build_query($_GET);

Теперь пользователя можно отправить назад. Например, таким образом (если никакого вывода не происходило, т.е. если заголовки не были отправлены. Но об этом в другой раз.):

1 header("Location: $newURL"); exit;

В более общем случае, чтобы грамотно сформировать ссылку из параметров, следует организовать массив параметров и воспользоваться оператором http_buil_query. Также, не следует забывать, что в качестве значения параметра могут появляться символы, которые необходимо экранировать. Например, символ & следует заменять & иначе он будет воспринят как разделитель параметров.

1 $opts = array(
2     "par1"=>val1
3     ,"par2"=>val2
4     ,"par3"=>val3
5 );    
6 $qs http_build_query($opts);
7 $url "http://domain.ru/admin/?".htmlentities($qs);

В результате получаем ссылку http://domain.ru/admin/?par1=val1&par2=val2&par3=val3

Написать комментарий





Включите отображение картинок в браузере
Число на картинке: