Perdendo variável de sessão

25/07/2013

0

PHP

Boa noite pessoal.

Estou desenvolvendo um site de comercio eletrônico.

Na verdade não é o primeiro. E esse projeto é relativamente simples.

O endereço é: http://www.plebit.net/plebitStore/

Acontece que para fazer o carrinho de compras eu utilizo uma variável de sessão para armazenar os produtos que estão sendo comprados e no final jogar essas informações para um banco de dados.

Acontece que durante a navegação das páginas, estou perdendo os valores da minha variável de sessão.

Alguém já passou por problema semelhante? Pode me ajudar?

Segue o fonte do carrinho:
<script language="javascript">
<!--
function atualiza() {
	document.forms[0].action = "index.php?pg=atualiza_carrinho";
	document.forms[0].enctype="multipart/form-data";
	document.forms[0].submit();
}

</script>


<?php include_once("leftSidebar.php"); 

session_start();

if(isset($_GET["codigo"]) == true){
	$codigo = $_GET["codigo"];
	$sql_produto = mysql_query("SELECT * FROM produtos WHERE codigo=".$codigo);
	$dados_produto = mysql_fetch_array($sql_produto);

	if(isset($_SESSION["carrinho"])== true){
		$chaves = array_keys($_SESSION["carrinho"]);
		$tamanho = count($chaves);
		$_SESSION["loja"] = count($chaves);
	}else{
		$tamanho = 0;
	}

	$_SESSION["carrinho"][$tamanho]["codigo"] = $codigo;	
	$_SESSION["carrinho"][$tamanho]["qtd"] = 1;
	$_SESSION["carrinho"][$tamanho]["codigo_cat"] = $dados_produto["codigo_cat"];
	$_SESSION["carrinho"][$tamanho]["codigo_subcat"] = $dados_produto["codigo_subcat"];
	$_SESSION["carrinho"][$tamanho]["produto"] = $dados_produto["produto"];
	$_SESSION["carrinho"][$tamanho]["modelo"] = $dados_produto["modelo"];
	$_SESSION["carrinho"][$tamanho]["desconto"] = $dados_produto["desconto"];
	$_SESSION["carrinho"][$tamanho]["valor"] = $dados_produto["preco"];	
	$_SESSION["carrinho"][$tamanho]["peso"] = $dados_produto["peso"];
	$_SESSION["carrinho"][$tamanho]["comprimento"] = $dados_produto["comprimento"];
	$_SESSION["carrinho"][$tamanho]["altura"] = $dados_produto["altura"];
	$_SESSION["carrinho"][$tamanho]["largura"] = $dados_produto["largura"];
	$_SESSION["carrinho"][$tamanho]["adicionais"] = $dados_produto["adicionais"];
}
?>
<!-- Begin Content -->
        <div id="content">
            <!-- Begin Products -->
          <div id="produtos">
            <h2>Carrinho<span class="title-bottom"> </span></h2>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" style="color:#FFF">
  <tr>
    <td colspan="7"> </td>
    </tr>
  <tr>
    <td width="6%"> </td>
    <td width="6%">Ação</td>
    <td width="3%"> Qtd.</td>
    <td width="53%"> Produto</td>
    <td width="15%" align="center" valign="top"> Valor Unitário</td>
    <td width="23%" colspan="2" align="right" valign="top"> Valor Subtotal </td>
  </tr>
  <form action="index.php?pg=excluir_produto_carrinho" method="post" enctype="multipart/form-data"> 
  <?PHP
  $total_geral = 0;
  $chaves = array_keys($_SESSION["carrinho"]);
  for($i=0 ; $i < sizeof($chaves); $i++){
	  $indice = $chaves[$i];
	  $valor_total = $_SESSION["carrinho"][$indice]["qtd"] * $_SESSION["carrinho"][$indice]["valor"];
	  $valor_Igor = $_SESSION["carrinho"][$indice]["qtd"];
	  $total_geral = $total_geral + $valor_total;
	  $totalSedex = $total_geral + $_SESSION["frete_sedex"];
	  $totalPac = $total_geral + $_SESSION["frete_pac"];
	  ?>
  
  <tr  class="title-bottom">
  <td> <input name="excluir[]" id="excluir[]" type="checkbox"  value="<?PHP echo $indice; ?>" /> </td>

    <td class="qtd"><input type="text" value="<? echo($_SESSION["carrinho"][$indice]["qtd"]); ?>" size="4" maxlength="4" name="a_prod[<?PHP echo($indice); ?>][qtd]" /></td>
    <td class="produto"> <? echo($_SESSION["carrinho"][$indice]["produto"]); ?> </td>
    <td align="right" valign="top" class="valor"><? echo 'R$ '.(number_format($_SESSION["carrinho"][$indice]["valor"],2,",",".")); ?> </td>
    <td colspan="2" align="right" valign="top" class="valor"><? echo 'R$ '.(number_format($valor_total,2,",",".")); ?> </td>
  </tr>
  <?PHP
  }
  ?>
  
  <tr>
    <td><input type="submit" name="button" id="button" value="Excluir"></td>
    <td> </td>
    <td colspan="5"><label>
      <input type="button" name="atualizar" id="atualizar" value="Atualizar carrinho" onClick="atualiza();"/>
    </label></td>
    </tr>
  </form> 
  <tr>
    <td> </td>
    <td> </td>
    <td colspan="5" align="right" valign="top">
    Valor Total: <?PHP echo 'R$ '.number_format($total_geral,2,",","."); ?> 
    </td>
    </tr>
  <tr>
    <td colspan="7"><p></p></td>
    </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td colspan="2">   
      <form id="frete" name="frete" method="post" action="index.php?pg=calcula_frete">
        <label>
          <span> Confirme o CEP: </span>
          <input type="text" name="confirmar_cep" id="confirmar-cep" value="<?PHP echo $dados_cep['cep']; ?>" />
          </label>
        <label>
          <input type="submit" name="calcular_frete" id="calcular_frete" value="Calcular Frete" />
          </label>
      </form></td>
    <td colspan="3" align="right" valign="top"> </td>
    </tr>
  <tr>
    <td>    
    <tr>
    <tr>
      <td>      
      <td colspan="6" align="right" valign="top">
    <form id="formFrete" name="formFrete" method="post" action="">
	<?PHP if(isset($_SESSION["frete_sedex"]) == true && $totalSedex != "" && $totalPac != ""){ 
        echo '<input name="valorFrete" type="radio" value="sedex"> <span>Frete Sedex: </span> R$ '.number_format($_SESSION["frete_sedex"],2,",",".").' ';
    } 
