![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 66
|
Здравствуйте, я постепенно вникаю в совместную работу флеш и php. и столкнулся с проблемой:
У меня на хостинге лежит фаил stat.php, отвечающий за получение и обработку запроса из флеш-клиента и обюновление базы данных. лежит он, соответсвенно в папке /my_Server.ru/html. (как видимо и должен?)) чтобы тестить скрипт я пользовался строкой - $p = count($_POST) > 0 ? $_POST : $_GET;(как мне когда-то тут посоветовали) я пользовался get-запросами, и срипт послушно работал, исправно добавляя нужные строчки в базу данных и отладочные сообщения в окно браузера. После тестов, я начал работать над отправкой запроса из флеш, после долгих проверок корректности(по учебниками и оф мануалам) получилось вот что: 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 написал. писал даже чтоб наверняка - Вообщем, если кто-то можжет помочь советом - как и что можно еще проверить, или может быть я где-то допустил явный косяк, я был бы очень благодарен за любую подсказку) спасибо. |
|
|||||
|
Тут логика слегка хромает. Слушатель COMPLETE нужно всегда добавлять перед тем, как вызывается метод load. Конечно проблема здесь явно не в этом, так как добавится он все равно быстрее, чем запрос "сходит" до сервера, но тем не менее.
А проблема здесь скорее всего в неправильном пути к скрипту. Написано: Цитата:
логично? А чтобы наверняка узнавать нашел флеш плеер этот адрес или нет, загрузчик нужно подписать еще и на IOErrorEvent.IO_ERROR, ну и на SecurityErrorEvent.SECURITY_ERROR до кучи. Цитата:
Так вот, чтобы скрипт работал в денвере, он должен находиться в {DENWER_DIR}\home\адрес_сайта\www\а_тут_может_быть_скрипт.php При создании новой директории сайта, денвер обязательно нужно перезапустить, чтобы он обновил файл hosts (ну и возможно какие-то внутренние настройки, хотя на этот счет не уверен) Если используется apache2, то там вообще он может где угодно лежать, главное правильно создать описание расположения в директории sites-available и создать ссылку в sites-enabled п.с. Не надо привыкать писать такие корявые названия. Пишите по конвенциям. не нужно делить составные части переменных андерскором. В АС3 используется верблюжий регистр при этом первая буква в названии свойств всегда меленькая. Исключения составляют названия констант. То есть вместо этого stat_vars, нужно писать statVars. А названия методов всегда пишутся с маленькой буквы. |
|
|||||
|
Регистрация: 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. |
|
|||||
|
Цитата:
Цитата:
Вообще. Зачем этот хостинг? Сначала лучше на локалке откатать все, а уже потом с хостингом заморачиваться |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 66
|
[quote=caseyryan;1126861]Да, но надо учитывать то, что он должен быть в кодировке utf8.
[/QUOT как это проверить? |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 20
|
Notepad++ думаю поможет.
|
|
|||||
|
Регистрация: Jul 2012
Сообщений: 66
|
нет.. ничего не помогает!
вот нашел описание ошибки- securityError Dispatched if a call to URLLoader.load() attempts to load data from a server outside the security sandbox насколько я понимаю, это означает, что приложение отправляет запрос серверу, находящимуся вне доверенной зоны приложения... тоесть не на сервере не разрешен домен приложения а наоборот. это возможно? и если это так то - это значит что нужно прописывать аналог крос домин для самого приложения? как это делать??? помогите пожалуйста, уже неделю бьюсь, гугл не помогает( |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
Дайте ссылку на ваш домен, что ли. Посмотрю, как выглядит crossomain.xml в реальной жизни. Или домены неверные (контакт их менять любит, а я не знаю, какая версия вашего файла сейчас лежит), или content-type неверный, или crossdomain.xml лежит по неверному адресу.
|
|
|||||
|
Регистрация: Jul 2012
Сообщений: 66
|
Я писал выше- я ставил в кросс домаин - разрешить любые домены, я проверил - он в нужной кодировке. что касается расположения, то оно тоже верное, так как при get-запросах все работало как надо, а значит crossdomain читался.
проблема видимо на стороне приложения Добавлено через 7 минут ссылка(не очень понял зачем но окей) - http://dobavlialka.ru |
|
|||||
|
Цитата:
Он там вот такой: Цитата:
У меня на сервере вот такой: Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|