Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal, Estou com um problema com este "erro" ao tentar usar a função "session_regenerate_id" para atribuir uma nova id à sessão. Ja verifiquei todos os espaços, BOM, etc... mas ele ainda persiste, alguem me da uma luz? Abaixo TODO código PHP antes do HTML
<?php @session_start("SessionSITE"). // CRIA SESSAO E GRAVA ID$sessionID = session_id(). if($_POST['acessar']=='Acessar'){ // VERIFICA SE EXISTE CARRINHO ATIVO$query_carrinho = mysql_query("SELECT * FROM tb0051_pedidos WHERE sessionPEDIDO = '".$sessionID."'"). if(mysql_num_rows($query_carrinho)==0){ session_regenerate_id(). $newSESSIONID = session_id(). $login = $_POST['usuarioLOGIN']. $senha = md5($_POST['senhaLOGIN']). $query_cadastros = mysql_query("SELECT * FROM tb0031_cadastros WHERE usuarioCADASTRO= '".$login."' AND senhaCADASTRO= '".$senha."' AND ativoCADASTRO= '1' ") or die (mysql_error()). $cadastros = mysql_fetch_assoc($query_cadastros). $cadastraSESSION = mysql_query("INSERT INTO tb0051_pedidos (cadastroPEDIDO, sessionPEDIDO, dataPEDIDO, horaPEDIDO, statusPEDIDO, finalizadoPEDIDO, ativoPEDIDO) VALUES ('".$cadastros['codigoCADASTRO']."','".$newSESSIONID."','".date('Y-m-d')."','".date('H:i:s')."','1','0','1')"). echo "<script>top.location.href='/area-exclusiva/carrinho'</script>". } } // FINALIZA PEDIDOif($_GET['pga']=='finalizar'){ // SELECT DOS ITENS DO PEDIDO $itensPEDIDO = mysql_query("SELECT * FROM tb0052_itens INNER JOIN tb0051_pedidos ON codigoPEDIDO = pedidoITEM WHERE sessionPEDIDO = '".session_id()."'"). // LISTA OS ITENS DO PEDIDO while($pedidos = mysql_fetch_assoc($itensPEDIDO)){ // LISTA O ESTOQUE ATUAL $queryPRODUTO = mysql_query("SELECT * FROM tb0021_produtos WHERE codigoPRODUTO = '".$pedidos['produtoITEM']."'"). $estoqueantigoPRODUTO = mysql_fetch_assoc($queryPRODUTO). // QUEBRA O ESTOQUE ATUAL E RETIRA A QUANTIDADE DO ITEM $explodeantigo = explode('|',$estoqueantigoPRODUTO['estoquePRODUTO']). $explodeantigo2 = explode(',',$explodeantigo[$pedidos['tamanhoITEM']-1]). $novaQUANTIDADE = $explodeantigo2[0].','.($explodeantigo2['1']-$pedidos['quantidadeITEM']). // REMONTA ESTOQUE COM A QUANTIDADE ATUALIZADA if($pedidos['tamanhoITEM']=='1'){ $produtoPP = $novaQUANTIDADE. }else{ $produtoPP = $explodeantigo[0]. } if($pedidos['tamanhoITEM']=='2'){ $produtoP = $novaQUANTIDADE. }else{ $produtoP = $explodeantigo[1]. } if($pedidos['tamanhoITEM']=='3'){ $produtoM = $novaQUANTIDADE. }else{ $produtoM = $explodeantigo[2]. } if($pedidos['tamanhoITEM']=='4'){ $produtoG = $novaQUANTIDADE. }else{ $produtoG = $explodeantigo[3]. } if($pedidos['tamanhoITEM']=='5'){ $produtoGG = $novaQUANTIDADE. }else{ $produtoGG = $explodeantigo[4]. } if($pedidos['tamanhoITEM']=='6'){ $produtoXGG = $novaQUANTIDADE. }else{ $produtoXGG = $explodeantigo[5]. } $novoestoquePRODUTO = $produtoPP.'|'. $produtoP.'|'. $produtoM.'|'. $produtoG.'|'. $produtoGG.'|'. $produtoXGG. // ATUALIZA ESTOQUE $updatePRODUTOS = mysql_query("UPDATE tb0021_produtos SET estoquePRODUTO = '".$novoestoquePRODUTO."' WHERE codigoPRODUTO = '".$pedidos['produtoITEM']."'"). } $finalizadoPEDIDO = mysql_query("UPDATE tb0051_pedidos SET finalizadoPEDIDO = '1' WHERE sessionPEDIDO = '".$sessionID."'"). session_regenerate_id(). if($finalizadoPEDIDO){ echo "<script>top.location.href='/area-exclusiva/pagamento'</script>". } } // ADICIONA PRODUTOif($_GET['pga']=='carrinho' && $_GET['pgb']=='add'){ $codigoPRODUTO = $_POST['codigoPRODUTO']. $tamanhoPRODUTO = $_POST['tamanhoPRODUTO']. $corPRODUTO = $_POST['corPRODUTO']. $sessionPEDIDO = $_POST['sessionPEDIDO']. $query_pedido = mysql_query("SELECT * FROM tb0051_pedidos WHERE sessionPEDIDO= '".$sessionPEDIDO."'"). $pedido = mysql_fetch_assoc($query_pedido). $queryADD = mysql_query("INSERT INTO tb0052_itens (pedidoITEM, produtoITEM, quantidadeITEM, corITEM, tamanhoITEM) VALUES ('".$pedido['codigoPEDIDO']."','".$codigoPRODUTO."','1', '".$corPRODUTO."', '".$tamanhoPRODUTO."')"). echo "<script>top.location.href='/area-exclusiva/carrinho/'. </script>". } // APAGAR PRODUTOif($_GET['pga']=='apagar-item'){
$codigoPRODUTO = $_GET['pgb']. $deletaPRODUTO = mysql_query("DELETE FROM tb0052_itens WHERE codigoITEM = '".$codigoPRODUTO."'"). echo "<script>top.location.href='/area-exclusiva/carrinho/'. </script>". } // EXCLUIR PEDIDOif($_GET['pga']=='apagar-pedido'){
$selectPEDIDO = mysql_query("SELECT * FROM tb0051_pedidos WHERE sessionPEDIDO = '".session_id()."'"). $PEDIDO = mysql_fetch_assoc($selectPEDIDO). $codigoPEDIDO = $PEDIDO['codigoPEDIDO']. $deletaPRODUTO = mysql_query("DELETE FROM tb0052_itens WHERE pedidoITEM = '".$codigoPEDIDO."'"). //$deletaPEDIDO = mysql_query("DELETE FROM tb0051_pedidos WHERE sessionPEDIDO = '".session_id()."'"). //session_regenerate_id(). echo "<script>top.location.href='/area-exclusiva/carrinho'</script>". } // SAIRif($_GET['pga']=='sair'){
session_regenerate_id(). unset($_SESSION['usuarioCADASTRO']). unset($_SESSION['senhaCADASTRO']). echo "<script>top.location.href='/home'</script>". }
require_once("includes/area-exclusiva/restrito.php").?> Agradeço a todos desde já!:thumbsup:Quando é exibido o erro "Headers already sent", ele informa o arquivo e a linha que inicializou o corpo da resposta, poste o conteúdo completo do erro e o arquivo mencionado no mesmo
Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in /caminho/arquivo.php on line 144
Eu ja havia procurado no arquivo, e nessa mesma linha consta a função session_regenerate_id.
/caminho/arquivo.php é esse código que postou no início do tópico?? Porque aqui a linha 144 é uma linha em branco.
De qualquer forma, você não deve usar session_regenerate_id mais de uma vez por resposta.
>
/caminho/arquivo.php é esse código que postou no início do tópico?? Porque aqui a linha 144 é uma linha em branco.
De qualquer forma, você não deve usar session_regenerate_id mais de uma vez por resposta.
Na verdade é linha 104.
Mas as funções estão dentro de um if, então só será executada caso o if seja verdadeiro, assim não tem como ela pegar as duas, por isso não estou entendendo o pq do erro! :upset:
104 também é uma linha em branco...
104 também é uma linha em branco...
Pode ter ficado aqui, mas segue abaixo:
...
$finalizadoPEDIDO = mysql_query("UPDATE tb0051_pedidos SET finalizadoPEDIDO = '1' WHERE sessionPEDIDO = '".$sessionID."'");
session_regenerate_id(); <= LINHA 104
if($finalizadoPEDIDO){
echo "<script>top.location.href='/area-exclusiva/pagamento'</script>";
}
...Algum HTML é gerado na tela ANTES do header? Nem que seja um espaço em branco, qualquer HTML gerado antes do setup do Header vai acusar esse erro.
Então certifique-se novamente que este arquivo não começa com uma linha em branco
Obrigado a todos que me orientaram, realmente o problema era em uma página que estava com a códificação BOM, eu acabei não vendo antes pois estou usando url amigavel e só agora vi que na index tinha algumas includes...
Até a próxima pessoal! :bye:
Quando é exibido o erro "Headers already sent", ele informa o arquivo e a linha que inicializou o corpo da resposta, poste o conteúdo completo do erro e o arquivo mencionado no mesmo