session_set_save_handler

session_set_save_handler -- Define a sequência de funções de armazenamento

Descrição

bool session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc)

session_set_save_handler( ) session_set_save_handler( ) define a sequência de funções de armazenamento que é usada para guardar e devolver dados associados à sessão . Esta é mais usual quando um quando um método de armazenamento , a não ser que aquele oferecido por sessões do PHP seja preferível . i.e . Guardar dados de sessão em um banco de dados local . Retorna TRUE em caso de sucesso ou FALSE em falhas .

Nota : Você deve definir as opções de configuração session.save_handler para user em seu arquivo php.ini para session_set_save_handler( ) funcionar .

Nota : A função " write " handler não é executada até depois que o fluxo de saída esteja fechado . Assim , a saída de instruções debugging na função " write " handler poderá nunca ser vista pelo navegador . Se a saída debugging é necessária , ao invés disso é sugerido que a saída debug seja escrita para um arquivo .

Nota : A função " write " handler não é executada se a sessão não contém dados ; isto se aplica sempre se variáveis de sessão vazias são registradas . Esta difere à sessão padrão de save handler baseado em arquivos , que cria arquivos de sessão vazios .

O seguinte exemplo oferece um aramzenamento de sessão baseado em arquivos similar a sessões de PHP padrões save handler files . Este exemplo poderia facilmente ser extendido para outras bases de dados usando seu gerente de banco de dados favorito suportado pelo PHP .

A função " Read " deve retornar um valor string sempre que fizer o save handler trabalhar como o esperado . Retorna uma string vazia se não existe dados para ler . Retorna valores de outros handlers que estejam convertidos para expressões booleanas . TRUE em sucesso , FALSE em falha .

Exemplo 1 . session_set_save_handler( ) exemplo

 
?php

 
function

 
open

 
(

 
$save_path

 
,

 
$session_name

 
)

 
{

 
global

 
$sess_save_path

 
,

 
$sess_session_name

 
;

 
$sess_save_path

 
=

 
$save_path

 
;

 
$sess_session_name

 
=

 
$session_name

 
;

 
return(true)

 
;

 
}

 
function

 
close(

 
)

 
{

 
return(true)

 
;

 
}

 
function

 
read

 
($id

 
)

 
{

 
global

 
$sess_save_path

 
,

 
$sess_session_name

 
;

 
$sess_file

 
=

 
"$sess_save_path

 
/

 
sess_$id"

 
;

 
if

 
($fp

 
=

 
@fopen($sess_file

 
,

 
"r")

 
)

 
{

 
$sess_data

 
=

 
fread($fp

 
,

 
filesize($sess_file))

 
;

 
return($sess_data)

 
;

 
}

 
else

 
{

 
return("")

 
;

 
/

 
/

 
Deve

 
retornar

 
"

 
"

 
aqui

 
.

 
  }

 

}

 
function

 
write

 
($id

 
,

 
$sess_data

 
)

 
{

 
global

 
$sess_save_path

 
,

 
$sess_session_name

 
;

 
$sess_file

 
=

 
"$sess_save_path

 
/

 
sess_$id"

 
;

 
if

 
($fp

 
=

 
@fopen($sess_file

 
,

 
"w")

 
)

 
{

 
return(fwrite($fp

 
,

 
$sess_data))

 
;

 
}

 
else

 
{

 
return(false)

 
;

 
  }

 

}

 
function

 
destroy

 
($id

 
)

 
{

 
global

 
$sess_save_path

 
,

 
$sess_session_name

 
;

 
$sess_file

 
=

 
"$sess_save_path

 
/

 
sess_$id"

 
;

 
return(@unlink($sess_file))

 
;

 
}

 
/

 

************************************************

 
*

 
AVISO

 
-

 
voc

 
ecirc

 
;

 
precisa

 
implementar

 
alguns

 
tipos*

 
*

 
de

 
rotinas

 
de

 
garbage

 
collection

 
aqui

 
.

 
*

 

************************************************

 
/

 
function

 
gc

 
($maxlifetime

 
)

 
{

 
return

 
true

 
;

 
}

 
session_set_save_handler

 
("open"

 
,

 
"close"

 
,

 
"read"

 
,

 
"write"

 
,

 
"destroy"

 
,

 
"gc")

 
;

 
session_start()

 
;

 
/

 
/

 
Use

 
o

 
resto

 
da

 
sess

 
atilde

 
;o

 
normalmente

 

?