Perdendo variável de sessão
25/07/2013
0
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
Posts
26/07/2013
William
Em que ponto ocorre a perda de valores?
26/07/2013
André Maretti
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.
26/07/2013
William
Enquanto isso vou estudando esse caso por aqui...
26/07/2013
William
[url]http://henriquebarcelos.in/blog/2011/11/20/sessoes-em-php-erros-comuns/[/url]
Clique aqui para fazer login e interagir na Comunidade :)