Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con una sesión

Estas en el tema de Problema con una sesión en el foro de PHP en Foros del Web. Buenas, tengo un problema con la sesión que creo en la página que estoy haciendo. La sesión se crea pero la cookie PHPESSID no pero ...
  #1 (permalink)  
Antiguo 23/07/2015, 11:05
 
Fecha de Ingreso: julio-2015
Ubicación: Madrid
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Problema con una sesión

Buenas, tengo un problema con la sesión que creo en la página que estoy haciendo. La sesión se crea pero la cookie PHPESSID no pero si accedo a la ruta donde está el archivo que crea la sesión se crea esta cookie. Lo utilizo para traducir la web y el caso es que funciona pero cuando cambio de página se vuelve a poner el idioma español y si accedo al archivo locale.php, se crea la cookie y a partir de ahí ya no se cambia el idioma al cambiar de página.

Este es el código

head.php (lo tengo incluido en todas las páginas que tengo)

Código PHP:
... <?php require_once ('inc/locale.php') ;?>...
locale.php (el que hace la traducción):
Código PHP:
<?php if (session_id() == '') {
    
session_start(); ...
}
Tengo claro que el problema no es de la traducción sino de la configuración del php o algo que se me escapa.
Aquí tengo el phpinfo: [URL="https://www.dropbox.com/s/yybjyecrmvvqpfp/phpinfo.png?dl=0"]https://www.dropbox.com/s/yybjyecrmvvqpfp/phpinfo.png?dl=0[/URL]


Si alguno sabe cualpuede ser el problema se lo agradecería bastante!!

PD: en el hosting gratuito donde lo tenía para ver el desarrollo se crea nada más meterme en la página principal (index.php)

Gracias.
  #2 (permalink)  
Antiguo 23/07/2015, 17:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con una sesión

Es más fácil detectar estos fallos si en local muestras todos los errores y advertencias de PHP; al principio de tu script agrega la siguiente línea:

Código PHP:
Ver original
  1. ini_set('error_reporting', E_ALL);

Es muy probable que la cookie no se esté generando porque envías una salida al navegador antes de session_start(), de hecho, esta es la causa más común de todos los problemas con sesiones y redirecciones.

La solución es muy sencilla: Lo primero que debes hacer en tu script es incluir session_start(); sin haber enviado ni un espacio o salto de línea previamente.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 23/07/2015, 17:12
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Problema con una sesión

y si en vez de una cookie (que las noto muy inseguras), cargas la preferencia de idioma en la sesion del usuario, creo que es más facil
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 23/07/2015, 17:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con una sesión

xfxstudios, creo que no leiste la parte donde mencionó "cookie PHPESSID" que es la que se encarga de propagar la sesión, de lo contrario, tendría que hacerlo por URL y "lo noto" mucho más inseguro.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 23/07/2015, 18:13
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Problema con una sesión

es cuestion de gustos y no es necesario propagarla por url, claro va a depender de como tenga organizada su pagina, yo tengo un sistema administrativo y la sesion es cargada en la pagina principal, el resto de las paginas se gargan directamente dentro de esta sin que la principal se recargue lo que mantiene la sesion en todas sin necesidad de pasarla por url ni cookie, se cierra la ventana y muere la sesion, se desloqean y muere la sesion, pero como dije es cuestion de gustos, no uso cookies porque son facilmente manipulables, o al menos lo son para alguien experto en ellas, es solo mi opinión claro, y por cierto si le esa parte. Saludos!!
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 23/07/2015, 21:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con una sesión

Cita:
Iniciado por xfxstudios
...mantiene la sesion en todas sin necesidad de pasarla por url ni cookie...
xfxstudios, creo que tienes que leer el manual de PHP acerca de propagación de sesión: http://php.net/manual/es/session.idpassing.php

Luego regresas y nos cuentas cómo haces para "no usar cookie" ni pasar la id de sesión por URL, estoy muy intrigado y me interesaría saberlo.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 24/07/2015, 05:02
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Problema con una sesión

