Bom dia a todos,
O framework CMS Joomla! possui um recurso de sessions muito bacana que é a JSession, para utilizá-la você precisa de uma instância válida da classe factory JFactory. O Joomla! inicia automaticamente esta factory ao iniciar a execução de uma requisição dentro da sua aplicação, mas externamente não.
Para podermos utilizar os recursos do Joomla! através de um diretório externo ao CMS precisamos importar e inicializar as configurações básicas. O código abaixo mostra os includes e a definição das variáveis estáticas necessárias.
1 2 3 4 5 |
define('_JEXEC', 1 ); define('JPATH_BASE', '../' ); // poderia ser /var/www/html/site-joomla/ define('DS', DIRECTORY_SEPARATOR ); require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' ); |
A variável _JEXEC é uma variável estática de segurança para evitar que alguem tente acessar algum arquivo diretamente.
Para a variável JPATH_BASE é a referência para o diretório do seu site Joomla! e a variável DS é carregada com o valor da variável estática global do PHP que define o tipo de separador de diretórios, ou seja, no linux utiliza-se “/” e no windows “”.
Para inicializar a aplicação Joomla! precisamos instanciar as classes corretas, para isso temos a codificação abaixo:
1 |
$mainframe = JFactory::getApplication('site'); |
Quando este método é chamado todos os métodos (recursos) da classe JFactory ficam disponíveis, como por exemplo:
- Sessions;
- DBO;
- Mailer;
- Config (referência da configuração do JConfig);
- Cache handler;
Logo para acessarmos alguns dos recursos podemos fazer assim:
1 2 3 4 |
$session = & JFactory::getSession(); $config = & JFactory::getConfig(); $dbo = & JFactory::getDBO(); $mailer = & JFactory::getMailer(); |
Através dos métodos definidos na JFactory do Joomla! podemos utilizar todos os recursos que a aplicação Joomla! tem, assim podemos reaproveitar o código da estrutura do CMS em outros projetos.
Utilizando a JSession do Joomla!
O controle de sessões do CMS Joomla! é muito seguro e prático, logo porque o próprio CMS possui camadas de gerenciamento do tempo de sessão e validações. Para criarmos uma sessão registrada pelo CMS Joomla! utilizamos o seguinte código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$session = & JFactory::getSession(); $dados = array ( 'id_cliente' => $cliente->id_cliente, 'nome' => $cliente->nome, 'email' => $cliente->email ); $session->set('session-cliente', $dados); // Obter os dados de uma session. $cliente_session = $session->get('session-cliente'); // Para validar se uma sessão existe. if($session->has('session-cliente')) { // alguma coisa. } else { die('Não existe uma session'); } // Destruir uma session $session->clear('session-cliente'); |
Espero que tenham gostado, para dúvidas ou sugestões utilizem a área de comentários abaixo.
Um forte abraço e uma feliz páscoa a todos.