Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

montano

[Resolvido] session_destroy() & session_regerenate_id()

Recommended Posts

boa noite,

 

Pessoal, tem problema por session_start() mais de uma vez na pagina?

 

eu tenho uma index.php que faz include de um cabeçalho e de um corpo. existe um session_start() em cada include, porque eu nao estava conseguindo usar no cabeçalho $_SESSION, mesmo ja tendo na index.php.

 

Até ai tudo bem, porem eu tenho um script assim:

if ($_GET['acao'] == 'logout')
{
session_destroy();
}
<a href='?acao=logout'>sair</a>

Quando eu executo isso, ele apaga minhas $_SESSION[], porem, quando eu logo de novo, meu ID na sessio continua o mesmo :S

 

Outro problema que esta acontecendo comigo é que tenho uma function que após executa-la eu uso um session_regenerate_id();, para poder manter a session porem caso usuario faço outro pedido, seja gerado em outro ID.

 

 

function gerarPedido()
    {       
        $this->execute("INSERT INTO tb_pedidos (pedido,data,usuario,status) 
		VALUES ('" . session_id() . "','" . date(Ymd) . "','" . $_SESSION['cod_user'] . "','1')"); 
		
        for ($i = 0; $i<count($_POST['produto']); $i++){
        $this->execute("INSERT INTO tb_pedido_itens (pedido,produto,qnt_solicitada) 
		VALUES ('" . session_id() . "','" . $_POST['produto'][$i] . "','" . $_POST['qnt'][$i] . "')"); 
		}
        unset($_SESSION['produto']);
		session_regenerate_id();
    }

Nenhuma das duas funções estao funcionando, sera que esta tendo algum conflito ou algo assim? :S, existe um modo correto de usar session_start()?

Estou usando navegador chrome.

 

agradeço muito ai as dicas, obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

o uso dessas funções é desencorajado há mais de 5 anos

 

no php6 foi removido por completo

 

o php mantem suporte para que todos os que utilizam métodos inaquedados tenham tempo para se atualizar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao utiliza nada..

 

simplesmente use unset() para apagar um índice.

 

quanto ao session_regenerate_id, nao há necessidade em usá-lo, pois basta controlar os indices de sessão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SESSIONID não precisa ser modificado

 

SESSIONID é o nome do cookie server-side

 

tudo oque você precisa fazer é manipular o array supoerglobal $_SESSION

 

 

por exemplo, vamos supor uma loja virtual

 

Numa loja virtual geralmente utiliza session para autenticar um usuário e tb para formularios e carrinho de compras

 

basta saber organizar o array

 

$_SESSION['UserLogon'] = array(
                     'login' => 'foo',
                     'name'  => 'foo bar',
                     'email' => 'foo@bar',
                  );

não faça por exemplo

 

$_SESSION['login'] = 'foo';
$_SESSION['name'] = 'foo bar';
$_SESSION['email'] = 'foo@bar';

pois se torna desorganizado e quando precisar destruir esses dados, terá que detruir um por um.

por isso, é mais simples organizar em arrays multi-dimensionais

 

quando nao quiser mais utilizar os dados, não precisa gerar um novo sessionID.

 

pode manter o mesmo, pois.. daria na mesma..

 

vamo supor que você queira fazer um logout,

 

unset( $_SESSION['UserLogon'] );

isso destruirá todo o array do índice UserLogon

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.