Задачка для знатоков форм.
Вот какое дело. Хотел сделать себе буркмарклет, который будет быстро делать IP Lookup. Для примера того, что я хочу, вот:
HTML код:
javascript:(function(){x=prompt(%22Uin:%22,%22%22);document.location=%22http://www.icq.com/whitepages/about_me.php?uin=%22+x})(); Пытаюсь сделать букмарклет для быстрого запроса - НЕ МОГУ. Казалось бы, должно быть что-то типа HTML код:
http://www.whois-service.ru/lookup/?domain=195.19.16.100&imageField2.x=0&imageField2.y=0 Ан нет, не выходит! Даёт пустой лист - и всё тут. ПОЧЕМУ? |
hasherfrog
ответ может быть очень простым - у них в form стоит метод post. А GET они для данного скрипта могут игнорировать (либо на уровне сервера, либо на уровне скрипта). возможный вариант - использование своего промежуточного скрипта, который бы по твоему запросу отправлял им сформированный POST. второй вариант - формировать POST и уже его отправлять им прямо из буркмарклет (не уверена, что реально) |
mar
Я не специалист, честно, не очень понял. Т.е. в запросе http://www.whois-service.ru/lookup/?...mageField2.y=0 чего-то не хватает? Я сначала подумал, реферрер отселживают. Пробовал с реферрером - всё равно не выходит. Может, там кукис какой-то ещё используется? Джава скрипты со станицы смотрел-смотрел - ни черта не понял :[ |
нет, скорее всего все проще:
у них в форме в явном виде используется метод POST: Код:
<form method="post" action="./"> Цитата:
- сервер может быть настроен на принятие только POST-запросов (ну, например, из соображений безопасности) - сервер принимает все, но скрипт расчитывает на прием именно POST, а GET просто не рассматривает (например в современных версиях PHP по умолчанию, опять-таки из соображений безопасности, стоит register_globals off . Это значит, что (опять-таки по-умолчанию, но по вполне разумному умолчанию) нельзя, получив нашу строку писать сразу $переменная1, а надо $_GET['переменная1'] или, соответственно $_POST['переменная1']. Соответственно, если автор скрипта работает с POST, то он написал $_POST['переменная1'], а переменные, засандаленные в адресную строку были просто проигнорированы). |
А-а-а-а, Семён Семёныч...
Понял, спасибо. Век живи, век учись. Тогда единственным способом будет сохранение html-файла на диск и вызов его, скажем, по букмарклету, с последующим заполнением нужного поля и скриптового нажатия Send. Эммм, пока не знаю как это сделать, но главное я понял. Спасибо. |
hasherfrog
ну да - свой промежуточный скрипт. |
Цитата:
|
Например, вот эта страница. Вроде понимает и работает через GET. Реагирует на запрос типа: http://www.zoneedit.com/whois.html?zone=123.21.123.13
Вообще подобных сайтов очень много в инете, можно выбрать по вкусу :) |
Если искать другие ресурсы, то тогда ИМХО лучше это:
http://leader.ru/secure/whoiz.html?q=255.255.255.255 Правда у них очень серьезные ограничения на частоты попыток. Ну а подобным реесурсам есть даже отдельный топик: FAQ | Как можно узнать свой ip-адрес в интернете |
vadimiron
Greyman Да, я понимаю, я уже сделал через nic.ru Там тоже работает ( http://www.nic.ru/whois/?ip=195.2.62.130 ) Просто на who-is как-то больше вкусностей :] (WHOIS, TRACERT, PING, DNS WATCH, WHATS, IP LOOKUP) Ну я и подумал, сделаю одну примочку, другую... Ну и если честно, просто "заело" меня, как же так? ;] |
hasherfrog
Я тут в "ХВЗ" в развитие этой темы свой топик поднял (мне сам принцип пригодился бы...): "Ручное" формирование POST запроса в браузере Также могут пригодиться эти ссылки: http://astropolis.net/j-script/form.shtml http://www.codenet.ru/webmast/php/HTTP-POST.php |
Greyman
Спасибо, статьи пригодились. ALL, ловите решение моей задачи. Я КРУТ!!! HTML код:
javascript:(function(){var nD, nW, x; x=prompt(%22IP2Lookup:%22, %22%22); if(x!=null) { nW = window.open("","HASHPOST","width=100,height=100"); nD=nW.document; nD.open(); nD.writeln('<html><head><title>:HASHPOST:</title><base target=%22_blank%22></head><body>'); nD.writeln('<form name=IPLOOCKUP method=post action=http://www.whois-service.ru/lookup/>'); nD.writeln('<script></script>'); nD.writeln('<input name="domain" type="text" class="form" size="30" />'); nD.writeln('</form></body></html>'); nW.focus(); nD.IPLOOCKUP.domain.value=x; nD.IPLOOCKUP.submit(); nD.close(); nW.close(); } })(); P.S. Всем огромное спасибо ещё раз. Честно говоря, я просто не ожидал даже, что получится :] |
hasherfrog
шай-бу! шай-бу!! в смысле здорово:) чтобы окно было в фокусе: Код:
<body onLoad="window.focus()"> |
Не совсем понятно я объяснил затруднение, наверное. Я не могу использовать onLoad - то дополнительное окно, где открывается POST форма - оно и так уже принудительно в фокусе (вызовом focus()). Но окно-ответ открывается _ещё_в_одном_ отдельном окне, которое _не_в_фокусе_ - и это, конечно, неприятно. Что-то вроде связано с target-свойством у формы, что ли? В доках по ссылке Greyman'а нашёл, но там именно про target очень смутно написано =( Я тыкал-тыкал, нихтарбайтен.
P.S. Вообще-то, нет предела совершенству. Данный скриптик можно доработать и облегчить, конечно, там лишние детальки остались... Но вот именно открытие окна мешает особенно. |
Вот ведь интересно.
1. Если данный букмарклет вызвать по закладке, в фокусе остаётся текущее окно. 2. Если вызвать с сылки на странице, фокус переходит на новое окно (веб сервиса). Нисиво не понимаю (c) Я уже было обрадовался, что есть решение в виде HTML код:
window.getBrowser().selectedWindow = nW; Как же быть??? Это очень важно, прошу понять! Очень много хороших вещей не получается сделать. Как, например, перебрать все открытые Tab'ы в текущем окне??? window.getBrowser - есть window.getBrowser() - такого нет window.getBrowser. - не имеет свойств. Что делать? |
Вот для упрощения задачи:
HTML код:
javascript:(function(){var nW=window.open('http://mail.ru',"","");window.getBrowser().selectedWindow=nW;})(); Настройки: |
Время: 22:57. |
Время: 22:57.
© OSzone.net 2001-