Boa Tarde,
Pessoal estou tentando criar um COOKIE para uma aplicação web que estou desenvolvendo.
Tenho uma tela onde sera realizada Vendas mais antes de ser finalizada a venda o usuário pode ir adicionando produtos ao Carrinho nesse carrinho quero utilizar o COOKIE.
Estou utilizando a Linguagem PHP para desenvolver essa aplicação. Pesquisei algumas coisas sobre COOKIE mais ainda não entendi muito bem como funciona, estou fazendo da seguinte forma, mas pelo visto está errada e não da para usar tantos valores dentro desse COOKIE e gostaria de saber como deveria fazer para passar mais de um valor:
<?php
$Codigo=$_POST['codigo_Oculos'];
$CodigoFuncionario=$_POST['combo_funcionario'];
$CodigoCliente=$_POST['id_cliente'];
$CodigoTipoVenda=$_POST['combo_pagamento'];
$ValorTotal=$_POST['campo_Valor_Total'];
$ValorDesconto=$_POST['campo_Desc_Total'];
$Quantidade=$_POST['campo_Quantidade'];
setcookie("carrinhoCompra",$Codigo,$CodigoFuncionario,$CodigoCliente,$CodigoTipoVenda,$ValorTotal,$ValorDesconto,$Quantidade,time()+1800);
?>
Esse parâmetros são enviados da tela de Vendas através do botão de adicionar no carrinho.
Quando tento acessar os valores da erro. Alguém pode me dar um sinal por qual caminho seguir ou se seria melhorar trocar o COOKIE por SESSION.
Agradeço a colaboração…
Se for usar cookies recomendo que faça um cookie para cada dado, por exemplo:
`setcookie('codigo_oculos', $codigo, time() + 600000);
`setcookie('codigo_funcionario', $codigoFuncionario, time() + 600000);
`setcookie('id_cliente', $id_cliente, time() + 600000);
E para recuperar os valores é só fazer:
$cod_oculos = $_COOKIE['codigo_oculos'];
$cod_funcionario = $_COOKIE['codigo_funcionario'];
$id_cliente = $_COOKIE['id_cliente'];
Lembrando que o tempo de vida do cookie é medido em milissegundos, portanto os cookies acima vão durar apenas 10 minutos (600000 milissegundos).
Se for usar SESSION lembre-se que seu funcionamento é parecida com o COOKIE, porém toda SESSION é finalizada quando o usuario fecha o navegador
1 curtida
A dica do @gabrielcardoso é válida, mas eu guardaria o carrinho numa tabela em um banco de dados usando uma chave de identificação como o login do usuário ou ip da máquina usando
$_SERVER['REMOTE_ADDR']
Dessa forma mesmo que o usuário feche o navegador e entre posteriormente, os produtos estão salvos no carrinho, podendo ser resgatados a qualquer momento.
Eu já fiz uma aplicação Swing em Java fazendo dessa forma, funcionava como um pedido de venda. E era finalizado quando o cliente fazia o pagamento total. Mais nesse caso eu gostaria que ficasse apenas 30 minutos no carrinho evitando que o produto caso não sendo finalizada a venda fique travado em um cliente.
Pqe o produto ficaria disponível para todos os usuários e se alguém colocar no carrinho aquele produto fica exclusivo para aquele cliente durante 30 minutos e se ele não finalizar a venda o produto volta a ficar disponível para todos.
Muito obrigado pela resposta fiz do jeito que você falou e está salvando no Cookie. Agora vou pesquisar como coloco ele em uma tabela para a pessoa ver o que está no carrinho de compras.
Obrigado!!
Entendo, o problema de usar cookie é a questão do usuário poder desativá-lo, além de haver um limite tanto em quantidade de cookies quanto em tamanho de cada um para um mesmo dominio…
A forma que o @gabrielcardoso mostrou é a mais indicada, mas se quiser otimizar, gravando tudo num só cookie, pode tentar assim
$cookie = serialize($_POST);
setcookie("carrinhoCompra", $cookie, time() + 1800);
E para resgatar use unseralize…
O cara valeu kkkk. Achei que não dava para colocar todos em um cookie apenas. Poohh valeu mesmo.
Como funcionaria esse unserialize? Sou novo em php, eu domino mais o java. Tem como dar um exemplo simples utilizando cookie?
valeu mesmo!!
Serialize e unserialize servem para manter o estado de uma variável (no caso do php) em uma espécie “bruta” de hash string…
Se você veio do java, é um conceito parecido com Serializable da vida, etc…
Trocando em miúdos, no php seria algo como empacotamento (serialize) e desempacotamento (unserialize) a diferença é que o php pode aplicar isso a qualquer tipo de dado e não somente em objetos como creio que o Java faz…
Na dúvida faça isso antes de gravar o cookie
var_dump($cookie)
Verá que virou uma string “codificada”…
Não tenho exemplos usando cookie porque seu caso é bem incomum, mas leia a doc há exemplos bacanas lá e você consegue encaixar no seu problema.
Boa sorte
Tranquilo mano, vou pesquisar esse tema.
Se conseguir alguma coisa eu posto aqui.
Valeu!!
Creio que isso resolva
$cookie = unserialize($_COOKIE['carrinhoCompras']);