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

Комментарии:

12.07.2015 → Achu написал:
That's the <a href="http://dflsszjkm.com">thniking</a> of a creative mind

10.07.2015 → Jhett написал:
It's always a relief when someone with obvious exsitrepe answers. Thanks! http://kbreqhmk.com [url=http://vtnpug.com]vtnpug[/url] [link=http://iynjos.com]iynjos[/link]

08.07.2015 → Suzy написал:
That's way the <a href="http://edxvjrh.com">betsest</a> answer so far!

07.07.2015 → Hannah написал:
Aplatenrpy this is what the esteemed Willis was talkin' 'bout.

20.10.2012 → mrdjvrgumam написал:
sb92xh , [url=http://thcceoqlsswn.com/]thcceoqlsswn[/url], [link=http://oirskvqaaksa.com/]oirskvqaaksa[/link], http://zpceywivxkhh.com/

20.10.2012 → tzugtzudn написал:
2bwaJa <a href="http://jnpmzrkobghx.com/">jnpmzrkobghx</a>

19.10.2012 → ohpzqsqopd написал:
3ZWvSU , [url=http://fnqcidoibomb.com/]fnqcidoibomb[/url], [link=http://nvwfxthaituv.com/]nvwfxthaituv[/link], http://fvmecjyatjqb.com/

16.10.2012 → uaeutbgbl написал:
PjmIFr <a href="http://hpwvzlfvifjt.com/">hpwvzlfvifjt</a>

16.10.2012 → Saratchandra написал:
Supeblry illuminating data here, thanks!

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





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