![]() |
Aтрибут ISMAP
Пытаюсь использовать атрибут ISMAP тэга IMG.
<A HREF="http://127.0.0.1/map.php"><IMG SRC="map.gif" ISMAP></A> Координаты передаются по ссылке в файл 127.0.0.1/map.php в виде данных после знака «?» http://127.0.0.1/map.php?284,147. Как можно эти координаты в файле 127.0.0.1/map.php перевести в переменные для их дальнейшего использования в сценарии PHP (конвертировать координаты клика мышки в переменные сценария)желательно при помощи PHP? |
Код:
list($xcrd, $ycrd) = explode(',', $_SERVER['QUERY_STRING']); |
Не совсем правильно.
if (preg_match('/(?:^|\?)(\d+)\,(\d+)$/',$_SERVER['QUERY_STRING'],$m)) list($null,$x,$y) = $m; |
Ты путаешь QUERY_STRING и REQUEST_URI. Первый суть подстрока второго после знака ?. Потому твой регэксп не пройдет, т.к. знака ? в QUERY_STRING не будет. А задачи проводить валидацию входных параметров топикстартер не ставил - соответственно и получил ответ.
|
Нет, я ничего не путаю. Впиши в ссылку script.php?act=go&mode=sat и он сделает script.php?act=go?10,20 и ты получишь x="act=go&mode=sat?10"
|
Заработал код :
list($xcrd, $ycrd) = explode(',', $_SERVER['QUERY_STRING']); echo "$xcrd, $ycrd <br/>"; – показал координаты Код : if (preg_match('/\?(\d+)\,(\d+)$/',$_SERVER['QUERY_STRING'],$m)) list($null,$x,$y) = $m; echo "$x, $y <br/>"; показал только «,» После исправления фильтра второй код заработал – показал координаты аналогично первому коду. if (preg_match("/(\d+),(\d+)/",$_SERVER['QUERY_STRING'],$m)) list($null,$x,$y) = $m; echo "$x, $y <br/>"; Скорее всего в регулярных выражениях что-то. Он работает только когда ссылка имеет вид script.php?act=go?10,20, а когда script.php?10,20 – не работает. А первый скрипт наоборот – если ссылка имеет вид script.php?act=go?10,20 list($xcrd, $ycrd) = explode(',', $_SERVER['QUERY_STRING']); echo "$xcrd, $ycrd <br/>"; выводит « act=go?10,20 ». |
Olegat
Посмотри выше внимательней - там RaZEr еще вчера исправленный код привел. Либо аналог без регэкспов и без валидации: PHP код:
|
Да, я не обратил внимания на изменения в топике.
После замены ('/(?:^|\?)(\d+)\,(\d+)$/') в регулярных выражениях всё заработало. Спасибо всем! |
Часовой пояс GMT +4, время: 17:39. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.