?>
	<tr>
	  <td>      
	  </td>
  <tr>
    <td>    
    </tr>
  <tr>
    <td colspan="7" align="right" valign="top">
      <?php 
	if(isset($_SESSION["frete_pac"]) == true && $totalSedex != "" && $totalPac != ""){
        echo '<input name="valorFrete" type="radio" value="pac"> <span>Frete PAC: </span> R$ '.number_format($_SESSION["frete_pac"],2,",",".").'
		 </td>
    </tr>
  <tr>
    <td colspan="6"><p></p></td>
  </tr>';
	} 
?>
	</form>
  <tr>
    <td colspan="7" align="right" valign="top">
    <?php
    if(isset($_SESSION["frete_sedex"]) == true && $totalSedex != ""){
      echo 'Total + Sedex: R$ '.number_format($totalSedex,2,",",".").' ';
	}
	?>
    </td>
    </tr>
  <tr>
    <td colspan="7" align="right" valign="top">
    <?php
	if(isset($_SESSION["frete_pac"]) == true && $totalPac != ""){
      echo 'Total + PAC: R$ '.number_format($totalPac,2,",",".").' ';
	}
	?>
    </td>
  </tr>
  <tr>
    <td colspan="7"><h2></h2></td>
  </tr>
  <tr>
    <td colspan="4" align="left" valign="top"> <a href="index.php?pg=home"><img src="css/images/botao_continuar_comprando.png" width="184" height="32"/></a></td>
    <td colspan="3" align="right" valign="top">
	<?php if($total_geral != 0){  ?>
     <img src="css/images/botao_proximo.png" width="142" height="43" onClick="javascript:if(document.getElementById('formFrete')[0].checked == true){window.location.href='index.php?pg=login_compra&tipoFrete=Sedex&valorFrete=<?php echo $totalSedex; ?>';}else{window.location.href='index.php?pg=login_compra&tipoFrete=PAC&valorFrete=<?php echo $totalPac; ?>';}"/>
	<?php } ?>
    </td>
    </tr>
</table>
    </div>
    <!-- End Products -->
</div>
<!-- End Content -->
André Maretti

André Maretti

Responder

Posts

26/07/2013

William

Colega naveguei no site e até encontrei uns erros, mas fiquei na dúvida se eram por ainda estar em construção ou por problemas com as SESSION.

Em que ponto ocorre a perda de valores?
Responder

26/07/2013

André Maretti

Na verdade em todo lugar que se usa variável de sessão os dados são perdidos durante a navegação entre as páginas.

Se você comprar um produtos, e depois comprar o segundo, ou o terceiro... em um determinado momento ele perde os dados q estavam no carrinho.

(O script do código do carrinho está acima neste post)


Mas agora surgiu um detalhe importante, e estranho.. rs.. Acabei de fazer uns testes em outro computador com Internet Explorer 10 e não apresentou problemas.

Vou fazer mais testes aqui.. e se o problema persistir ou eu encontrar alguma lógica nisso eu volto a escrever.

Obrigado.
Responder

26/07/2013

William

Qualquer novidade poste por gentileza, realmente é uma situação diferente!!

Enquanto isso vou estudando esse caso por aqui...
Responder

26/07/2013

William

Colega neste site, tem umas dicas bem interessantes sobre erros comuns que ocorrem com a SESSION, um dos tópicos fala sobre perda de dados!!
[url]http://henriquebarcelos.in/blog/2011/11/20/sessoes-em-php-erros-comuns/[/url]
Responder

26/07/2013

André Maretti

Opa.. obrigado.

Vou ler e ver se há algo relacionado.
Responder

26/07/2013

André Maretti

Opa.. obrigado.

Vou ler e ver se há algo relacionado.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar