Foros del Web » Programando para Internet » PHP »

Duda con SESIONES en PHP.

Estas en el tema de Duda con SESIONES en PHP. en el foro de PHP en Foros del Web. Buenas. Estoy trabajando en una aplicación web donde se realizan consultas a una base de datos. Para el acceso y paso de parámetros entre los ...
  #1 (permalink)  
Antiguo 26/05/2014, 00:50
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 0
Duda con SESIONES en PHP.

Buenas.

Estoy trabajando en una aplicación web donde se realizan consultas a una base de datos. Para el acceso y paso de parámetros entre los distintos ficheros php estoy utilizando sesiones. Al inicio de la aplicación web, se pide un usuario y una contraseña. Si coinciden con uno predeterminado se inicia sesión y se ''permite'' pasar a el siguiente fichero php, si no indica que se vuelva a introducir usuario y contraseña, hasta ahí todo correcto. Ahora quiero implementar que dependiendo del usuario y contraseña introducido, redirija a un php u otro con sesiones tb. ¿Hay alguna forma de identificar la sesion? ¿Se genera automáticamente una id para cada sesion? ¿ Como diferencio entre distintas sesiones?.

Pongo un ejemplo.

Un usuario, usuario 1 entra en la aplicacion con: usu1 y pass1, se inicia sesión con sesion_start() y se pasa a otro fichero php pasando como parametro el nombre del usuario. En el siguiente fichero php inicio de nuevo sesion con sesion_start() y recupero el nombre del usuario.


Paralelamente desde otro terminal, un segundo usuario accede a la aplicación con usu2 y pass2, y hago lo mismo, quiero redirigir a otro fichero php pasándole el usu2 utilizando de nuevo sesion_start().



Como sabe el segundo fichero php en ambos caso que sesión de las dos es la valida?

Es decir, cuando entra el usuario 2, y se redirige a un segundo fichero php y en esta se hace sesion_start(), como se sabe que es del segundo usuario y no del primero?, ¿Lo hace automaticamente?, ¿Es necesario diferenciar las sesiones?


A ver si me podéis echar una mano!!


Muchas gracias y un saludo!
  #2 (permalink)  
Antiguo 26/05/2014, 01:14
 
Fecha de Ingreso: junio-2013
Ubicación: En cualquier parte de mi casa
Mensajes: 139
Antigüedad: 11 años, 6 meses
Puntos: 14
Respuesta: Duda con SESIONES en PHP.

Te recomiendo uses la funcion de PHP isset la cual podras validar las variables de session que esten iniciadas me explico con un ejemplo
Código PHP:
Ver original
  1. if(isset($_SESSION['usuario1'])){
  2. echo "Eres el usuario 1";
  3. }
  4.  
  5. if(isset($_SESSION['usuario2'])){
  6. echo "Eres el usuario 2";
  7. }

obviamente si te muestra que eres el usuario 1 y el 2, es porque se ha iniciado la session en los dos paneles que mencionas! Pero con esta misma funcion puedes unicamente mostrar el contenido a algun usuario en especifico o sea al 1 o 2
  #3 (permalink)  
Antiguo 26/05/2014, 02:42
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Duda con SESIONES en PHP.

Cita:
Iniciado por edward1994 Ver Mensaje
Te recomiendo uses la funcion de PHP isset la cual podras validar las variables de session que esten iniciadas me explico con un ejemplo
Código PHP:
Ver original
  1. if(isset($_SESSION['usuario1'])){
  2. echo "Eres el usuario 1";
  3. }
  4.  
  5. if(isset($_SESSION['usuario2'])){
  6. echo "Eres el usuario 2";
  7. }

obviamente si te muestra que eres el usuario 1 y el 2, es porque se ha iniciado la session en los dos paneles que mencionas! Pero con esta misma funcion puedes unicamente mostrar el contenido a algun usuario en especifico o sea al 1 o 2
De eso era consciente, pero no hay forma de identificar las sesiones?, es decir, cuando inicia el segundo php proveniente del usuario 1 por ejemplo, cuando hago session_start() y obtengo un parametro (por ejemplo COD_CLIENTE) como se que ese cod_CLIENTE viene del usuario 1 y no del usuario 2? que tb inicia una sesion paralelamente.

