[Php-avanzado] Sesiones se sobreescriben (pregunta fuera del curso)

Silverzero silverzero.52 en gmail.com
Mar Oct 13 19:58:45 ART 2015


Leo,

Solo en el index.php asigno los valores, después en ningún otro script:

$_SESSION['email']=$row['email'];
$_SESSION['pass']=$row['pass'];

y ningún script redirige a index.php, solo la funcion de chequeo, si el
logueo falla, pero destruye la sesión antes de dirigirla, así que no sé...

Si no lo logro solucionar mañana, voy a tratar de ir 10 minutos antes de
que empiece la clase.
Si llego a ver algo más, vuelvo a escribir.

¡Gracias Leo!
¡Saludos!


El 13 de octubre de 2015, 7:44 p. m., Leonardo Tadei - Pegasus Tech Supply<
leonardot en pegasusnet.com.ar> escribió:

> Hola Carolina,
>
>         en tu código no se ve nada raro...
>
>         Hacé una búsqueda en todos los archivos buscando
> $_SESSION['email'] y
> buscá en dónde aparece en el lado izquierdo de una asignación.
>
>         Te estás pasando algo por alto: por ejemplo, en ninguna parte del
> código que enviás se ve en dónde toman valor $_SESSION['email'] y
> $_SESSION['pass'], que es en dónde es probable que esté el error.
>
>         Los valores de sesión no se cambian solos...
>
>         Saludos!
>
>
> PD: mañana miércoles tenemos clase de 18 a 22hs. Podés ir un rato antes
> o en la pausa y lo vemos sobre el código...
>
>
>
> El mar, 13-10-2015 a las 19:31 -0300, Silverzero escribió:
> > Hola,
> >
> >
> > Gracias por las respuestas.
> >
> >
> > >>>>>>>>> Sebastian:
> >
> >
> > la tabla tiene id incremental.
> >
> >
> > >>>>>>>>> Leo:
> >
> >
> > En index.php (donde uno se loguea) el formulario tiene:
> >
> >
> > <input name="email" type="email">
> >
> > <input name="pass" type="password">
> >
> >
> >  y una vez que valida crea las variables de sesión $_SESSION['email']
> > y $_SESSION['pass']
> >
> >
> > ========================================================
> > Luego en cada script se incluye una función de chequeo de login:
> >
> >
> >
> >
> > /***** funciones.php *****/
> >
> >
> > //el servidor tiene una versión que no soporta mysqli
> >
> >
> > function usr_exists($e, $p, $link){
> >
> > $sql="SELECT * FROM usr WHERE email='$e' AND pass='$p';";
> > $result=mysql_query($sql,$link)or die(mysql_error());
> > $cant=mysql_num_rows($result);
> >
> > return($cant==1)?TRUE:FALSE;
> >
> > }
> >
> >
> >
> >
> > Que la invoco debajo de ésta, al comienzo de cada script:
> >
> >
> > /***** check.php *****/
> >
> >
> >
> > session_start();
> >
> > if (usr_exists($_SESSION['email'], $_SESSION['pass'], $link) == FALSE)
> > {
> >      session_destroy();
> >      header("Location:index.php")
> >
> > }
> >
> >
> > ==========================================================
> > En el script donde doy de alta una persona el formulario tiene, entre
> > otros campos, los de email y contraseña. Estos campos NO tiene los
> > mismos nombres que en index.php.
> >
> >
> > <input type="email" name="email_usr" value="<?=$email?>">
> >
> > <input type="password" name="pass_usr" value="<?=$pass?>">
> >
> >
> >
> > El action del formulario apunta al mismo script, o sea action=""
> >
> >
> > Entonces cuando se envía por POST lo que tiene el script resumidamente
> > es:
> >
> >
> > include ("funciones.php");
> > include ("check.php");
> >
> >
> > if (isset($_POST['enviar'])){
> >
> >
> >
> >     $email = $_POST['email_usr'];
> >   $pass = $_POST['pass_usr'];
> >
> >
> >     //chequeo si no es un email existente y si no es inserto en la DB
> >
> >
> >     $sql="INSERT INTO usr SET email='$email', pass='$pass';";
> >   $result=mysql_query($sql,$link)or die(mysql_error());
> >
> >
> >     if ($result){
> > $_SESSION['output'] = "El telemarketer se ha agregado exitosamente.";
> > header ('Location: telemarketers.php');
> >    }
> >
> >
> > ============================================================
> >
> >
> > En telemarketers.php se muestra el listado de los que hay dados de
> > alta y ahi tengo un print_r($_SESSION) que me muestra que las
> > $_SESSION['email'] y $_SESSION['pass'] son reemplazadas por las que
> > acabo de dar de alta. Obviamente, no me cierra la sesión porque a
> > pesar que no es mi logueo, sigue siendo un logueo valido.
> >
> >
> > En este script tengo resumidamente:
> >
> >
> > include ("funciones.php");
> > include ("check.php");
> >
> >
> > print_r ($_SESSION);
> >
> >
> >
> >
> >
> > if (isset($_SESSION['output'])){
> >
> >
> > print $_SESSION['output'];
> > unset ($_SESSION['output']);
> > }
> >
> >
> > Y luego una llamada a la DB para listar los telemarketers.
> >
> >
> > ==========================================================
> >
> >
> > Espero que se entienda.
> > ¡Muchas gracias!
> >
> >
> >
> > El 13 de octubre de 2015, 5:45 p. m., Leonardo Tadei - Pegasus Tech
> > Supply<leonardot en pegasusnet.com.ar> escribió:
> >         Hola Carolina,
> >
> >         El mar, 13-10-2015 a las 15:35 -0300, Silverzero escribió:
> >         > Hola,
> >         >
> >         >
> >         > Sé que esto es una consulta fuera del curso actual, pero
> >         quería ver si
> >         > alguien me puede dar una pista porque no encuentro las
> >         palabras clave
> >         > justas para que google me encuentre la respuesta que busco.
> >
> >                 La idea de la lista es usarla. Las preguntas de los
> >         egresados son muy
> >         enriquecedoras, porque suelen ser de situaciones reales.
> >
> >         > Tengo un sistema donde me logueo y una vez dentro, entre
> >         otras cosas,
> >         > puedo dar de alta nuevas personas para que se puedan loguear
> >         como yo.
> >         >
> >         >
> >         > El tema es que cuando la doy de alta con email y contraseña,
> >         me
> >         > sobreescribe mis variables de sesión con esos datos. El
> >         script sólo
> >         > inserta los datos en la DB, no hace nada con variables
> >         sesion, y los
> >         > inputs del formulario tiene otros nombres diferentes a las
> >         variables
> >         > de sesion. ¿A alguien le pasó algo parecido? ¡No sé qué se
> >         me está
> >         > pasando por alto!
> >
> >                 Sin ver el código es difícil diagnosticar, pero es de
> >         suponer que al
> >         principio de cada script estás incluyendo el código que valida
> >         al
> >         usuario o a la sesión.
> >                 Este código debería tener una lógica tal que, si el
> >         usuario está
> >         ingresando, lo loguea tomando los los datos de los INPUTs, y
> >         sino lo
> >         valida contra los datos de la sesión (más o menos como vimos
> >         en el
> >         curso)
> >                 Entonces, si al dar de alta un usuario nuevo los INPUT
> >         se llaman igual
> >         que los de la pantalla de login, y si la evaluación de los
> >         input se
> >         ejecuta primero que la sesión, lo que te está pasando es que
> >         para el
> >         script de auntentificación los datos de alta de un usuario
> >         pasan por un
> >         nuevo login, con lo que se te actualizan las variables de
> >         sesión y
> >         quedás logueada como el usuario recién creado.
> >
> >                 Si esto es así, bastarían con que los nombres de los
> >         INPUT de los
> >         usuarios nuevos sean distintos de los de la pantalla de inicio
> >         de
> >         sesión...
> >
> >         > Lo que noto es que el navegador me rellena automáticamente
> >         los campos
> >         > de email y contraseña con los míos de sesion, sospecho que
> >         puede venir
> >         > por ahí...¿puede ser que el navegador me los cambie
> >         asumiendo que
> >         > estoy cambiando los datos de mi propio logueo a pesar de que
> >         los
> >         > inputs tengan nombres diferentes a las variables de sesion?
> >         ¿Será por
> >         > el input type email / password? Probé en varios navegadores
> >         y en todos
> >         > sucede lo mismo.
> >
> >                 No, no puede ser.
> >                 El navegador completa datos guardados automáticamente
> >         si son del mismo
> >         dominio y se llaman igual que los guardados.
> >                 Pero que el navegador los complete no implica que se
> >         envíen y además es
> >         imposible para el navegador cambiar datos de una sesión si no
> >         envía
> >         datos.
> >
> >
> >         > ¡Saludos!
> >         > ¡Gracias!
> >
> >
> >                 Por nada.
> >                 Después contanos!
> >
> >         --
> >         Leonardo Tadei
> >         leonardot en pegasusnet.com.ar
> >         Web: http://leonardo.tadei.com.ar
> >         Firma pública:
> >         http://www.pegasusnet.com.ar/LeonardoTadei-public.key
> >
> >         _______________________________________________
> >         Lista de correo: Php-avanzado
> >         Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> >         Administración Web:
> >         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> >         Desubscripción:
> >         php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
> >
> >
> >
> >
> >
> > --
> > Carolina
> > _______________________________________________
> > Lista de correo: Php-avanzado
> > Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> > Administración Web:
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> > Desubscripción:
> php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>
> --
>
> Leonardo Tadei
> leonardot en pegasusnet.com.ar
> Pegasus Tech Supply
> Tel: (+54)(+223) 471-2880
> La Salle 1131 - Mar del Plata - Argentina
> http://www.pegasusnet.com.ar
> http://www.grupopegasus.com
> Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>
> _______________________________________________
> Lista de correo: Php-avanzado
> Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> Administración Web:
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> Desubscripción:
> php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
>



-- 
Carolina
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20151013/95f4fd13/attachment-0001.html>


Más información sobre la lista de distribución Php-avanzado