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

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

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

Регистрация: Apr 2013
Сообщений: 10
Цитата:
Сообщение от caseyryan Посмотреть сообщение
А что эт о ха конструкция?
Код AS3:
"<?=session_id();?>
Вызов метода, но зачем знак равенства? Или я что-то недогоняю?

По идее-то вроде все остальное верно.
Ну Php вместо echo так можно выводить переменную... тут норм всё...

Может еще есть у кого какие варианты по этому поводу, ну очень нужно...


Последний раз редактировалось ImPuLsE; 26.04.2013 в 11:55.
Старый 26.04.2013, 11:46
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 12  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А для чего конкретно нужно знать сессию флешке и какой момент это нужно?
В принципе ее можно просто запросом получить от php
Вот в этой http://www.flasher.ru/forum/showthread.php?t=194791 теме я скидывал свой класс Packet, который написал для упрощения создания запросов к серверу.
Соответственно если послать этот пакет серверу
Код AS3:
var packet:Packet = new Packet("getSession", onSession);
private function onSession(params:Object):void {
     var session:String = params.session; // здесь можно принять идентификатор сессии
     trace(session);
}
А в php делаем просто
PHP код:
$method $_POST['method'];
if (
$method == "getSession") {
    echo 
"session=" session_id(); 

Этот вариант точно рабочий. Если не принципиально передать id сессии еще до загрузки (что, как мне кажется, не имеет значения), то можно использовать его


Последний раз редактировалось caseyryan; 26.04.2013 в 13:15.
Старый 26.04.2013, 12:18
ImPuLsE вне форума Посмотреть профиль Отправить личное сообщение для ImPuLsE Найти все сообщения от ImPuLsE
  № 13  
Ответить с цитированием
ImPuLsE

Регистрация: Apr 2013
Сообщений: 10
Цитата:
Сообщение от caseyryan Посмотреть сообщение
А для чего конкретно нужно знать сессию флешке и какой момент это нужно?
У меня во флешке в текстовом поле подгружается php страница со сгенерированным xml через echo.
В PHP при генерации xml у меня используется айдишник пользователя (который берется из php сессии после авторизации через обычную html форму) для выборки из БД.

Так вот когда я логинюсь через html форму у меня происходит редирект на страницу со флешкой соответсвенно.
Флешка на этой странице подгружает не сам XML а страницу этой html формы... Усли убрать авторизацию в контроллере то грузит структуру XML , но без данных из выборки БД т.к. не авторизован соответсвенно... и не может айди пользователя получить который используется при генерации XML.

Вроде по логике я делаю все в нужной последовательности... Может быть как то через флеш форму авторизации будет проще зделать... я просто не очень осведомлен в этой теме с сессиями....

caseyryan, с вашим пакетом соотнести все сложно пока мне...

Может есть какое то более простое решение? По идее ситуация простейшая....


Последний раз редактировалось ImPuLsE; 26.04.2013 в 12:35.
Старый 26.04.2013, 13:20
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 14  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
caseyryan, с вашим пакетом соотнести все сложно пока мне...
Почему сложно? В нем не надо ничего дорабатывать. Просто скопировать код пакета в файл с названием Packet.as

А в коде все создается в одну строчку, как я написал выше. Куда уж проще.

Код AS3:
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);
}

Старый 26.04.2013, 14:33
ImPuLsE вне форума Посмотреть профиль Отправить личное сообщение для ImPuLsE Найти все сообщения от ImPuLsE
  № 15  
Ответить с цитированием
ImPuLsE

Регистрация: 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 форме то моей пройдут?

в пакете вашем пишу следующее:
Код AS3:
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";
где func/grabber :

PHP код:
$method $_POST['method'];
        if (
$method == "getSession") {
            echo 
"session=" session_id(); 
        } 

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Что за userID и password ?
Ну это у меня для авторизации используется. Туда данные из соцсетей записываются. Отправку пароля и userId можно вообще убрать, если она не нужна. Просто в моем случае она используется каждый раз.

Вот упрощенный вариант:
Код AS3:
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);
			}
		}
	}
}

Старый 26.04.2013, 14:51
ImPuLsE вне форума Посмотреть профиль Отправить личное сообщение для ImPuLsE Найти все сообщения от ImPuLsE
  № 17  
Ответить с цитированием
ImPuLsE

Регистрация: Apr 2013
Сообщений: 10
Это хорошо что упростилось, проблема остается той же... эх неужели никто не поможет в этой дурацкой проблеме...

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

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

Старый 26.04.2013, 15:41
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 19  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
Цитата:
Сообщение от kackbip Посмотреть сообщение
На одном айпишнике может сидеть много хостов. И сессия у всех должна быть разная.
я и не говорил что нужно из ip генерировать ключ сессии, просто сделать доп. проверку
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Код AS3:
"<?=session_id();?>
есть такая конструкция(но не везде работает) развносильна :
PHP код:
<?php print session_id();?>
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 26.04.2013, 16:26
ImPuLsE вне форума Посмотреть профиль Отправить личное сообщение для ImPuLsE Найти все сообщения от ImPuLsE
  № 20  
Ответить с цитированием
ImPuLsE

Регистрация: Apr 2013
Сообщений: 10
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Тогда я не понимаю в чем заключается проблема. В вопросе было как передать id сессии. Так его передать можно. Все остальное уже вопросы для другой темы
Т.е. при вышеупомянутом описании проблемы (сообщение 13) вы утверждаете что ваш пакет как то мне может помочь? Увы и ах...(

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

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

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


 


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


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