Última edición por lolo435; 26/05/2014 a las 02:50
  #4 (permalink)  
Antiguo 26/05/2014, 06:21
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Duda con SESIONES en PHP.

En el servidor se crean archivos de session que identifican al usuario, logicamente la session como tal no sabe a priori lo que tu no le hayas dicho como si en la DB tiene algun Id_usuario por ejemplo.

Tu guardas eso o lo trabajas algo asi:

Código PHP:
Ver original
  1. <?php
  2.  
  3. include "models";
  4.  
  5. if (!isset($_SESSION['id_usuario'])){
  6.     header ("Location: logueo.php");
  7.     exit();
  8. }
  9.  
  10. $id_usuario = $_SESSION['id_usuario'])){
  11.    
  12.     echo 'Bienvenido '.get_username_from_id($id_usuario);
  13. }

Donde models.php es donde reside la funcion get_username_from_id() que recupera de la DB el nombre del usuario y demas datos necesites con el id_usuario


----x----


MAS REAL.......seria algo ASI:

Código PHP:
Ver original
  1. <?php
  2. // en tu template*
  3.  
  4. include "models";
  5.  
  6. if (!isset($_SESSION['username'])){
  7.     header ("Location: logueo.php");
  8.     exit();
  9. }
  10.  
  11. // ejemplo: Bienvenido italico76
  12. echo 'Bienvenido '.get_username_from_id($id_usuario);

+

Código PHP:
Ver original
  1. <?php
  2. // en logueo.php
  3.  
  4. include "models";
  5.  
  6. // recupero datos de un formulario donde se introduce user y pass:
  7.  
  8. $sql = "SELECT id_usuario form usuarios where username='$username' and pass=md5('$pass')"
  9. //.. mysqli_query()... mysqli_result ().. bla bla
  10.  
  11. // si ingreso con username, me almaceno el id_usuario que es una PRIMARY KEY y obviamente UNIQUE y me sirve para recuperar cualquier otro dato de otras tablas relacionadas tambien
  12.  
  13. $_SESSION['id_usuario'] = $row->["id_usuario"];
  14. // si quiero me traigo otros datos como preferencias y demas de Usuarios:
  15. $_SESSION['avatar'] = $row->["avatar"];
  16. $_SESSION['skin_template'] = $row->["skin"];
  17. // ...

+

Código PHP:
Ver original
  1. <?php
  2. // en otra 'pagina'
  3.  
  4. include "models";
  5.  
  6. // Cuando necesites hacer una consulta en la DB
  7.  
  8. $sql = "SELECT campo, ..campoN  form la_tabla_relacionada where id_usuario='{$_SESSION['id_usuario']}'";
  9. //.. mysqli_query()... mysqli_result ().. bla bla
__________________
Salu2!

Última edición por Italico76; 26/05/2014 a las 06:35
  #5 (permalink)  
Antiguo 26/05/2014, 10:49
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 17 años, 4 meses
Puntos: 194
Respuesta: Duda con SESIONES en PHP.

Cuando creas una sesión , se guarda en el navegador del usuario una cookie que tiene un id de sesión , php guarda en el servidor la info de sesión por cada id creado. Para diferenciar el usuario uno del usuario dos, php simplemente lee esa cookie se fija cual es el id y busca la info correspondiente en el servidor. Si el usuario 1 le copia la cookie al usuario 2, y la reemplaza, accede al sitio como si fuese el usuario 2 ¿Peligroso, no?
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #6 (permalink)  
Antiguo 27/05/2014, 02:49
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Duda con SESIONES en PHP.

Muchas gracias a todos ya lo entiendo!

Etiquetas: sesiones
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 07:40.