IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Aтрибут ISMAP (http://www.imho.ws/showthread.php?t=108065)

Olegat 07.09.2006 17:15

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?

Saruman 07.09.2006 17:22

Код:

list($xcrd, $ycrd) = explode(',', $_SERVER['QUERY_STRING']);

RaZEr 07.09.2006 17:31

Не совсем правильно.

if (preg_match('/(?:^|\?)(\d+)\,(\d+)$/',$_SERVER['QUERY_STRING'],$m)) list($null,$x,$y) = $m;

Saruman 07.09.2006 17:50

Ты путаешь QUERY_STRING и REQUEST_URI. Первый суть подстрока второго после знака ?. Потому твой регэксп не пройдет, т.к. знака ? в QUERY_STRING не будет. А задачи проводить валидацию входных параметров топикстартер не ставил - соответственно и получил ответ.

RaZEr 07.09.2006 17:58

Нет, я ничего не путаю. Впиши в ссылку script.php?act=go&mode=sat и он сделает script.php?act=go?10,20 и ты получишь x="act=go&mode=sat?10"

Olegat 08.09.2006 09:04

Заработал код :
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 ».

Saruman 08.09.2006 11:34

Olegat
Посмотри выше внимательней - там RaZEr еще вчера исправленный код привел.

Либо аналог без регэкспов и без валидации:
PHP код:

$query $_SERVER['QUERY_STRING'];
$quespos strrpos($query'?');
list(
$xcrd$ycrd) = explode(','$quespos === false $query substr($query$quespos+1)); 


Olegat 08.09.2006 15:45

Да, я не обратил внимания на изменения в топике.
После замены ('/(?:^|\?)(\d+)\,(\d+)$/') в регулярных выражениях всё заработало.
Спасибо всем!


Часовой пояс GMT +4, время: 17:39.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.