Cita:
Iniciado por Triby Ver Mensaje
xfxstudios, creo que tienes que leer el manual de PHP acerca de propagación de sesión: http://php.net/manual/es/session.idpassing.php

Luego regresas y nos cuentas cómo haces para "no usar cookie" ni pasar la id de sesión por URL, estoy muy intrigado y me interesaría saberlo.
ok amigo no necesito leer el manual para ello, se de lo que hablas y tambien se de lo que hablo, en mis enlaces, en ninguno, paso la sesion, que como hago, bueno simple:

creo una index principal contentiva de varias secciones, las habituales son cabecera, menu, pie, pero en el centro hay una que tiene un iframe al 100% tanto de ancho como de alto, todos los enlaces del menu se abren alli, la pagina que inicia y mantiene la sesion es la index, al no recargarla con cada clic del menu esta sesion se transmite a las paginas que se abren dentro del iframe (este metodo lo utilizo en varias aplicaciones de gestion con dashboard) y de esa manera no tengo la necesidad de propagar la sesion por url ni cookie, intentalo y me cuentas, es fácil en realidad.

Como puedes ver no utilizo cookies ni tengo que pasarlas por url para mantener mi sesion abierta, y como dije antes si cierro el navegador, se muere la sesion; si me deslogueo se cierra la sesion, es solo cuestion de jugar con los elementos, al igual que lo dije al principio cada quien utiliza el metodo que más le convenga de acuerdo a las necesidades de lo que este programando, este que te comente es el mas factibles para las aplicaciones que realizo

ejemplos:

este es el codigo que valida e inicia la sesion en la pagina del formulario:
Código PHP:
Ver original
  1.  
  2. if($_POST['usuario']==""){
  3.     $msg = "";
  4. } else if($_POST['password']==""){
  5.     $msg = "";
  6. }else{
  7.    
  8. $usuario = mysqli_real_escape_string($db, $_POST['usuario']);
  9.    
  10. $users = $db->query("SELECT usuario,pass,nivel FROM usuarios WHERE usuario ='$usuario'");
  11. $row_result = $users->fetch_array();
  12.  
  13. $password = (crypt($_POST['password'], $row_result['pass']));
  14.  
  15. $usuario = $row_result['usuario'];
  16. $clave = $row_result['pass'];
  17. $nivel = $row_result['nivel'];
  18.  
  19.  if($clave == $password){
  20.      $_SESSION['MM_Username'] = $usuario;
  21.      $_SESSION['logueado'] = true;
  22.      $_SESSION['nivel'] = $nivel;
  23.      
  24.      header('location: escritorio.php');
  25.      
  26.  } else{
  27.      $msg = "datos invalidos";
  28.  }
  29. }
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 24/07/2015, 05:03
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
y este es el que tengo en las sub-paginas que abro desde el menu que se cargan en el iframe:

Código PHP:
Ver original
  1.      
  2.     if (isset($_SESSION['MM_Username']) && $_SESSION['logueado'] == true)
  3.     {
  4.     }
  5.     else
  6.     {
  7.         header('Location:/app/error_acceso.php');
  8.    
  9.     echo "<br/>" . "Esta pagina es solo para usuarios registrados." . "<br/>";
  10.    
  11.     echo "<br/>" . "<a href='index.php'>Ingresa aqui!!!</a>";
  12.      
  13.     exit;
  14.     }

en ningun enlace de este sitio vas a ver referencias a las variables de sesion ni a cookies ni a nada que se le paresca

y con este destruyo la sesion:
Código PHP:
Ver original
  1. <?php
  2.   unset($_SESSION['MM_Username']);
  3.   unset($_SESSION['logueado']);
  4.   unset($_SESSION['nivel']);
  5.   header("Location: index.php");
  6.   exit;
  7. ?>

y asi estan conformados todos los enlaces del menu:

Código PHP:
Ver original
  1. <li><a href="#?rif=<?php echo $row_rif['rif']; ?>&unidad=<?php echo $row_datos_nuevo['unidad_explot']; ?>" target="texte"><i class="fa fa-angle-double-right" style="color:#FFFFFF"></i> Entrega de Dotacion</a></li>

