Foros del Web » Programando para Internet » PHP »

¿es mi problema o es del Mozilla?

Estas en el tema de ¿es mi problema o es del Mozilla? en el foro de PHP en Foros del Web. S.O.S a alguien que sepa del PHP!!!!!!! Soy nueva en esto y llevo poco tiempo, pero poco a poco voy resolviendo los problemas que se ...
  #1 (permalink)  
Antiguo 11/02/2007, 15:27
Avatar de irenuska**  
Fecha de Ingreso: noviembre-2006
Ubicación: A veces aquí y otras veces allí
Mensajes: 43
Antigüedad: 17 años, 4 meses
Puntos: 0
¿es mi problema o es del Mozilla?

S.O.S a alguien que sepa del PHP!!!!!!!

Soy nueva en esto y llevo poco tiempo, pero poco a poco voy resolviendo los problemas que se me plantean con la ayuda de todos vosotros en este foro. Sin embargo, ahora se me plantea un problema que soy incapaz de resolver, me siento ahogada xq después de todas las pruebas que he hecho, ya no sé si es problema de mi programación o del propio Mozilla FireFox.

A ver si alguno de vosotros es capaz de resolver mis dudas y guiarme un poco, por favor, que estoy bloqueada con esto y tengo poco tiempo para solucionarlo!

Os explico: Estoy haciendo un sitio en el que los usuarios tienen que autentificarse por Login y Password mediante un formulario, para acceder a las páginas de acceso restringido. Una vez que compruebo que es un usuario válido, creo una sesión en la que guardo diferentes datos, como su Login, Id, etc. Esto lo hago con el siguiente código:

Código:
//Usuario válido.
//Se define una sesión.
session_name('proyecto');
session_start();
//echo 'La sesión actual es: '.session_id();
//define('SID', session_id());
//Se crea una variable de sesión para indicar que el usuario ha pasado el proceso de autenticación.
$_SESSION['autentificado'] = 'SI'; 

//Se crean varias variables de sesión con datos acerca del usuario.
$row = mysql_fetch_array($rs);

$_SESSION['login'] = $row['Login'];  

$_SESSION['password'] = $row['Password'];  
	
$_SESSION['id_personal'] = $row['Id'];

$_SESSION['perfil'] = $row['Perfil'];
	
