![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 10
|
Цитата:
Может еще есть у кого какие варианты по этому поводу, ну очень нужно... Последний раз редактировалось ImPuLsE; 26.04.2013 в 11:55. |
|
|||||
|
А для чего конкретно нужно знать сессию флешке и какой момент это нужно?
В принципе ее можно просто запросом получить от php Вот в этой http://www.flasher.ru/forum/showthread.php?t=194791 теме я скидывал свой класс Packet, который написал для упрощения создания запросов к серверу. Соответственно если послать этот пакет серверу var packet:Packet = new Packet("getSession", onSession); private function onSession(params:Object):void { var session:String = params.session; // здесь можно принять идентификатор сессии trace(session); } Этот вариант точно рабочий. Если не принципиально передать id сессии еще до загрузки (что, как мне кажется, не имеет значения), то можно использовать его Последний раз редактировалось caseyryan; 26.04.2013 в 13:15. |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 10
|
Цитата:
В PHP при генерации xml у меня используется айдишник пользователя (который берется из php сессии после авторизации через обычную html форму) для выборки из БД. Так вот когда я логинюсь через html форму у меня происходит редирект на страницу со флешкой соответсвенно. Флешка на этой странице подгружает не сам XML а страницу этой html формы... Усли убрать авторизацию в контроллере то грузит структуру XML , но без данных из выборки БД т.к. не авторизован соответсвенно... и не может айди пользователя получить который используется при генерации XML. Вроде по логике я делаю все в нужной последовательности... Может быть как то через флеш форму авторизации будет проще зделать... я просто не очень осведомлен в этой теме с сессиями.... caseyryan, с вашим пакетом соотнести все сложно пока мне... Может есть какое то более простое решение? По идее ситуация простейшая.... Последний раз редактировалось ImPuLsE; 26.04.2013 в 12:35. |
|
|||||
|
Цитата:
А в коде все создается в одну строчку, как я написал выше. Куда уж проще. var packet:Packet = new Packet("getSession", onSession); // в любой функции в любом своем классе можно создать новый пакет. Первый параметр, это зазвание метода, который передается пост запросом в php, второй это ссылка на метод, который нужно создать где-либо в своей флешке. Самый лучший вариант - в том же классе, из которого отправляется запрос. private function onSession(params:Object):void { // вот сам метод обработчик ответа. Он должен содержать только один параметр с типом Object. После ответа от сервера этот метод автоматически дергается через .call() в классе Packet var session:String = params.session; // а здесь уже можно принимать URL переменные. trace(session); } |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 10
|
Да я это уже сделал, я только вот не очень понимаю чем это мне поможет... Что за userID и password ?
Выдает мне : userId=userId&method=getSession&pass=pass PACKET DATA: [object Packet] и дальше тот же html код формы авторизации через которую мне как то надо пройти... Если убрать авторизацию на контроллере, то выдает: userId=userId&method=getSession&pass=pass PACKET DATA: [object Packet] session= и соответственно ничего... откуда он вообще будет брать сессию в данном случае... Как эти логины и пароли в HTML форме то моей пройдут? в пакете вашем пишу следующее: public class Packet extends EventDispatcher { public static const HOST: String = "http://flash/"; public static const SCRIPT: String = "func/grabber"; public static var PASS: String = "pass"; public static var USER_ID: String = "userId"; |
|
|||||
|
Цитата:
Вот упрощенный вариант: package { import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; public class Packet extends EventDispatcher { public static const HOST: String = "http://server.com/"; public static const SCRIPT: String = "call.php"; private var _callback: Function = null; /** * * @param называние метода, который нужно вызывать на сервере, передается в * POST с ключом method * @param callback метод который вызывается после прихода ответа от сервера * должен принимать один параметр типа Object */ public function Packet(method:String, callback:Function, params:Object = null) { _callback = callback; var loader: URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, onComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); loader.dataFormat = URLLoaderDataFormat.VARIABLES; var vars:URLVariables = new URLVariables(); vars['method'] = method; if (params != null) { for (var i:String in params) { vars[i] = params[i]; } } var rand: String = "?" + int(Math.random() * 10000); var request:URLRequest = new URLRequest(Packet.HOST + Packet.SCRIPT + rand); request.method = URLRequestMethod.POST; request.data = vars; trace(request.data.toString()); try { loader.load(request); } catch (e:Error) { trace(e.getStackTrace()); } } private function onSecurityError(e:SecurityErrorEvent):void { e.target.removeEventListener(Event.COMPLETE, onComplete); e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); } private function onIOError(e:IOErrorEvent):void { e.target.removeEventListener(Event.COMPLETE, onComplete); e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); trace("INPUT / OUTPUT ERROR"); } private function onComplete(e:Event):void { e.target.removeEventListener(Event.COMPLETE, onComplete); e.target.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); e.target.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); var data:Object = e.target.data as Object; trace("PACKET DATA:", this, unescape(String(data))); if (_callback != null) { _callback.call(null, data); } } } } |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 10
|
Это хорошо что упростилось, проблема остается той же... эх неужели никто не поможет в этой дурацкой проблеме...
![]() |
|
|||||
|
[+4 24.04.13]
[+4 20.04.13] Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
Цитата:
есть такая конструкция(но не везде работает) развносильна : |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 10
|
Т.е. при вышеупомянутом описании проблемы (сообщение 13) вы утверждаете что ваш пакет как то мне может помочь? Увы и ах...(
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:09. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|