Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.03.2013, 07:10
pall92 вне форума Посмотреть профиль Отправить личное сообщение для pall92 Найти все сообщения от pall92
  № 1  
Ответить с цитированием
pall92

Регистрация: Jul 2012
Сообщений: 66
По умолчанию Проблема - запрос не доходит до сервера

Здравствуйте, я постепенно вникаю в совместную работу флеш и php. и столкнулся с проблемой:

У меня на хостинге лежит фаил stat.php, отвечающий за получение и обработку запроса из флеш-клиента и обюновление базы данных. лежит он, соответсвенно в папке /my_Server.ru/html. (как видимо и должен?))

чтобы тестить скрипт я пользовался строкой - $p = count($_POST) > 0 ? $_POST : $_GET;(как мне когда-то тут посоветовали)

я пользовался get-запросами, и срипт послушно работал, исправно добавляя нужные строчки в базу данных и отладочные сообщения в окно браузера.

После тестов, я начал работать над отправкой запроса из флеш, после долгих проверок корректности(по учебниками и оф мануалам) получилось вот что:

Код AS3:
function ScoreUpdate(score:int):void
{
  // создание запроса
 
   var stat_loader:URLLoader = new URLLoader();
   var stat_request:URLRequest=new URLRequest();
   stat_request.url = "http://my_Server/stat.php";
   stat_request.method=URLRequestMethod.POST;
   // добавление параметров в запрос
   var stat_vars:URLVariables = new URLVariables();
   stat_vars['viewer_id']= 3;
   stat_vars['my_score']= 0;
   stat_request.data=stat_vars;
   // выполнение запроса
   stat_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
   try
  {
   stat_loader.load(stat_request);
   stat_loader.addEventListener(Event.COMPLETE, StatCompleteHandler); 
   //this.log_tx.appendText("запрос прошел успешно \n");
   }
   catch (er:Error)
   {
   this.log_tx.appendText(er.message);
   }
}
 
function StatCompleteHandler(event:Event):void 
{ 
   this.log_tx.appendText(event.target.data.toString()); 
   this.log_tx.appendText("fuck"); 
}
новакя строка в базе данных не создается
никаких ошибок код не выдает,
как и не "получает" событие COMPLETE лоадера.
адресс запроса проверял - верный.
фаил crossdomain.xml написал. писал даже чтоб наверняка -
Код:
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

Вообщем, если кто-то можжет помочь советом - как и что можно еще проверить, или может быть я где-то допустил явный косяк, я был бы очень благодарен за любую подсказку)
спасибо.

Старый 26.03.2013, 08:07
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Тут логика слегка хромает. Слушатель COMPLETE нужно всегда добавлять перед тем, как вызывается метод load. Конечно проблема здесь явно не в этом, так как добавится он все равно быстрее, чем запрос "сходит" до сервера, но тем не менее.

А проблема здесь скорее всего в неправильном пути к скрипту. Написано:
Цитата:
лежит он, соответственно в папке /my_Server.ru/html
Значит и вызывать нужно не "http://my_Server/stat.php", а "http://my_Server/html/stat.php"
логично?
А чтобы наверняка узнавать нашел флеш плеер этот адрес или нет, загрузчик нужно подписать еще и на
IOErrorEvent.IO_ERROR, ну и на SecurityErrorEvent.SECURITY_ERROR до кучи.

Цитата:
(как видимо и должен?)
Какой сервер используется? Могу предположить, что денвер, как наиболее популярный.
Так вот, чтобы скрипт работал в денвере, он должен находиться в {DENWER_DIR}\home\адрес_сайта\www\а_тут_может_быть_скрипт.php
При создании новой директории сайта, денвер обязательно нужно перезапустить, чтобы он обновил файл hosts (ну и возможно какие-то внутренние настройки, хотя на этот счет не уверен)

Если используется apache2, то там вообще он может где угодно лежать, главное правильно создать описание расположения в директории sites-available и создать ссылку в sites-enabled


п.с. Не надо привыкать писать такие корявые названия. Пишите по конвенциям.
не нужно делить составные части переменных андерскором. В АС3 используется верблюжий регистр при этом первая буква в названии свойств всегда меленькая. Исключения составляют названия констант.
То есть вместо этого stat_vars, нужно писать statVars.
А названия методов всегда пишутся с маленькой буквы.

