Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Carrito de compra

Estas en el tema de Carrito de compra en el foro de PHP en Foros del Web. Hola. Estoy creando una tienda online y para ello se me han ocurrido un par de ideas para gestionar las sesiones. Primero pensé en crear ...
  #1 (permalink)  
Antiguo 12/01/2015, 16:31
dankko
Invitado
 
Mensajes: n/a
Puntos:
Carrito de compra

Hola. Estoy creando una tienda online y para ello se me han ocurrido un par de ideas para gestionar las sesiones.

Primero pensé en crear una sesión llamada Carrito, que almacenara un objeto llamado Carrito.

Lo siguente que pensé fue en crear otra sesión llamada user, que almacenará los datos del usuario.

Para no tener que crear dos sesiones, he pensado en almacenar ambas en una, es decir, creando un objeto de la clase Carrito y un objeto de la clase user en un array de sesiones.

Lo que quiero saber es si lo que estoy haciendo esta bien, esta mal, o es innecesario o poco eficiente...

En cada archivo incluyo lo siguiente:

If(!isset($SESSION["session"])){

$carrito = new carrito();
$user = new user();

$_SESSION["session"] = array(
"carrito" => $carrito,
"user" => $user,
)

}

Es eficiente y correcto esto? Creo que así me ahorro crear dos sesiones, teniendo solo una.

Para acceder a los datos del carrito haría lo siguiente:

$_SESSION["session"]["carrito"]->get_array_prod();

Gracias.
  #2 (permalink)  
Antiguo 12/01/2015, 17:04
Avatar de wunderwaffen077  
Fecha de Ingreso: marzo-2014
Mensajes: 45
Antigüedad: 5 años, 11 meses
Puntos: 3
Respuesta: Carrito de compra

Seria mejor separarlos, tener objetos separados y no sea muy engorroso..


Acá un pequeño ejemplo de carrito basico..

http://xpapachox-php.blogspot.com/
  #3 (permalink)  
Antiguo 13/01/2015, 01:45
 
Fecha de Ingreso: enero-2015
Mensajes: 40
Antigüedad: 5 años, 1 mes
Puntos: 8
Respuesta: Carrito de compra

Si el usuario necesita estar registrado para poder comprar yo en vez de sesiones cargaría el carrito directamente de la base de datos.

También me gustaría comentarte, veo que creas una sesión para usuario pero no para contraseña, esto es muy peligroso ya que si mediante la inyección de código cambia la sesión tendrá acceso a la web desde cualquier usuario, para prevenir esto crea una sesión para el password del usuario y comprueba en cada recarga si el login está bien hecho.
  #4 (permalink)  
Antiguo 13/01/2015, 06:37
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Carrito de compra

Cita:
Iniciado por wunderwaffen077 Ver Mensaje
Seria mejor separarlos, tener objetos separados y no sea muy engorroso..


Acá un pequeño ejemplo de carrito basico..

http://xpapachox-php.blogspot.com/

Hola, gracias por tu respuesta y aporte, seguramente saque algunas ideas del ejemplo que me has dejado.

Al tenerlos juntos lo que me evito sería tener que crear una session para contener los datos del usuario y otra sesion separada para el carrito...

Es "poco eficiente" eso que estoy haciendo? Generar dos sesiones por usuario sería bueno??

Gracias. saludos.
  #5 (permalink)  
Antiguo 13/01/2015, 06:41
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Carrito de compra

Cita:
Iniciado por quintan Ver Mensaje
Si el usuario necesita estar registrado para poder comprar yo en vez de sesiones cargaría el carrito directamente de la base de datos.

También me gustaría comentarte, veo que creas una sesión para usuario pero no para contraseña, esto es muy peligroso ya que si mediante la inyección de código cambia la sesión tendrá acceso a la web desde cualquier usuario, para prevenir esto crea una sesión para el password del usuario y comprueba en cada recarga si el login está bien hecho.

Hola quintan, no inclui todo el codigo para ser más conciso en lo que estaba preguntando. El usuario no necesta estar registrado para añadir productos al carrito, para pagar sí, pero para navegar por la web no.

Lo que deseo que es que cuanta menos interacción haya con la BD mejor, así que si puedo mantener los productos que va escogiendo en el carrito sin tener que hacer ninguna llamada a la BD, excepto cuando los coge del catálogo, que es lo mínimo que espero que interatúe con una BD de productos si no está logueado.

