Foros del Web » Programando para Internet » PHP »

Problema variabe session en servidor

Estas en el tema de Problema variabe session en servidor en el foro de PHP en Foros del Web. Hola, estoy implementando un carrito de compras para mi sitio, entonces pense hacerlo con una variable de session que me vaya guardando la info de ...
  #1 (permalink)  
Antiguo 22/05/2009, 08:50
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 16 años, 6 meses
Puntos: 0
Problema variabe session en servidor

Hola, estoy implementando un carrito de compras para mi sitio, entonces pense hacerlo con una variable de session que me vaya guardando la info de lo que se vaya agregando al carrito y manejarlo con una clase. La operatoria seria la siguiente.

1. Se debe crear una variable correspondiente a la clase del carrito. Al crearse, automaticamente esta clase inspecciona en la variable por ejemplo $_SESSION['micarrito'] por los productos que hay en ella, y los guarda en la estructura de la clase.

2. Al agregar o quitar un producto se agrega a esta estructura y actualiza tambien la variable de session

Para implementar esto utilizo arreglos que guardo en la variable de session. Pero mi problema esta en que en mi servidor de prueba local, me funciona bien, hace todo lo qeu debe hacer y como lo debe hacer, pero en el servidor de la pagina no... En un principio pense que era por la diferencia de version del php, utilizo el wamp para montar mi servidor local, por lo que me baje la misma version que tiene el servidor (4.4.6) y me sigue haciendo lo mismo. Paso a detallar el error.

al agregar un producto al carrito, me refresca la pagina, al volverla a cargar, envio alguna variable que hace detectar que debe agregar un producto y lo agrega, me muestra el cartel de que se agrego correctamente y que tengo un producto y si voy a la pagina que me muestra el detalle del carrito, me lo muestra perfectamente.
Ahora, ya sea si refresco la pagina en la cual agrego el producto al carrito o refresco la pagina del carrito, es como que se corrompe la informacion que esta en la variable de session. siendo que ya la cargo bien 1 vez (al agregar refresca la pagina pero la varialbe esta vacia todavia, guarda la info y por ello me muestra que ya hay un producto, al ir a la pagina de detalle, me muestra bien el produto). Esto me da a pensar que es cuando se carga la variable de session en la clase, funciona "bien" pero corrompe lo que hay en la variable y esto hace que en la 2da vez que cargo la clase, se me corrompa la info. Muestro la funcion que utilizo para cargar la info la cual no modifica la variable de session solo la lee y e ahi el problema, no puedo detectar donde esta modificando la variable.

Código PHP:
    function cargarCarrito(){
        
$this->productos=array();
        
$this->total=0;
        if(isset(
$_SESSION['micarrito']) && count($_SESSION['micarrito'])>0){
//            echo count($_SESSION['carrito']);
            
for($aux=reset($_SESSION['micarrito']);$aux;$aux=next($_SESSION['micarrito'])){
                
$this->productos[$aux['id']]['id']=$aux['id'];
                
$this->productos[$aux['id']]['tipo']=$aux['tipo'];
                
$this->productos[$aux['id']]['descripcion']=$aux['descripcion'];
                
$this->productos[$aux['id']]['cantidad']=$aux['cantidad'];
                
$this->productos[$aux['id']]['precio']=$aux['precio'];
                
$this->productos[$aux['id']]['descuento']=$aux['descuento'];
                
$this->productos[$aux['id']]['link']=$aux['link'];
                
$this->productos[$aux['id']]['subtotal']=$aux['cantidad']*($aux['precio']-$aux['descuento']);
                
$this->total+=$this->productos[$aux['id']]['subtotal'];
            }
        }
    } 
Espero que se entienda y me puedan ayudar. Ya probe tambien al finalizar el ciclo for volver a cargar la info en la variable de session, pero sigue haciendo lo mismo. Probe con una pagina especial que genere el objeto y que muestre de tener el primer elemento, y luego agregar un producto, la primera vez esta bien que no tenga nada y solo muestre el que se agrega, la 2da me muestra el producto que se agrego 2 veces porque lo vuelve a agregar, y la 3ra ya esta corrompida la variable

Código PHP:
require_once('admin/classes/carrito.php');
$carrito=new carrito();

$aux=$carrito->primero();
if(
$aux){
    echo 
'agrego bien: '.$aux['id'].'<br>';
}else{
    echo 
'No hay nada en el carrito<br>';
}
$carrito->agregarProducto('sarasa');
$aux=$carrito->primero();
if(
$aux){
    echo 
'agrego bien: '.$aux['id'].'<br>';
}else{
    echo 
'No hay nada en el carrito<br>';

__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
  #2 (permalink)  
Antiguo 22/05/2009, 09:43
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Problema variabe session en servidor

Creo que el problema no esta en tu script, si no el diseño. Te recomiendo que vuelvas a replantearte el problema y diseñes una solución diferente.

Saludos!
  #3 (permalink)  
Antiguo 22/05/2009, 21:40
Avatar de johnnygomez  
Fecha de Ingreso: octubre-2007
Mensajes: 166
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Problema variabe session en servidor

gracias, igualmente ya encontre el problema, no era nada que "este mal" sino simplemente algo que el servidor esta haciendo mal (no se porque) si creo que na variable de session llamada "cacho" y despues creo una variable llamada "$cacho" borra lo que tenia la session, simplemente le cambie el nombre a la variable de session y ya funciono... No lo descubri yo, sino un amigo al cual recurri y que trabaja conmigo y le paso lo mismo con otra cosa. Muchas gracias igual
__________________
Quien no encuentra ninguna falla en sí mismo, necesita una segunda opinión.
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 11:41.