//header ("Location: dentro.php?SID=".SID); 
header ("Location: dentro.php); 
exit();
Una vez que ya tengo mi sesión, se accede a la página dentro.php, que tiene diferentes enlaces para todas las secciones del site. He de decir que dentro de la página dentro.php, se comprueba mediante un módulo, si el usuario, ya ha pasado el proceso de autenticación, mediante un script llamado seguridad.php, y si no es así se le redirecciona para que se autentique. El código que tengo es el siguiente:

[Lo pongo a continuación xq no me deja...]
  #2 (permalink)  
Antiguo 11/02/2007, 15:32
Avatar de irenuska**  
Fecha de Ingreso: noviembre-2006
Ubicación: A veces aquí y otras veces allí
Mensajes: 43
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: URGENTE: ¿es mi problema o es del Mozilla?

dentro.php:

Código:
<?php
  /*
  Este script es el que se encarga de mostrar todos los enlaces que tiene la aplicación. Para ello se divide la página en dos frames. En el superior se pondrán todos los enlaces, y en el inferior se irá visualizando cada uno de ellos.
  Sólo es accesible para usuarios registrados.
  */
   
  //Se lee el SID de la sesión en curso
  //define ('SID', $_GET['SID']);
   
  //Se comprueba que el usuario ha pasado por el proceso de autenticación
  include('seguridad.php');
   
  //Se incluye el fichero de la libreria donde están las funciones que se utilizan
  require('../libreria/varios/var_paginas_html.php');
  ?>



Enlaces en el BODY de la página
Y en seguridad.php:

Código:
<?php
  /*
  este script se encarga de implementar la capa de seguridad en todas aquellas páginas que sólo son para usuarios registrados. Comprueba que el usuario haya pasado por el formulario en que debe autenticarse y que los datos que ha introducido son correctos.
  */
   
  //Se retoma la sesión
  session_name('proyecto');
  session_start();
  //Se comprueba que el usuario está ya autentificado
  if($_SESSION['autentificado'] != 'SI')
  //Si el usuario no ha pasado por el proceso de autenticación se le reenvía a esta página y además se sale del script para que no se visualize nada de la página de acceso restringido.
  {
              header("Location: entrar.php");
              exit();
  }
  ?>
Una vez contada la estructura de las páginas os cuento mi problema. De momento todas las pruebas las estoy haciendo en local, y el caso es que he comprobado que cuando hago pruebas abriendo varios navegadores, todas las sesiones (una por cada navegador) se me crean con el mismo Id (visualizo el session_id() en la página enlaces.php y siempre es el mismo, y en servidor de PHP donde guardo las sesiones solo tengo un fichero).

Es decir, cuando tengo un navegador abierto y he iniciado sesión con un usuario todo funciona correctamente. Si abro otra sesión en otro navegador con otro usuario, ésta también funciona bien, pero si vuelvo al navegador anterior con el usuario1, compruebo que ya no tengo los datos de la sesión de este usuario, sino que todos los datos son los relativos al segundo usuario, por ejemplo, lo compruebo que ahora el Login es el del segundo usuario.

He comprobado que esto es xq la segunda sesión se me crea con el mismo identificador que la anterior, y como se rescriben los datos en el mismo fichero, solo se me conservan los datos del último usuario que ha iniciado sesión (Login, Password, Perfil, e Id, en mi caso).

Pregunta: ¿Por qué ocurre esto????

Siguiendo investigando, he observado (muy sorprendida) que este problema sólo me ocurre con el Mozilla Firefox, y que sin embargo, con el Internet Explorer me funciona bien. Por cada navegador que abro, se me crean diferentes sesiones. Lo sé xq se me crean diferentes ficheros en la carpeta de sesiones del servidor PHP. (Aunque tb he observado que si lo hago utilizando la opción de pestañas del IE, a todas las que están dentro del mismo navegador les da el mismo session_id.)

Misma pregunta: ¿Por qué ocurre esto???? ¿Por qué un navegador si que da Id diferentes y el otro no?

Otro problema que se me plantea es que no sé muy bien cómo estoy pasando el Id de cada sesión. He hecho un phpinfo(), y he comprobado que:

session.use_cookies
On
On
session.use_only_cookies
Off
Off
session.use_trans_sid
On
On


Por lo que entiendo que podría pasar tanto el Id por cookies como por la URL. En mi caso, compruebo que lo paso por cookies, xq si deshabilito éstas en el navegador no funciona nada. Sin embargo, esta idea no me gusta mucho y preferiría pasarlas por la URL. He probado a pasar en los enlaces la constante SID, que se supone que está definida. Sin embargo, a mi no me la reconoce, Así que la defino yo. He puesto el código en comentarios. Defino la constante y la paso por la URL, y después en dentro.php, la leo de la URL y lo vuelvo a convertir en constante.

Esto me parece una manera un poco chapuza de hacerlo, y además tengo el problema de decirle al session_start que quiero que abra esa sesión, no sé si me explico....

Entonces viene mi tercera pregunta: ¿Cómo hago para que me reconozca la constante SID y que las sesiones se me abran con ese id??? ¿Cómo evito el uso de las cookies??? La verdad es que estoy un poco liada con este tema... He leido el manual de PHP y no me acaba de quedar claro....

De antemano, muchas gracias a todos, y a ver si alguien me puede dar una respuesta de lo que ocurre por favor!!!!

Saludos,
  #3 (permalink)  
Antiguo 14/02/2007, 11:56
Avatar de irenuska**  
Fecha de Ingreso: noviembre-2006
Ubicación: A veces aquí y otras veces allí
Mensajes: 43
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: ¿es mi problema o es del Mozilla?

Nadie sabe nada de este tema????? Estoy desesperada xq no acabo de encontrar un motivo... no se si soy yo, o es que tengo ya esa limitación.....

Alguien me puede decir algo??
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 04:43.