Criando Session em PHP / AdoDB

Enviada por Miguel 
Miguel
Criando Session em PHP / AdoDB
09 de January de 2003 às 10:27PM

AdoDB é Biblioteca em PHP que pode ser utilizada de várias maneiras em conjunto com os softwares que utilizam esta linguagem de programação. Muitos sistemas se utilizam desta biblioteca para obter mais performance, maleabilidade na busca de dados de tabelas, rapidez, Cacheamento de páginas e variáveis, extração de dados de tabelas e mostrá-las em tabelas HTML, e assim por diante.
Em meu sistema utilizo AdoDB como cacheamento de variáveis, Cacheamento de Blocos, módulos e páginas em PHP.
utilizo o Postnuke ( Aliás com ele já vem implementadas algumas rotinas em AdoDB que automaticamente manuseiam favorávelmente tabelas de banco de dados ).

Bem, vamos dar uma pequena introdução de como criar sessions utilizando AdoDB e Banco de dados.
Quem quiser obter mais informações 'a respeito, visite: http://php.weblogs.com/adodb







Sessões em PHP utilizando ADOdb !!

Você pode criar Persistentes e Não persistentes Sessions com o AdoDB.

PHP4 já vem com inúmeras vantagens, e uma das mais populares e excelentes é o manuseio de Variáveis em sessões.
Para se utilizar variáveis em sessões, simplesmente implementamos o comando session_start() no início da home page, antes do HTTP HEADER ser enviado. Então as variáveis que você quer utilizar nas sessões por um determinado período de tempo, implementamos o comando session_register($nome_nome_da_variável). Por default as sessões se utilizam de cookies.

Por default as variáveis de sessões são armazenadas em "files", mas o ideal seria armazená-las em um banco de dados.


Este artigo suporta MYSQL, DBM, PostgreSQL, Oracle, Microsoft SQL server, sybase, Informix, Access, FoxPro, Interbase...


Para implementação, você precisa ter a biblioteca AdoDB ( 290K ) que pode ser baixada em: http://php.weblogs.com/adodb.
Crie um diretório para instalar, e ele cria automaticamente os sub-diretórios.


Instalação:
Crie um banco de dados chamado sessions ( ou qualquer outro nome ) com a seguinte estrutura:



create table sessions (
SESSKEY char(32) not null,
EXPIRY int(11) unsigned not null,
DATA text not null,
primary key (SESSKEY),
key (EXPIRY)
)


Depois vá em adodb_session.php e modifique as variáveis:



$ADODB_SESSION_DRIVER='Banco de dados..ex: Mysql, Oracle';
$ADODB_SESSION_CONNECT='Servidor..Pode ser o IP';
$ADODB_SESSION_USER ='user';
$ADODB_SESSION_PWD ='password';
$ADODB_SESSION_DB ='nome do banco que você criou';
Modifique no PHP.INI a variável para: session.save_handler=user.

Utilização:

Este é um exemplo de sua utilização: Se você der um Refresh, vai ver o incremento da variável.

GLOBAL $HTTP_SESSION_VARS;
include('adodb.inc.php');
include('adodb-session.php');
session_start();
session_register('AVAR');
$HTTP_SESSION_VARS['AVAR'] += 1;
print "<p>variable={$HTTP_SESSION_VARS['AVAR']}</p>";



-----------------------------------------
Abaixo, exemplo de Session não persistente:

GLOBAL $HTTP_SESSION_VARS;
include('adodb.inc.php');
include('adodb-session.php');
adodb_session_open(false,false,false);
session_start();
session_register('AVAR');
$HTTP_SESSION_VARS['AVAR'] += 1;
print "<p>\$HTTP_SESSION_VARS['AVAR']={$HTTP_SESSION_VARS['AVAR']}</p>";



Então, nas sessões você pode registrar as variáveis que você quiser de seu banco de dados.

** TExto original pode ser visto em http://php.weblogs.com/adodb/sessions



Mike
Bobfrank
Re: Criando Session em PHP / AdoDB
10 de January de 2003 às 01:36PM
Olá Mike!
Realmente é excelente a ADOdb, tenho utilizado em caches de resultados e outras implementações e agora vou experimentar o uso de session. Obrigado também pelos artigos que tem colocado aqui. Quem não usa a ADOdb em seus novos projetos tá perdendo tempo!
Valeu.
Roberto
Bobfrank
Acerto no nome da função:
10 de January de 2003 às 02:51PM
Mike,
Fui testar os exemplos, e encontrei que não funcionava o exemplo de Session não persistente, que por sinal, erro no próprio manual ADOdb (que você copiou para cá) e fiz a alteracão abaixo:
Nome correto da função (dentro do arquivo adodb-session.php):

function adodb_sess_open($save_path, $session_name,$persist=true)

//Abaixo, exemplo de Session não persistente:

GLOBAL $HTTP_SESSION_VARS;
include('adodb.inc.php');
include('adodb-session.php');
//adodb_session_open(false,false,false);
adodb_sess_open(false,false,false);
session_start();
session_register('AVAR');
$HTTP_SESSION_VARS['AVAR'] += 1;
print "<p>\$HTTP_SESSION_VARS['AVAR']={$HTTP_SESSION_VARS['AVAR']}</p>";

Abraços,
BobFrank
Miguel
Re: Acerto no nome da função:
10 de January de 2003 às 03:12PM
Na versão 3.00 isto já foi comentado e corrigido. Utilizo a versão 3.00 e não tive este problema. Alguns problemas ocorreram com Cache na linha de comando ->execute.

Implementando a linha ->CacheExecute o Cache é gravado sem problema nenhum.

Grato pela dica !!

Mike
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.