La sesíon si incluye contraseña y otros datos para el usuario, pero he puesto lo mínimo de código para ser conciso en lo que preguntaba.

Si puedes decirme como se haría, como evitar que me inyecten código a través de una sesión? Cómo podría protegerme?

Gracias. saludos.
  #6 (permalink)  
Antiguo 13/01/2015, 06:49
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Carrito de compra

Cuestión general:

Código PHP:
Ver original
  1. If(!isset($SESSION["session"])){
  2.  
  3. $carrito = new carrito();
  4. $user = new user();
  5.  
  6. $_SESSION["session"] = array(
  7. "carrito" => $carrito->array_product_carrito();
  8. "user" => $user->array_dates_user(),
  9. )
  10.  
  11. }

Es "eficiente" que esté añadiendo esos objetos a un array de sesión? El array sólo se generará cada vez que abra el navegador, cierto?

No quisiera estar recurriendo en cada página vista a que se cree un nuevo objeto si ya estaba creado y almacenado en la sesión...

Segunda cuestión:

Cada vez que añado un nuevo producto al carrito lo hago a través de la llamada a una función de la clase carrito que hace lo siguiente (dejando de lado todos los procesos y condiciones que hago para comprobar que el producto no existía ya en el carrito y así duplicar las cantidades en vez de añadir...):

Código PHP:
Ver original
  1. public function introduce_producto($id_prod,$nombre_prod,$precio_prod){
  2.  
  3.       $this->array_product[] = array(
  4.          "id" => $id_prod,
  5.          "nombre_producto" => $nombre_prod,
  6.          "precio_producto" => $precio_prod,
  7.          "cantidad_producto" => 1
  8.       );
  9.  
  10. }

Está bien la manera de crear ese array o estoy creando un array de manera poco eficiente, lo que me generaría mayor carga a la página?

Espero vuestras respuestas. Gracias.

Última edición por dankko; 13/01/2015 a las 06:56
  #7 (permalink)  
Antiguo 13/01/2015, 08:29
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 11 años, 4 meses
Puntos: 175
Respuesta: Carrito de compra

Oye, detente... esto no es un CHAT donde cada 2 min levantas un post... porque en vez de pregutar sobre eficiencia acerca de un código tan básico no lo pruebas tú mismo a ver si funciona... si estamos hablando de un sistema complejo vaya y pase, pero para un shopping car con session, vamos...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #8 (permalink)  
Antiguo 14/01/2015, 07:37
dankko
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Carrito de compra

Cita:
Iniciado por loncho_rojas Ver Mensaje
Oye, detente... esto no es un CHAT donde cada 2 min levantas un post... porque en vez de pregutar sobre eficiencia acerca de un código tan básico no lo pruebas tú mismo a ver si funciona... si estamos hablando de un sistema complejo vaya y pase, pero para un shopping car con session, vamos...
1) Simplemente estoy contestando y AGRADADECIENDO a las personas que intentan ayudarme con las cuestiones que estoy planteando.

2) Si estoy preguntando algo es porque no se como hacerlo o aún no he dado con la clave, por lo que no se como medir la eficiencia de ALGO TAN SIMPLE como un shopping car. Espero que tú me pudes decir COMO mides la eficiencia de ese código TAN SIMPLE.

3) Creo que con probar no basta para medir la eficiencia de un programa, no basta con que funcione tampoco... Eso creo que deberías tenerlo tan claro si consideras que un shopping car es un código SIMPLE. Todo depende como lo quieras plantear.

4) Más respeto y educación. Tienes muchas más maneras de decirme, oye, por favor, no hagas re-post (logicamente lo he hecho sin querer), lee las normas, etc.
Llamándome "tonto" o algo por el estilo entre líneas no solucionas nada.

5) No creo que merezcas que te diga nada más, ya que debes ser de los que piensa que a base de palos se aprende.

Ese status de "colaborador" no sé si por sabiduría respecto al tema con el cual colaboras en esta web te queda grande (supongo que no), pero por "educación", si que te queda grande y te sobra mucho.

GRACIAS POR TU ÚTIL RESPUESTA. FUE DE MUCHA AYUDA. ME HAS SOLUCIONADO EL PROBLEMA.

-----------------------------------------

Ahora en serio, gracias a los comentarios anteriores he probado y he ideado un nuevo script que se adapta a lo que quiero. Gracias.

Etiquetas: carrito, compra, objetos, php5, poo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:23.