Currículo em TI “Blue Screen of Death” nas Olimpíadas de Beijing
ago 14

Pessoas,
Fiquei 2 dias trabalhando nessa classe. Fiz alguns testes e funcionou como esperado. Fiquem à vontade para Usá-la.

Função: Validar Sessão com FLEX, usando PHP como BACK-END.
Composição: Feita em ActionScript3, a classe abre uma conexão HTTP para um arquivo de validação de sessões em PHP. Se a resposta for positiva, no tunel http, retornará um token que confirmará a autenticidade da sessão. Caso contrário, enviará o cliente para uma tela de Autenticação:

OBS. Essa classe foi testada em sistema baseado em módulos. Para cada modulo use, pelomenos, as linhas abaixo, alterando para o componentes do seu módulo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 	< ?xml version="1.0" encoding="utf-8">
 
 		< | ![CDATA[
 			import mx.binding.utils.ChangeWatcher;
  			import mx.binding.utils.BindingUtils;
 			import br.com.jpa.fish.classes.*;
 
 			public function testando():void
  			{
 				var _nameWatcher:ChangeWatcher;
 				var validarsessao:Sessao = new Sessao();
 				_nameWatcher =BindingUtils.bindProperty(componentedomodulo,"visible" ,validarsessao,"visible");
 
 			}
 
 	...

Sessao.as

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package br.com.jpa.fish.classes
{
	import flash.net.URLRequest;
 
	import mx.controls.Alert;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	import mx.rpc.http.HTTPService;
 
	public class Sessao
	{
 
		private var UrlAutenticador:URLRequest = new URLRequest("URL DO AUTENTICADOR");
   		private var UrlSessionPHP:String = "URL DO ARQUIVO PHP QUE VALIDA SESSIONS";
		private var token:String = "UM TOKEN QUE DEVE SER O MESMO NO ARQUIVO PHP, CASO A SESSAION SEJA VERDADEIRA";
	    [Bindable] public var visible:Boolean;
 
		//construtor
		public function Sessao():void{CheckSession()}
 
		//Dispara a funcao que trara a resposta da validacao
		public function CheckSession():void
		{
			httpRequest(UrlSessionPHP);
		}	
 
		//se vier um retorno diferente do token envie para a Autenticacao
		public function gerenciarRetorno(event:ResultEvent):void
		{
			if(event.result.toString()!=token)
			{
 
				visible=false;
				navigateToURL(UrlAutenticador,"_top");
			}else visible=true;
 
		}
 
		//Erros do sistema me retornem no Show Alert
		public function erroHTTP(resultado:FaultEvent):void
		{
			Alert.show(resultado.toString(), "Error");
		}
 
		//ir no arquivo PHP Validar a Session
		public function httpRequest(auth:String):void
		{
			var service:HTTPService;
			service = new HTTPService();
			service.url=auth;
        	service.resultFormat="text";
        	service.method = "POST";
        	service.addEventListener("fault", erroHTTP);
	        service.addEventListener("result", gerenciarRetorno);
	        service.send();
 
		}
 
	}
}

Agora, um módulo teste.

sessionteste.mxml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< ?xml version="1.0" encoding="utf-8">
 
		< | ![CDATA[
			import mx.binding.utils.ChangeWatcher;
			import mx.binding.utils.BindingUtils;
			import br.com.jpa.fish.classes.*;
 
			public function testando():void
			{
				var _nameWatcher:ChangeWatcher;
				var validarsessao:Sessao = new Sessao();
				_nameWatcher =BindingUtils.bindProperty(formulario,"visible" ,validarsessao,"visible");
 
			}
 
		]|>

Para baixar os arquivos clique em: Session PHP e Flex. Espero ter ajudado.

Fernando Carvalho,
Abraços.

Escrito por Fernando Carvalho \\ tags: ,

2 Responses to “Session com Flex e PHP”

  1. thomas Says:

    sim, e o validador php?

  2. Fernando Carvalho Says:

    Thomas, o validador nao coloquei pq o importante seria apresentar a classe Sessao, entende? Isso pq o validador da session pode ser qualquer um que vc ja tenha.
    A logica é simples(provavelmente vc ja saiba):
    1- Tenho minhas estruturas e condições que vao tratar de reconhecer se a sessão é valida ou nao.
    2- Caso a sessao esteja OK entao retorne um token(token:String = “UM TOKEN QUE DEVE SER O MESMO NO ARQUIVO PHP, CASO A SESSION SEJA VERDADEIRA”;)

    ex:
    se na classe Sessao tenho
    token:String = “e0298hdf1p29fb70qrdqw39r78yhoa8374″;(Vc escolhe o valor)

    a resposta no PHP seria

    echo “e0298hdf1p29fb70qrdqw39r78yhoa8374″

    Caso contrario, pode retornar qq coisa diferente que o sistema se encarregará de enviar o usuario para outra local.

    OBS. vc não é a 1 pessoa que me pede isso. Ainda não o coloquei por esta empenhado em um projeto ate dezembro. Breve breve estarei pegando um arquivo e jogando aqui no blog.

Leave a Reply