como puedes ver paso unos datos, pero estos no tienen nada que ver con la sesion, son solo datos relevantes a la consulta
__________________
[email protected]
HITCEL

Última edición por Triby; 24/07/2015 a las 13:51 Razón: Combinar mensajes consecutivos
  #9 (permalink)  
Antiguo 24/07/2015, 06:36
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 11 años, 2 meses
Puntos: 145
Respuesta: Problema con una sesión

A los sniffers de network con un MiTM nos basta y sobra con obtener una cookie de sesión para hacer una inyección de cookies y por ende un session hijacking.

Just sayin'.
__________________
¿Te sirvió la respuesta? Deja un +1
  #10 (permalink)  
Antiguo 24/07/2015, 09:42
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Problema con una sesión

no uso cookie ni paso la sesion por url
__________________
[email protected]
HITCEL
  #11 (permalink)  
Antiguo 24/07/2015, 12:11
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Problema con una sesión

Cita:
Iniciado por xfxstudios Ver Mensaje
no uso cookie ni paso la sesion por url
Yo también uso el mismo código que tu usas, pero si tienes chrome haz la prueba y dale Inspeccionar elemento en cualquier parte de tu web, ve a Resources, Cookies y vas a ver que a pesar que no usaste cookies, php automáticamente genera la cookie PHPESSID de la que habla el compañero. Es la forma como se propaga la sesión, de lo contrario tendrías que estar logueando en cada página de tu web.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #12 (permalink)  
Antiguo 24/07/2015, 12:37
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 9 meses
Puntos: 69
Respuesta: Problema con una sesión

Cita:
Iniciado por NueveReinas Ver Mensaje
A los sniffers de network con un MiTM nos basta y sobra con obtener una cookie de sesión para hacer una inyección de cookies y por ende un session hijacking.

Just sayin'.
Pero entonces si enviar el SID por URL o por POST es riesgoso y si se puede obtener la cookie de sesión a través de ataque MiTM, cómo se debe hacer la propagación de la sesión?
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #13 (permalink)  
Antiguo 24/07/2015, 13:31
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Problema con una sesión

Cita:
Iniciado por chronos682 Ver Mensaje
Yo también uso el mismo código que tu usas, pero si tienes chrome haz la prueba y dale Inspeccionar elemento en cualquier parte de tu web, ve a Resources, Cookies y vas a ver que a pesar que no usaste cookies, php automáticamente genera la cookie PHPESSID de la que habla el compañero. Es la forma como se propaga la sesión, de lo contrario tendrías que estar logueando en cada página de tu web.
Tienes razón, uno aprende algo cada dia, pero que quede claro entonces, no las paso por url jajajajaja, saludos
__________________
[email protected]
HITCEL
  #14 (permalink)  
Antiguo 24/07/2015, 13:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema con una sesión

Cita:
Iniciado por chronos682
Pero entonces si enviar el SID por URL o por POST es riesgoso y si se puede obtener la cookie de sesión a través de ataque MiTM, cómo se debe hacer la propagación de la sesión?
Lo principal es no confiar nunca en el usuario, sobre todo si la sesión corresponde a niveles de administrador o moderador, en ese caso, guarda la IP del usuario en variable de sesión y en cada petición compara con la IP que te envía el navegador. Por supuesto, no hay sistema 100% seguro, pero acciones como esta ayudan un poco a minimizar los riesgos.



xfxstudios, vaya, entonces parece que aunque no sea tu intención, ni necesites leer el manual... sí usas cookies para propagar la sesión!

P.D. Por favor no publiques mensajes consecutivos, si te falto agregar algo y no hay respuestas posteriores, puedes editar tu mensaje.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 24/07/2015 a las 13:57
  #15 (permalink)  
Antiguo 25/07/2015, 07:54
 
Fecha de Ingreso: julio-2015
Ubicación: Madrid
Mensajes: 2
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Problema con una sesión

Era eso! Muchas gracias Triby :D

Etiquetas: sesión
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 20:23.