Ir para conteúdo

POWERED BY:

Arquivado

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

WHR

[Resolvido] Criando nova session_id()

Recommended Posts

Boa tarde pessoal!

Desenvolvi um carrinho de compras onde ele grava a session_id() do usúario até o fechamento do pedido.

Gostaria de saber como eu faço para que depois de ter concluido o pedido ele altere este session_id() por um novo sendo assim limpando o carrinho de compras?

 

Utilizei: a função session_regenerate_id() porem esta acusando este erro

 

Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent

Desde já agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode pegar a variavel do session_id() já existente e atribuir um novo valor para ela:

 

$_SESSION['SESSION_EXISTENTE'] = $Novo_Valor;

 

Ou se for apenas para limpar essa session_id(), use a funçao unset()

 

unset($_SESSION['SESSION_EXISTENTE']);

 

e se for para destruir toda a sessão utilize:

 

session_destroy();

 

Espero que ajude

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode pegar a variavel do session_id() já existente e atribuir um novo valor para ela:

 

$_SESSION['SESSION_EXISTENTE'] = $Novo_Valor;

 

Ou se for apenas para limpar essa session_id(), use a funçao unset()

 

unset($_SESSION['SESSION_EXISTENTE']);

 

e se for para destruir toda a sessão utilize:

 

session_destroy();

 

Espero que ajude

 

Boa tarde amigo, obrigado por responder.

 

No caso não posso utilizar:

unset(session_id());

limpar este valor e criar outro automaticamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use session_unset(), http://br.php.net/manual/pt_BR/function.session-unset.php

 

@walmir.silva, este método apenas apagará valores na superglogal $_SESSION, o valor na session ainda existirá, dependendo da versão do seu php :

Nota: Se $_SESSION (ou $HTTP_SESSION_VARS para PHP 4.0.6 ou inferior) é usada, utilize unset() para desregistrar a variável da sessão. i.e. unset($_SESSION['varname']);.

Note que :

Cuidado

NÃO elimina completamente $_SESSION com unset($_SESSION) enquanto esta desabilitará o registro de variáveis de sessão pela $_SESSION superglobal.

Ops...

Desconsiderem o que eu disse acima, use unset($_SESSION['VARNAME'])

(edit)

@WHR

No caso não posso utilizar:

unset(session_id());

limpar este valor e criar outro automaticamente?

Não, unset() destrói uma 'varíavel', isto aí resultaria em um Fatal Error.

use unset($_SESSION['VARNAME']);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia pessoal!

 

defini um valor para a variavel sessao_id()

 

$_SESSION['session_carrinho'] 	= session_id();

Após o cliente ter efetuado a compra fiz ele limpar o varlor da variavel

 

unset($_SESSION['session_carrinho']);

Porem quando ele volta no site o carrinho ainda esta cheio pois ele não esta gravando uma nova session_id() como faço para que ao limpar a $_SESSION['session_carrinho']) ele grave uma nova sessão com identificação diferente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para limpar a sessão, faça isso:

 

$_SESSION = array();

 

Bom dia André!

 

No caso gostaria que ele limpace apenas esta sessão $_SESSION['session_carrinho'] e criar um novo id de referencia para este sessão

Compartilhar este post


Link para o post
Compartilhar em outros sites

unset ($_SESSION['session_carrinho']);

Carlos Eduardo

 

Bom dia amigo, utilizei esta função mas quando retorno para o site o carrinho continua utilizando a mesmo sessão de referencia.

Como faço ao limpar ele gere uma nova referencia do id da sessão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

session_regenerate_id

 

Eu sei que você já testou antes, mas agora mudou de situação... Testa assim mesmo e veja se funciona.

 

Carlos Eduardo

 

Boa tarde amigo, continua do mesmo modo.

 

se coloco session_regenerate_id da erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro é o mesmo que antes?

Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent

Este comando tem que ser feito no antes do envio de qualquer header ao navegador. A lógica está correta, mas tem que conferir isto.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

André, o problema é que ele precisa que seja gerado um novo session_id()... Daí fazer isto é o mesmo que fazer unset($_SESSION['session_carrinho'])... Que ele está fazendo...

 

Agora uma pergunta... porque precisa ter um novo session_id()?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

André, o problema é que ele precisa que seja gerado um novo session_id()... Daí fazer isto é o mesmo que fazer unset($_SESSION['session_carrinho'])... Que ele está fazendo...

 

Agora uma pergunta... porque precisa ter um novo session_id()?

 

Carlos Eduardo

 

Boa tarde Carlos, preciso pois ao carregar o carrinho gravo a sessão do usuario e ele finalizando o processo de compra como esta sendo o mesmo id da sessão ele acusa como o carrinho ainda esta cheio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Carlos, preciso pois ao carregar o carrinho gravo a sessão do usuario e ele finalizando o processo de compra como esta sendo o mesmo id da sessão ele acusa como o carrinho ainda esta cheio

Tenta fazer o que o André falou, que funciona amigo.

 

$_SESSION['session_carrinho'] = array();

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.