Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: форма поиска
Flash Zone Forum > Macromedia Flash > ActionScript
vlastelin
Помогите сделать форму поиска во Flash.

Вообщем нужно поле + кнопка. Человек открывает флешку, вводит в поле, жмёт на кнопку, открывается Google и начинает искать то, что введено в поле.
chingachgoog
Цитата(vlastelin @ 14.05.2009 - 22:06) *
Вообщем нужно поле + кнопка. Человек открывает флешку, вводит в поле, жмёт на кнопку, открывается Google и начинает искать то, что введено в поле.


Начать надо с поиска как отправлять запрос в Google (вовсе без флеша). ActionScript соответственно тут вообще не при чем.
Например, человек ввел find в самом поисковике Google. Что делает Google? Составляет запрос:

Код
http://www.google.ru/search?hl=ru&newwindow=1&q=find&lr=&aq=f&oq=


Т.е. когда вы точно будете знать, как составлять запрос (сделать из find строку http://www.google.ru/search?hl=ru&newwindow=1&q=find&lr=&aq=f&oq= то тогда уже будет совсем просто все это реализовать и с помощью флеша:
1) по клику на кнопку считываем значение поля input
2) преобразуем в строку запроса Google
3) c помощью getURL() отправляем запрос
vlastelin
вот код...
Код
function searchInGoogle(){
getURL('http://www.google.ru/search?q=' + my_txt.text, '_blank');
}


осталось создать текстовое поле с именем my_txt, кнопку, и при клике по кнопке вызывать вышеописанную функцию.


но как сделать это поле и кнопку?
MustLive
Цитата
Помогите сделать форму поиска во Flash.

vlastelin

Код здесь не сложный, алгоритм работы формы поиска chingachgoog тебе уже описал. Осталось лишь его реализовать.

Единственное, что ты должен для себя решить, так это открывать результат поиска (в Гугле) в новом окне или в том же окне, где была флешка. Соответственно если в новом окне, то указывай "_blank" в getURL.

Цитата
вот код...

Код будет немного другой. Его я приведу ниже.

Цитата
но как сделать это поле и кнопку?

Их ты должен сделать во флеше.

Создаёшь текстовое поле (требуемой длинны) на сцене инструментом Text Tool. Тип указываешь Input Text, а имя текстового поля (Instance Name) указываешь my_txt.

Далее создаёшь кнопку (как создаются кнопки во флеше мы многократно писали на форуме). Создаёшь любую фигуру (или надпись) и преобразовываешь её (F8) в кнопку (Button). Которой указываешь имя (Instance Name) my_but.

После чего размещаешь в первом кадре таймлайна следующий код:
Код
_root.my_but.onRelease = function (){
    getURL('http://www.google.ru/search?q=' + my_txt.text, '_blank');
}

И твоя форма поиска в Гугле готова wink.gif.
chingachgoog
А я думал, что у Гугля есть свой API...
MustLive
chingachgoog

У Google есть свой API для работы с поисковиком. И чтобы работать с данным API нужен соответствующий ключ (выдаваемый для домена). Но это нужно лишь если твоё веб приложение (поисковик или другое приложение) делает автоматизированные запросы к серверу Гугла.

Т.е. ключ к API позволяет получить официальное разрешение на его использование (иначе Гуглу это может не понравится и он забанит IP). Таким образом определяются легальные пользователи API Гугла (как поискового, так и других сервисов). При этом для такого ключа имеется ограничение на количество запросов в сутки.

В данном же случае - при отправке запросов с флешки - ни Google API, ни ключ к нему не нужны. Т.к. это простой запрос к поисковику, точно такой же, как если бы с обычной html формы. Против подобных запросов Гугл не возражает, и ещё с начала своей работы Гугл предоставляет вебмастерам поисковые html формы для размещения на своих сайтах.
chingachgoog
Вон оно как оказывается...

Хм. Интересно, что если запрос не getURL открывать в браузере, а аналогично скормить флешу через php и распарсить?
MustLive
Цитата
Интересно, что если запрос не getURL открывать в браузере, а аналогично скормить флешу через php и распарсить

Данный вариант подпадает под описанную мною ранее ситуацию. Т.к. скрипт будет работать на сервере и от него посылать запросы на сервер Гугла, то нужно иметь ключ Google Search API.

Если не иметь ключа для работы с Search API, то Гугл может закрыть доступ к API с данного сайта. И как я уже говорил, на каждый ключ накладывается ограничение на количество запросов в сутки.

Данный подход используется для всех сервисов Гугла, в том числе и Google Maps. Подобный подход используют и другие компании, например, Яндекс. Выступая на конференции CodeCamp 2009 в конце марта, довелось услышать от представителя Яндекса рассказ об API к Яндекс.Картам (у него доклад был как раз перед моим вторым докладом). Где также используются ключи к API.
chingachgoog
Цитата(MustLive @ 20.05.2009 - 00:57) *
Данный вариант подпадает под описанную мною ранее ситуацию. Т.к. скрипт будет работать на сервере и от него посылать запросы на сервер Гугла, то нужно иметь ключ Google Search API.


Я имел вв виду, что сервер будет не пользоваться API Гугля, а имитировать заход на Гугль пользователя. А потом скармливать флешу данные. Флеш и сам бы мог получить данные, но из-за политики кроссдоменной безопасности сервер придется все равно использовать.
MustLive
Цитата
Я имел вв виду, что сервер будет не пользоваться API Гугля, а имитировать заход на Гугль пользователя.

Это я также имел в виду - при неиспользовании ключа к API, а при прямых запросах (без использования API), Гугл просто забанит такой сервер, если от него будет слишком много запросов. Просто забанит IP и уже сильно не поимитируешь заходы пользователя wink.gif.

Сильно имитировать заходы пользователей не получится. Можно подделать юзер агент (чтобы закосить под браузер), также можно подделать реферер (чтобы запросы выглядели как отправленные со страниц Гугла), но это всё не поможет. Гугл в автоматическом режиме временно заблокирует IP при большом количестве запросов, а если ситуация будет повторятся, то может и полностью заблокировать данный IP. Уже многие годы Гугл активно следит за автоматизированными запросами к своим серверам.

Цитата
Флеш и сам бы мог получить данные, но из-за политики кроссдоменной безопасности

Чтобы не было подобных запросов, в том числе и CSRF атак, и были введены данные политики.
chingachgoog
Цитата(MustLive @ 20.05.2009 - 21:18) *
Уже многие годы Гугл активно следит за автоматизированными запросами к своим серверам.


Понятно. Значит соревнование меч-щит продолжается...
MustLive
Цитата
Значит соревнование меч-щит продолжается...

Да, противостояние брони и снаряда продолжается. Это вечный бой wink.gif.

И подобные защиты применяют разные популярные интернет компании. Но Гугл наиболее, т.к. он самый популярный поисковик.
Русская версия IP.Board © 2001-2009 IPS, Inc.