2011-08-29 43 views
11

Estoy empezando a desarrollar un carrito de compras de múltiples tiendas en php, donde cada usuario tendrá un carrito de compras en diferentes tiendas. Me gustaría saber cuál es la mejor manera de guardar los detalles del carrito de compra como el nombre de los productos, la identificación, el precio, etc., cuando un usuario hace clic en "Agregar al carrito". Creo que podemos guardarlo de dos maneras: a) Sesión b) Tabla Db.¿Carro de compras, sesión o DB?

¿Cuál es el mejor método para guardar toda esta información? Quiero hacerlo tan seguro como sea posible.

Sugerido.

Gracias

Respuesta

7

Debe conocer la gravedad de los datos. Si cree que los datos en su carrito de compras no son críticos y no son necesarios para varias sesiones, puede hacerlo solo con las sesiones y guardar algunas escrituras en el DB.

Incluso si necesita una base de datos, puede guardar algunas escrituras y usar el lado del cliente para el almacenamiento temporal y finalmente moverlo a su base de datos con algún tipo de mecanismo de sincronización.

Pero si sus datos son muy críticos y es obligatorio que persistan en varias sesiones, entonces DB sería una opción ideal, ya que le daría más poder sobre el acceso a los datos y también facilitaría la implementación.

+0

En caso de utilizar una sesión para los visitantes de la carretilla de compra, quiere almacenar lo menos posible. 1 porque los datos de la sesión pasan a la página siguiente (aumento del tiempo de carga), 2 porque los datos críticos como el precio no deben 'almacenarse en caché' en una sesión, ya que las sesiones pueden existir durante un período de tiempo más largo. (Sin embargo, hay casos en los que desea 'caché', pero ¿entiende bien? :) – Frankey

+0

@Frankey Las variables de sesión de PHP no se envían al cliente. La cookie de ID de sesión se usa para indicar al servidor con qué sesión se asociará '$ _SESSION'. –

0

con una implementación base de datos que tienen un control granular y mejor persistencia.

Use Session para conocer el usuario conectado entre páginas, pero DataBase para almacenar datos críticos.

7

La sesión o base de datos no es una opción exclusiva; la sesión también se puede almacenar en la base de datos. De alguna manera tienes que recuperar el carro para el usuario. En todos los casos tendrás sesión para esto. La pregunta es si el carro debe persistir entre sesiones (para usuarios registrados). En ese caso, no debe emparejar el carro con la sesión. Las cosas se complican si desea guardar el carrito para los usuarios registrados, permitir que el carrito no registrado también tenga carrito y combinar el carro de la sesión y el carro guardado en caso de que el usuario inicie sesión.

Para responder a su pregunta, simplemente debe aclarar sus requisitos. ¿Qué significa 'carrito de compras en diferentes tiendas'? ¿El carrito se guardará entre los inicios de sesión (por ejemplo, el usuario regresa 1 semana después)?

En cuanto a la seguridad, generalmente se prefiere guardar la sesión en la base de datos, ya que puede tener protección adicional que tenga acceso a los datos, especialmente en un alojamiento compartido.

Cuestiones relacionadas