Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu estava pensando aqui sobre um problema que eu já tive num sistema de uma empresa em que eu trabalhava.
Tínhamos vários sistema como diretórios do domínio, exemplo: example.com/sistema1, example.com/sistema2. Isso gerava um erro na sessão, já que $_SESSION['login'] era usado nos dois sistemas, porém cada um era um login e senha diferente, fazendo com que sempre o usuário tivesse que se deslogar de um pra logar em outro.
Não trabalho mais nessa empresa, mas sempre acho bom ter uma solução para um problema que já tive.
Pensei em fazer da seguinte forma, mas quero saber se é uma boa prática ou não.
exemplo:
session_start();
$_SESSION['sistema1'] = new stdclass;
$_SESSION['sistema1']->nome = 'wallace';
$_SESSION['sistema1']->email = 'wallacemaxters@gmail.com';
$_SESSION['sistema1']->senha = 'senh@';
$_SESSION['sistema1']->idade = '24 anos';
print_r($_SESSION);
e em outro sistema, a mesma coisa, só que com a chave do array sendo "sistema2".
Outra coisa que eu queria saber é se eu posso setar através do ini_set a pasta onde o $_SESSION salva os arquivos de sessão, para que em cada sistema no mesmo domínio eu crie uma pasta de sessão específica pra ele.
Acho sua solução válida, porém pode ficar mais organizada. Já faz um tempo que trabalho com Adianti Framework e lá temos uma classe que facilita o uso de sessões a TSession.class.php
Exemplo:
function __autoload($classe)
{
if (file_exists("{$classe}.class.php"))
{
include_once "{$classe}.class.php";
}
}
new TSession();
TSession::setValue('nome', 'wallace');
TSession::setValue('email', 'wallacemaxters@gmail.com');
TSession::setValue('senha', 'senh@');
TSession::setValue('idade', '24 anos');
echo TSession::getValue('nome') .'</br>';
$session = new stdClass();
$session->nome = TSession::getValue('nome');
$session->email = TSession::getValue('email');
$session->senha = TSession::getValue('senha');
$session->idade = TSession::getValue('idade');
var_dump($session);Mas com framework a questão é outra, o controle das sessões ficaria bem mais simples.
Eu queria saber mesmo se isso é uma prática recomentada (já que é comum usar array, e não um stdClass());
>
Acho sua solução válida, porém pode ficar mais organizada. Já faz um tempo que trabalho com Adianti Framework e lá temos uma classe que facilita o uso de sessões a TSession.class.php
Vi o código fonte. É parecido com o que eu fiz na pergunta:
$_SESSION[APPLICATION_NAME][$key] = $value;
Eu nunca fiz, mas dá uma olhada nesse link: http://stackoverflow.com/questions/5479626/same-domain-different-folder-php-session