Старый 26.03.2013, 08:48
pall92 вне форума Посмотреть профиль Отправить личное сообщение для pall92 Найти все сообщения от pall92
  № 3  
Ответить с цитированием
pall92

Регистрация: Jul 2012
Сообщений: 66
- я собственно приставал со своими нубскими вопросами к тех-поддержке моего хостинга - hoster.ru.
где мне и сказали создать соответсвующие папки и туда кидать мой скрипт. после чего все действительно заработало.. ну как все - я имею ввиду get-запросы стали доходить до срипта.

я и стал составлять post запрос из приложения по аналогии.
вот.

- есть еще одна вещь в панели управления на хостинге, есть влкадка - ftp-пользователи, куда собственно и нужно заходить чтобы загружать фаилы. так вот - там есть небольшая приписка без коментариев:
ftp хост - ftp-50035.srv.hoster.ru

может быть нужно обращаться к нему?
(до создания папки одноименный с доменом php-скрипт находился в корневой папке - тогда я уже пробовал обращаться по указаному адресу, но так не работало вообще ничего)

сейчас же я обращаюсь к имени, которое было присвоено моему домену и папке которую мне посоветовали создать.


- сервер, апач... кажется.


-"Значит и вызывать нужно не "http://my_Server/stat.php", а "http://my_Server/html/stat.php""
но гет-запросы же доходили - первым способом О.о. или для post и get запросов действую разные правила?

- за советы спасибо. побегу пробовать)

Добавлено через 45 минут
Что ж, я попробовал, что вы советовали.. вы итоге всплыла ошибка 2048
text=Error #2048: Нарушение изолированной среды

собственно, поняв что это как-то связано с crossdomain я начал его проверять, но ошибок вроде нет. но есть вопросы.

для начала собственно его текущий вариант

<cross-domain-policy>
<allow-access-from domain="*.vkontakte.ru"/>
<allow-access-from domain="*.vk.com"/>
<allow-access-from domain="*.userapi.com"/>
</cross-domain-policy>

ну да.. приложение соответсвенно - находится на сервере вконтакте.


вопросы -
в мануалах написано, что этот фаил должен находится в корневом катологе. в данном случае мне не очень понятно, что такое корневой каталог - раз я сам создавал еще и папки с названием как у домена. какая из папок будет "корневой" - сама собственно, по-настоящем корневая папка ftp-хранилища, папка с названием домена или папка html?..

и еще, возможно глупость но... ведь кроссдомаин можно создавать просто в текстовом фаиле и потом просто заменить .txt на .xml?

вообщем - в чем может быть дело??


Последний раз редактировалось pall92; 26.03.2013 в 09:34.
Старый 26.03.2013, 13:41
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
и еще, возможно глупость но... ведь кроссдомаин можно создавать просто в текстовом фаиле и потом просто заменить .txt на .xml?
Да, но надо учитывать то, что он должен быть в кодировке utf8.
Цитата:
или для post и get запросов действую разные правила?
Есть ограничения по длине запроса, но фактически, если укладывается в гет, то в пост по-любому уложится. Вот наоборот могут быть проблемы.

Вообще. Зачем этот хостинг? Сначала лучше на локалке откатать все, а уже потом с хостингом заморачиваться

Старый 26.03.2013, 21:36
pall92 вне форума Посмотреть профиль Отправить личное сообщение для pall92 Найти все сообщения от pall92
  № 5  
Ответить с цитированием
pall92

