Foros del Web » Programando para Internet » PHP »

Como permitir acceso exclusivo

Estas en el tema de Como permitir acceso exclusivo en el foro de PHP en Foros del Web. Hola a todos: Tengo una aplicacion tipica en la que un usuario se conecta (por login y todo eso) y edita algo que luego guardo ...
  #1 (permalink)  
Antiguo 31/10/2004, 05:22
 
Fecha de Ingreso: marzo-2004
Mensajes: 21
Antigüedad: 20 años, 1 mes
Puntos: 0
Como permitir acceso exclusivo

Hola a todos:

Tengo una aplicacion tipica en la que un usuario se conecta (por login y todo eso) y edita algo que luego guardo en una base de datos. Me gustaria hacer que cuando alguien intente editar el mismo registro le indique que ya esta siendo usado por otro. He pensado en poner alguna especie de 'flag' en la base de datos, pero si el usuario cierra el navegador quedaria el flag siempre activado...

Tambien tengo un formulario para insertar datos, uso el metodo if(isset(...)) para la ejecucion del codigo que introduce el registro, el problema es que si el usuario actualiza el naveador vuelve a ejecutar el mismo codigo y introduce 2 veces el mismo registro,¿como evito esto?. He pensado en usar unset() despues de ese codigo pero no me funciona...

Una ultima cuestion, ¿hay en PHP alguna forma de que cualquier sesion pueda ver si existe alguna variable comun para todas?, seria como una variable superglobal

Muchas gracias por todo.
  #2 (permalink)  
Antiguo 31/10/2004, 12:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Tengo una aplicacion tipica en la que un usuario se conecta (por login y todo eso) y edita algo que luego guardo en una base de datos. Me gustaria hacer que cuando alguien intente editar el mismo registro le indique que ya esta siendo usado por otro. He pensado en poner alguna especie de 'flag' en la base de datos, pero si el usuario cierra el navegador quedaria el flag siempre activado...
En lugar de usar un campo tipo "flag" (1/0 .. on/off) .. usa fechas; fecha de ingreso a editar ese registro. Eso te servirá para hacerte rutinas de cálculos de "tiempo de inactividad" .. Ese campo lo actualizas a cada petición de una página a tu servidor y en tu zona de código donde entres a modificar ese registro, verificas ese tiempo y lo contrastas con la fecha/hora actual .. si es mayor que el tiempo que determines como "tiempo de inactividad" (es decir; que el usuario aparentemente no està haciando nada en el sistema o salió cerrando su navegador) .. Lo desbloqueas.

En el foro se suele hablar del tema con propuestas para evitar el problema .. busca por el término "concurrencia" .. veras soluciones alternativas.

Cita:
Tambien tengo un formulario para insertar datos, uso el metodo if(isset(...)) para la ejecucion del codigo que introduce el registro, el problema es que si el usuario actualiza el naveador vuelve a ejecutar el mismo codigo y introduce 2 veces el mismo registro,¿como evito esto?. He pensado en usar unset() despues de ese codigo pero no me funciona...
Para evitar ese problema .. se trata de que redirecciones desde tu script/parte de proceso al terminar este hacia otra página o si misma. Ejemplo:

Código PHP:
<?
//proceso .. PHP (insertar datos a tu BD .. etc ..)

header ("Location: pagina.tal");
exit;
?>
Si en ese proceso .. al ocurrir un error o bien al terminar con exito lo que tenga que hacer, actualmente muestras un mensaje de error/exito, no lo hagas ahí .. usa una variable extra en el link que se redirecciona a otra página y muestra el mensaje bajo el valor de esa variable (o existencia: isset()) ...en la página/script que quedas al redireccionar.

Cita:
Una ultima cuestion, ¿hay en PHP alguna forma de que cualquier sesion pueda ver si existe alguna variable comun para todas?, seria como una variable superglobal
Las sesiones de por sí al igual que las cookies son únicas y les pertenece al cliente que las crea .. He de ahí su "seguridad". Si tu necesitas una(s) variables comunes para toda tu aplicación (al estilo "ASP con sus variables de aplicación") lo que es en PHP tendrás que usar tu própio método de almacenamiento compartido para tu aplicación .. ejemplo: un archivo de texto plano que creas en el servidor .. o un registro en tu BD .. etc. No te servirá por lo dicho ni cookies ni sesiones.

En otros casos .. si tus variables son "fijas" .. puedes llevar todo eso a un archivo cualquier .php con la definición de esas variables y llamarlos en tus scripts por include() por ejemplo:

variables.php
<?
$variable="valor";
?>

y donde lo requieras ..
include ("variables.php");

Un saludo,
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 09:22.