Cita:
Iniciado por dashtrash Un usuario puede tener más de 1 reserva a la vez? Si no es así, cuando un usuario hace una reserva, se le eliminan todas las que tuviera pendientes.
Si el caso es más complejo, puedes guardar una variable "semáforo" dentro de la sesion (o en una cookie, por si el usuario desconecta y vuelve a conectar, etc).Esta variable se pone a "1" justo antes de que el usuario abandone tu web para ir a paypal.
Cuando paypal redirige al usuario de vuelta a tu web, lo primero que haces es poner esa variable a cero.
Si en cualquier página de tu web, que no sea el callback de paypal, esa variable de sesion está a "1", significa que ha dejado una reserva "pendiente" en la BD.Se elimina, y se pone la variable semaforo a "0".
No ando muy pez en las sessiones, estuve probando y cuando fui a paypal y volví se habia perdido la variable de la session.
Puede tener mas de una reserva aunque no es muy frecuente.
Lo hago de esta manera,
cuando hace una reserva y va a paypal, en caso de que no pague y hace clic en la pagina cancelación de paypal es rediregido a mi pagina de cancelar que recibe el id de la reserva que es único y se elimina asi:
Código PHP:
<?php
$id = @mysql_real_escape_string($_GET['id']);
include("base.php");
$sql = mysql_query("DELETE FROM bookings WHERE id=$id");
$sql = mysql_query("UPDATE orders SET booked='deleted' WHERE id = '$id'");
?>
Un código parecido uso en un cronjob que entre 30 y 45 minutos elimina los que no estan pagados.
El problema está en cuando en el lapso dan al boton atras yendo a paypal y vuelve al formulario para hacer algún cambio la reserva está hecha y hay que esperar que el cronjob la elimine. Eso lo puedo resolver con sessiones.
Lo que no sé como resolver es si van a la pagina de paypal, es decir, deja la web y en vez de cancelar el pago en paypal con el enlace que va a mi pagina de anulación, cierra la ventana o da al botón atrás.
No hay nada que cancele la reserva, al no ser que puedo seguri con la session con la variable id.
Lo que quiero hacer es que si vuelve a la pagina del formulario que elimine la reserva.
Si es así que al abondonar la web se pierde la session, quizas habría que guardarlo en una cookie?
Gracias.