Регистрация: Jul 2012
Сообщений: 66
[quote=caseyryan;1126861]Да, но надо учитывать то, что он должен быть в кодировке utf8.
[/QUOT

как это проверить?

Старый 26.03.2013, 23:26
belyjj вне форума Посмотреть профиль Отправить личное сообщение для belyjj Найти все сообщения от belyjj
  № 6  
Ответить с цитированием
belyjj

Регистрация: Oct 2012
Сообщений: 20
Notepad++ думаю поможет.

Старый 29.03.2013, 22:49
pall92 вне форума Посмотреть профиль Отправить личное сообщение для pall92 Найти все сообщения от pall92
  № 7  
Ответить с цитированием
pall92

Регистрация: Jul 2012
Сообщений: 66
нет.. ничего не помогает!

вот нашел описание ошибки-


securityError

Dispatched if a call to URLLoader.load() attempts to load data from a server outside the security sandbox


насколько я понимаю, это означает, что приложение отправляет запрос серверу, находящимуся вне доверенной зоны приложения... тоесть не на сервере не разрешен домен приложения а наоборот. это возможно? и если это так то - это значит что нужно прописывать аналог крос домин для самого приложения? как это делать???

помогите пожалуйста, уже неделю бьюсь, гугл не помогает(

Старый 29.03.2013, 23:35
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 8  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Дайте ссылку на ваш домен, что ли. Посмотрю, как выглядит crossomain.xml в реальной жизни. Или домены неверные (контакт их менять любит, а я не знаю, какая версия вашего файла сейчас лежит), или content-type неверный, или crossdomain.xml лежит по неверному адресу.

Старый 30.03.2013, 09:11
pall92 вне форума Посмотреть профиль Отправить личное сообщение для pall92 Найти все сообщения от pall92
  № 9  
Ответить с цитированием
pall92

Регистрация: Jul 2012
Сообщений: 66
Я писал выше- я ставил в кросс домаин - разрешить любые домены, я проверил - он в нужной кодировке. что касается расположения, то оно тоже верное, так как при get-запросах все работало как надо, а значит crossdomain читался.
проблема видимо на стороне приложения

Добавлено через 7 минут
ссылка(не очень понял зачем но окей) - http://dobavlialka.ru

Старый 30.03.2013, 09:22
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
ссылка(не очень понял зачем но окей)
Затем, чтобы поспотреть файл междоменной политики.
Он там вот такой:
Цитата:
<cross-domain-policy>
<allow-access-from domain="*.vkontakte.ru"/>
<allow-access-from domain="*.vk.com"/>
<allow-access-from domain="*.userapi.com"/>
<allow-access-from domain="94.19.66.177.pool.sknt.ru"/>
</cross-domain-policy>
Естественно ничего работать не будет. Не все используемые домены прописаны.
У меня на сервере вот такой:
Цитата:
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-http-request-headers-from domain="vk.com" headers="*"/>
<allow-http-request-headers-from domain="*.vk.com" headers="*"/>
<allow-http-request-headers-from domain="vkontakte.ru" headers="*"/>
<allow-http-request-headers-from domain="*.vkontakte.ru" headers="*"/>
<allow-http-request-headers-from domain="*.userapi.com" headers="*"/>
<allow-http-request-headers-from domain="userapi.com" headers="*"/>
<allow-http-request-headers-from domain="vk.me" headers="*"/>
<allow-http-request-headers-from domain="*.vk.me" headers="*"/>
<allow-http-request-headers-from domain="odnoklassniki.ru" headers="*"/>
<allow-http-request-headers-from domain="*.odnoklassniki.ru" headers="*"/>
<allow-http-request-headers-from domain="mydomain.com" headers="*"/>
<allow-access-from domain="vk.com" to-ports="80, 9991"/>
<allow-access-from domain="*.vk.com" to-ports="80, 9991"/>
<allow-access-from domain="vkontakte.ru" to-ports="80, 9991"/>
<allow-access-from domain="*.vkontakte.ru" to-ports="80, 9991"/>
<allow-access-from domain="mydomain.com" to-ports="80, 9991"/>
<allow-access-from domain="*.userapi.com" to-ports="80, 9991"/>
<allow-access-from domain="userapi.com" to-ports="80, 9991"/>
<allow-access-from domain="vk.me" to-ports="80, 9991"/>
<allow-access-from domain="*.vk.me" to-ports="80, 9991"/>
<allow-access-from domain="odnoklassniki.ru" to-ports="80, 9991"/>
<allow-access-from domain="*.odnoklassniki.ru" to-ports="80, 9991"/>
</cross-domain-policy>
только вместо mydomain.com айпишник моего сервера

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.