Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Задачка для знатоков форм. (http://forum.oszone.net/showthread.php?t=50177)

hasherfrog 07-06-2005 13:39 330670

Задачка для знатоков форм.
 
Вот какое дело. Хотел сделать себе буркмарклет, который будет быстро делать IP Lookup. Для примера того, что я хочу, вот:

HTML код:

javascript:(function(){x=prompt(%22Uin:%22,%22%22);document.location=%22http://www.icq.com/whitepages/about_me.php?uin=%22+x})();
Вышел на страницу http://www.whois-service.ru/lookup/
Пытаюсь сделать букмарклет для быстрого запроса - НЕ МОГУ.

Казалось бы, должно быть что-то типа
HTML код:

http://www.whois-service.ru/lookup/?domain=195.19.16.100&imageField2.x=0&imageField2.y=0
http://www.whois-service.ru/lookup/?...mageField2.y=0

Ан нет, не выходит! Даёт пустой лист - и всё тут.
ПОЧЕМУ?

mar 07-06-2005 14:17 330683

hasherfrog
ответ может быть очень простым - у них в form стоит метод post. А GET они для данного скрипта могут игнорировать (либо на уровне сервера, либо на уровне скрипта).
возможный вариант - использование своего промежуточного скрипта, который бы по твоему запросу отправлял им сформированный POST.
второй вариант - формировать POST и уже его отправлять им прямо из буркмарклет (не уверена, что реально)

hasherfrog 07-06-2005 14:35 330686

mar
Я не специалист, честно, не очень понял.
Т.е. в запросе http://www.whois-service.ru/lookup/?...mageField2.y=0 чего-то не хватает?
Я сначала подумал, реферрер отселживают. Пробовал с реферрером - всё равно не выходит.
Может, там кукис какой-то ещё используется? Джава скрипты со станицы смотрел-смотрел - ни черта не понял :[

mar 07-06-2005 15:14 330698

нет, скорее всего все проще:
у них в форме в явном виде используется метод POST:
Код:

<form method="post" action="./">
, а когда ты формируешь URL-строку типа
Цитата:

http://адрес/?переменная1=значение&переменная2=значение
, то запрос идет в формате GET. Дальше возможны варианты:
- сервер может быть настроен на принятие только POST-запросов (ну, например, из соображений безопасности)
- сервер принимает все, но скрипт расчитывает на прием именно POST, а GET просто не рассматривает (например в современных версиях PHP по умолчанию, опять-таки из соображений безопасности, стоит register_globals off . Это значит, что (опять-таки по-умолчанию, но по вполне разумному умолчанию) нельзя, получив нашу строку писать сразу $переменная1, а надо $_GET['переменная1'] или, соответственно $_POST['переменная1']. Соответственно, если автор скрипта работает с POST, то он написал $_POST['переменная1'], а переменные, засандаленные в адресную строку были просто проигнорированы).

hasherfrog 07-06-2005 15:35 330705

А-а-а-а, Семён Семёныч...
Понял, спасибо. Век живи, век учись.
Тогда единственным способом будет сохранение html-файла на диск и вызов его, скажем, по букмарклету, с последующим заполнением нужного поля и скриптового нажатия Send. Эммм, пока не знаю как это сделать, но главное я понял.

Спасибо.

mar 07-06-2005 16:11 330722

hasherfrog
ну да - свой промежуточный скрипт.

vadimiron 07-06-2005 17:53 330757

Цитата:

Тогда единственным способом будет сохранение html-файла на диск и вызов его, скажем, по букмарклету, с последующим заполнением нужного поля и скриптового нажатия Send.
или найти другой сайт, предоставляющий подобные услуги более доступным образом

vadimiron 07-06-2005 17:58 330762

Например, вот эта страница. Вроде понимает и работает через GET. Реагирует на запрос типа: http://www.zoneedit.com/whois.html?zone=123.21.123.13
Вообще подобных сайтов очень много в инете, можно выбрать по вкусу :)

Greyman 07-06-2005 18:15 330769

Если искать другие ресурсы, то тогда ИМХО лучше это:
http://leader.ru/secure/whoiz.html?q=255.255.255.255

Правда у них очень серьезные ограничения на частоты попыток.

Ну а подобным реесурсам есть даже отдельный топик:
FAQ | Как можно узнать свой ip-адрес в интернете

hasherfrog 07-06-2005 20:19 330809

vadimiron
Greyman
Да, я понимаю, я уже сделал через nic.ru
Там тоже работает ( http://www.nic.ru/whois/?ip=195.2.62.130 )
Просто на who-is как-то больше вкусностей :]
(WHOIS, TRACERT, PING, DNS WATCH, WHATS, IP LOOKUP)
Ну я и подумал, сделаю одну примочку, другую...
Ну и если честно, просто "заело" меня, как же так? ;]

Greyman 08-06-2005 13:23 331033

hasherfrog
Я тут в "ХВЗ" в развитие этой темы свой топик поднял (мне сам принцип пригодился бы...):
"Ручное" формирование POST запроса в браузере

Также могут пригодиться эти ссылки:
http://astropolis.net/j-script/form.shtml
http://www.codenet.ru/webmast/php/HTTP-POST.php

hasherfrog 10-06-2005 01:55 331628

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

P.S. Всем огромное спасибо ещё раз. Честно говоря, я просто не ожидал даже, что получится :]

mar 10-06-2005 02:24 331631

hasherfrog
шай-бу! шай-бу!! в смысле здорово:)
чтобы окно было в фокусе:
Код:

<body onLoad="window.focus()">

hasherfrog 10-06-2005 02:41 331633

Не совсем понятно я объяснил затруднение, наверное. Я не могу использовать onLoad - то дополнительное окно, где открывается POST форма - оно и так уже принудительно в фокусе (вызовом focus()). Но окно-ответ открывается _ещё_в_одном_ отдельном окне, которое _не_в_фокусе_ - и это, конечно, неприятно. Что-то вроде связано с target-свойством у формы, что ли? В доках по ссылке Greyman'а нашёл, но там именно про target очень смутно написано =( Я тыкал-тыкал, нихтарбайтен.

P.S. Вообще-то, нет предела совершенству. Данный скриптик можно доработать и облегчить, конечно, там лишние детальки остались... Но вот именно открытие окна мешает особенно.

hasherfrog 27-06-2005 11:38 336371

Вот ведь интересно.

1. Если данный букмарклет вызвать по закладке, в фокусе остаётся текущее окно.
2. Если вызвать с сылки на странице, фокус переходит на новое окно (веб сервиса).

Нисиво не понимаю (c)

Я уже было обрадовался, что есть решение в виде

HTML код:

window.getBrowser().selectedWindow = nW;
Но как оказалось спустя почти неделю :-О данная "фраза" вообще даёт ошибку.
Как же быть???

Это очень важно, прошу понять! Очень много хороших вещей не получается сделать.
Как, например, перебрать все открытые Tab'ы в текущем окне???
window.getBrowser - есть
window.getBrowser() - такого нет
window.getBrowser. - не имеет свойств.

Что делать?

hasherfrog 27-06-2005 11:46 336372

Вот для упрощения задачи:
HTML код:

javascript:(function(){var nW=window.open('http://mail.ru',"","");window.getBrowser().selectedWindow=nW;})();
Таже ситуация - со ссылки - в новом окне + фокус. Из букмарклета - новое окно есть, но фокус остаётся здесь (судя по всему из-за того, что меню дёргали из данного окна, а не из того что открылось).

Настройки:



Время: 22:57.

Время: 22:57.
© OSzone.net 2001-