Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/07/2016, 01:40
Avatar de manuparquegiralda
manuparquegiralda
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: Sesiones como invitado

Yo lo que hago cuando diseño una tienda online para algún cliente es vincular la cesta a una cookie en el PC y a un usuario en el caso de que esté registrado. El procedimiento que sigo es el siguiente:

Al ingresar un usuario en la tienda online asigno una cookie llamada "cesta" y como valor le pongo un ID. Cuando el usuario agrega un producto lo guardo en la base de datos que tiene entre otros campos: id, (va vinvulada a la cookie del PC del usuario pero no es un campo único en la BD) y otro campo id_user que va vinculado al usuario, después los campos donde se guardan los productos, fecha, etc... para poder administrar bien la cesta.

De esta forma, cuando varios usuarios manejan el mismo PC y compran en la tienda cada uno tiene su cesta y si no están registrados se usa un global, no sé si me explico bien.

EL USUARIO INGRESA --> Se asigna una cookie con ID.
SE AÑADE UN PRODUCTO --> Guardo la cesta en la BD con el ID de la cookie
EL USUARIO SE REGISTRA --> Se le asigna el id de usuario a la cesta en la BD
ENTRAN DE NUEVO SIN LOGUEARSE Y AÑADEN PRODUCTO --> Creo cesta paralela con el ID de la cookie sin el id de usuario
SI SE CREA UN NUEVO REGISTRO --> Le asigno el ID a la nueva cesta
SI SE LOGUEA --> Miro si tiene una cesta guardada en cuyo caso la sustituyo y si no creo una nueva en la BD.
SI ENTRA DE NUEVO Y SE LOGUEA --> Compruebo que tenga cesta y uso esa.

Cuestra trabajo explicar, en fin, juego con todas las variables posibles para que varios usuarios desde el mismo PC tengan sus cestas independientes vinculadas a una sola cookie en el PC.

De todas formas no es necesario vincular la cesta de la compra a un usuario forzosamente, en principio van por separado y cuando el cliente hace el pedido como dice Gogupe, pues se utiliza su cesta y sus datos de usuario para procesar el pedido.

Lo que sí te aconsejo como buena práctica es guardar la cesta en una base de datos, de esta manera, tu como administrador de la tienda podrás tener acceso a la cesta del usuario en caso de que éste necesite de tu ayuda o surja alguna complicación. Sé que es algo obvio, pero he visto de todo, desde guardar los productos en una cookie serializados o en el localStorage hasta guardarlos en una variable de SESSION la cual se pierde al cerrar el navegador o según la configuración del servidor.
__________________
Diseño Web - Arisman Web