Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/06/2006, 09:25
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
1) Ese tipo de problemas se originan cuando dejas el flujo del código tras una ejecución en la misma página.

Es decir .. si tu tienes un proceso X donde recibes variables externas al script (desde un formulario .. por ejemplo) debes redireccionar al terminar ese proceso a otro script (o a si mismo en otro proceso).
Código PHP:
// proceso PHP .. insercción de datos en tus BBDD .. etc ..
header ("Location: pagina.tal");
exit; 
(no lo hagas con javascript!!!)

Cita:
2. estoy en las paginas realizando operaciones y por un momento pues decido irme a tomar un cafe que pues por un poco pereza me quedo 30 min, como hago para caducar o cerrar la sesion al stilo forosdelweb que despues de un tiempo de inactividad se sale del sistema y te dice que coloques de nuevo el nombre de usuario y contraseña, es decir que se valla a la pagina principal.
PHP define el tiempo de vida de una sesión en forma general a toda sesión generada por el servidor bajo la directiva: session.gc_maxtimelife (suele ser 24 minutos= 1440 segundos) y va en conjunto con la forma de propagar del SID en tu aplicación: cookies o URL (pues las cookies que PHP genera tambien tienen su tiempo de expiración). El "control" de esa sesión es a nivel general como veras (no independiente por sesión creada).

Si tu validas la existencia de tus variables de sesión puedes ver cuando se acabó dicho tiempo en la próxima iteracción con el servidor:
Código PHP:
if (empty($_SESSION['ba'])){
  
header ("Location: login.php");
  exit;

Este tipo de validaciones no se vé en tu código donde las haces .. es decir, no se vé donde usas esas variables de sesión (por lo menos en ese script .. no sé si lo harás en los scripts que llamas en tus iframes/frames a su vez .. debes hacer ese tipo de validación también ahí . .en esos scripts).

Cita:
para la segunda opcion, pues he leido algo sobre las cookies, pero no he decido por esta opcion pues algunos usuarios no tienen activadas las cookies, pienso que es mejor manejarlo del lado del servidor.
Creo que no te has dado cuenta . .pero si tu no propagas el SID en el URL manualmente o usas session.use_trans_sid = ON (en tu php.ini) estás propagando el SID en cookies!!!!.

Es un "mito" que las sesiones no usan cookies. Es cierto que los "valores" de tus variables de sesión se almacenan en el servidor .. pero el "SID" (Identificador único de sesión) que es parte fundamental del funcionamiento de las sesiones en PHP se puede propagar por el URL o por Cookies (por Cookies es lo recomendable por seguridad vs a que un usuario tuyo no acepte una cookie que povenga de tu sitio de confianza).



Por otro lado .. en general se ven algunos detallitos de programación en forma incorrecta. Por script deberías conectar una vez a tus BBDD y seleccionar la BBDD no hacerlo várias veces. Si sólo te conectas a una misma BBDD simpre .. no es necesario "re-conectarte" constantemente ni seleccionar la misma BBDD una y otra vez a lo largo del script.

Estas variables:
$_SESSION["autentificado"]= "SI";
$_SESSION["ba"]=$empresa2;
$_SESSION["usu"]="$usuario";

sobre todo la que dice "autentificado" .. no tiene sentido ese consumo de esa variable cuando ya propagas en la misma sesión otras dos o más variables siempre. Es decir, en tus validaciones usa esa variable "ba" o la otra por su existencia (no es necesario una variable más para validar si la sesión existe).


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.