Foros del Web » Programando para Internet » PHP »

no se me mantiene la sesion en el hosting 1&1 y si en localhost

Estas en el tema de no se me mantiene la sesion en el hosting 1&1 y si en localhost en el foro de PHP en Foros del Web. Hola a todos/as, Tengo el siguiente problema: Estoy utilizando sesiones en mi Web y me funcionan en local pero cuando lo subo al servidor 1&1 ...
  #1 (permalink)  
Antiguo 02/05/2014, 04:08
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
no se me mantiene la sesion en el hosting 1&1 y si en localhost

Hola a todos/as,

Tengo el siguiente problema:

Estoy utilizando sesiones en mi Web y me funcionan en local pero cuando lo subo al servidor 1&1 no funcionan. Me cree una página muy sencilla para ver donde podía estar el problema y es la siguiente:

Código:
<?php
session_start();
$sid = session_id();
echo "Session ID devuelta por la funcion session_id(): ".$sid."<br>";
?>
Cuando lo ejecuto en local siempre me devuelve el mismo ID. En cambio cuando lo ejecuto en el servidor 1&1 me devuelve siempre un ID diferente. Esto explicaría el tema de porque no me funciona las sesiones en el servidor pero no se cual es el problema.

He ejecutado el metodo de PHP "phpinfo()" para ver como están definidas las variables asociadas con las sesiones tanto en localhost como en el servidor y prácticamente los valores son los mismos:


Session Support enabled

session.gc_maxlifetime 1440


Por lo que veo en esos dos parámetros anteriores, las sesiones están habilitadas y tienen una duración de 1440 segundos (24 minutos).


Por otro lado, he usado el plugin de firefox "tamper data" que me captura las peticiones de red y cuando ejecuto la página en localhost puedo observar que en la petición me aparecen los siguientes parámetros:

Cookie=cc_cookie_accept=cc_cookie_accept; cc_cookie_decline=null; PHPSESSID=pp4fg78istfn2moarfq058rbma;

En cambio cuando cargo la misma página pero alojada en el hosting de 1&1 sólo obtengo:

Cookie=cc_cookie_accept=cc_cookie_accept; cc_cookie_decline=null

Ni rastro de la variable PHPSESSID.


Alguien tiene alguna idea de cual puede ser el problema?


Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 04/05/2014, 06:15
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Nadie tiene alguna idea sobre cual puede ser el problema?

Probé el anterior script en otro hosting (hostinger en este caso) y el id de la sesión se me mantiene entre diferentes peticiones. Así que algo raro está pasando con el hosting 1&1 que no llego a ver......
  #3 (permalink)  
Antiguo 04/05/2014, 06:25
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Si solo tienes es código, puede ser que al no estar seteando tu manualmente el ID en sessión, el servidor de 1&1 te de uno, es raro, pero prueba en un fichero aparte a crear una variable dentro de session .

Fichero para crear la session
session.php
Código:
<?php

       session_start();
      $_SESSION[ 'ID' ] = 'MiID'; // Manualmente mismo
Fichero al que accedes después
index.php
Código:
<?php

   session_start();
   echo $_SESSION[ 'ID' ];
Es decir, entramos en session.php para crear la sessión, y después entramos en index.php para ver que devuelve.
  #4 (permalink)  
Antiguo 04/05/2014, 06:41
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Hola Kraneok,

Probaré eso que comentas para ver ocurre y te comento......

Gracias por la respuesta.
  #5 (permalink)  
Antiguo 04/05/2014, 17:31
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Podrias probar antes de session_start()

Código PHP:
Ver original
  1. ini_set('session.gc_maxlifetime',60*60);  // 1 hora
__________________
Salu2!
  #6 (permalink)  
Antiguo 08/05/2014, 03:47
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Cita:
Iniciado por kraneok Ver Mensaje
Si solo tienes es código, puede ser que al no estar seteando tu manualmente el ID en sessión, el servidor de 1&1 te de uno, es raro, pero prueba en un fichero aparte a crear una variable dentro de session .

Fichero para crear la session
session.php
Código:
<?php

       session_start();
      $_SESSION[ 'ID' ] = 'MiID'; // Manualmente mismo
Fichero al que accedes después
index.php
Código:
<?php

   session_start();
   echo $_SESSION[ 'ID' ];
Es decir, entramos en session.php para crear la sessión, y después entramos en index.php para ver que devuelve.

He probado eso y si parece que funciona en el hosting 1&1, es decir, primero ejecuto sesion_1.php y luego al ejecutar sesion_2.php me imprime por pantalla "MIID". Incluso si en el script sesion_1.php añado:

$_SESSION['nombre']="Juan";

y luego en sesion_2.php recupero dicha variable, todo funciona correctamente.

El problema es que en mi Web sigue sin funcionar.

Voy a resumir en pocas líneas como estoy haciendo el proceso de logueo para ver si el problema radica en algún procedimiento que no estoy haciendo correctamente:

Tengo una página llamada "login.php" donde se encuentra el formulario de logueo. Cuando el usuario pulsa en el boton de "Entrar", entonces mediante JQUery hago una petición ajax a la página "validar.php" que recibe el email y password del usuario y valida si es correcto. En caso afirmativo, ejecuto:

Código:
session_start();
$_SESSION[ 'ID' ] = 'MiID';
$_SESSION['email']=$_POST["email"];
El script "validar.php" finaliza imprimiendo un JSON indicando si la validación ha ido bien o no y que es tratado por la página que hizo la petición ajax "login.php".

Al finalizar la petición Ajax, si todo ha ido bien, se redirige a la página index.php y si ha ido mal se saca un mensaje de error y se mantiene al usuario en esa misma página "login.php".

Todas las páginas de mi web incluyen un archivo .php con la cabecera y en ella tengo puesto lo siguiente:

Código:
if (isset($_SESSION['email'])) {
  /*  Muestro el nombre del usuario en la cabecera */

}

else{
/*  Muestro un enlace a la página de Login*/

}
Si esta definida la variable de sesion "email" imprimo el nombre del usuario en la cabecera. En caso contrario, añado un link a la página de Login.

Como comenté anteriormente, esto me funciona sin problemas en local pero no en el hosting 1&1.
  #7 (permalink)  
Antiguo 08/05/2014, 03:55
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Cita:
Iniciado por Italico76 Ver Mensaje
Podrias probar antes de session_start()

Código PHP:
Ver original
  1. ini_set('session.gc_maxlifetime',60*60);  // 1 hora

Gracias por responder.

Lo he probado y tampoco me funciona.
  #8 (permalink)  
Antiguo 08/05/2014, 05:50
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Código PHP:
Ver original
  1. <?php
  2.  
  3.    phpinfo();

Y colocas aqui lo que te sale.....a ver si dice algo de SESSIONS enabled o no
__________________
Salu2!
  #9 (permalink)  
Antiguo 08/05/2014, 09:13
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Código:
Session Support 	enabled
Registered save handlers 	      files user sqlite
Registered serializer handlers 	php php_binary wddx

Directive	                    Local Value	   Master Value
session.auto_start	          Off	                Off
session.cache_expire	 180	               180
session.cache_limiter	nocache	     nocache
session.cookie_domain	no value	     no value
session.cookie_httponly	   Off	                Off
session.cookie_lifetime	     0	                 0
session.cookie_path	     /                   /
session.cookie_secure	   Off	                Off
session.entropy_file	/       dev/urandom	/dev/urandom
session.entropy_length	  32	                32
session.gc_divisor	         100	               100
session.gc_maxlifetime	1440	       1440
session.gc_probability	   1	                  1
session.hash_bits_per_character	4	  4
session.hash_function	    0	                  0
session.name	               PHPSESSID	PHPSESSID
session.referer_check	no value	       no value
session.save_handler	   files	          files
session.save_path	           /tmp	         /tmp
session.serialize_handler    php  	          php
session.upload_progress.cleanup	On   	  On
session.upload_progress.enabled	On	  On
session.upload_progress.freq	1%	         1%
session.upload_progress.min_freq	1	   1
session.upload_progress.name	PHP_SESSION_UPLOAD_PROGRESS	PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix	upload_progress_	upload_progress_
session.use_cookies	       On	             On
session.use_only_cookies	On	             On
session.use_trans_sid	         0	             0

En principio yo no veo nada diferente a como tengo la configuración en localhost. No se si ves algo raro.....


Saludos.
  #10 (permalink)  
Antiguo 08/05/2014, 09:22
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

No no veo nada raro; los defaults estan aca

Releyendo... se me ocurre borrar la carpera de temporales......quizas este llena y no quepan mas archivos de session
__________________
Salu2!
  #11 (permalink)  
Antiguo 08/05/2014, 10:29
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Cita:
Iniciado por Italico76 Ver Mensaje
No no veo nada raro; los defaults estan aca

Releyendo... se me ocurre borrar la carpera de temporales......quizas este llena y no quepan mas archivos de session
No puedo borrar el contenido de esa carpeta por tema de permisos.......
  #12 (permalink)  
Antiguo 08/05/2014, 10:58
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Prueba creando otra carpeta, dale permisos de escritura lectura..... y hazla de temporales para PHP

Código PHP:
Ver original
  1. ini_set('session.save_path', './temporales');

<< deberias colocar la ruta completa, mejor si es absoluta y no asi
__________________
Salu2!
  #13 (permalink)  
Antiguo 09/05/2014, 03:15
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Cita:
Iniciado por Italico76 Ver Mensaje
Prueba creando otra carpeta, dale permisos de escritura lectura..... y hazla de temporales para PHP

Código PHP:
Ver original
  1. ini_set('session.save_path', './temporales');

<< deberias colocar la ruta completa, mejor si es absoluta y no asi

Lo he probado y tampoco funciona. He visto que se me ha creado un fichero "sess_xxxxxxxx....." en la carpeta temporal que me he creado pero una vez logueado, cuando me redirige a la home, al comprobar si existe la variable $_SESSION['nombre'] para saber si el usuario está logueado me sigue saliendo que no existe.

Por lo que he visto en mi local que me funciona perfectamente, es que al hacer una petición a una página php que tiene la instruccion "session_start()" se crea una cookie llamada PHPSESSID. Pues esta cookie no se me crea en el hosting. Puede esto que ver con el problema que estoy teniendo??
  #14 (permalink)  
Antiguo 09/05/2014, 05:14
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Pues en el manual hay una contribucion diciendo que se crea esa COOKIE cuando se inicia session

Código PHP:
Ver original
  1. <?php
  2.   if(isset($_COOKIE["PHPSESSID"])){
  3.       echo "Hay session!";
  4.   }

... pero la verdad no puedo ayudarte mas......
__________________
Salu2!
  #15 (permalink)  
Antiguo 09/05/2014, 05:59
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Probé el siguiente código:

Código:
<?php

session_start();

if (empty($_SESSION['count'])) {
   $_SESSION['count'] = 1;
} else {
   $_SESSION['count']++;
}
?>

<p>
Hola visitante, ha visto esta página <?php echo $_SESSION['count']; ?> veces.
</p>
Es un contador de visitas. Cada vez que refresco la página se incrementa el contador con el número de visitas recibias. En local se me incrementa pero cuando lo pruebo en el hosting siempre me devuelve que es la primera visita.
  #16 (permalink)  
Antiguo 14/05/2014, 09:11
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

He detectado donde esta el error. El tema parece venir por la codificación del archivo PHP. El editor que estoy utilizando es Notepad++. Si guardo el fichero php con la codificación ANSI entonces parece que se me mantiene la sesión. En cambio si tengo el archivo PHP con la codificación UTF-8 (es la codificación actual de mis archivos PHP), entonces no se me mantiene la sesión en el servidor.

El tema, es que tengo mis archivos PHP con la codificación utf-8 para que se vean correctamente los acentos y caracteres como la ñ.

No se como solucionar este problema.....
  #17 (permalink)  
Antiguo 14/05/2014, 13:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Intentalo con UTF8 sin BOM (casi seguro que es esto)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #18 (permalink)  
Antiguo 22/05/2014, 03:43
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años
Puntos: 7
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Cita:
Iniciado por quimfv Ver Mensaje
Intentalo con UTF8 sin BOM (casi seguro que es esto)
Parece que ese era el problema....

Y que tiene que ver la codificación con el tema de las sesiones en el hosting??? No logro entender la relación......
  #19 (permalink)  
Antiguo 22/05/2014, 03:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: no se me mantiene la sesion en el hosting 1&1 y si en localhost

Cuando un archivo está condificado en UTF8 con BOM, se agrega un caracter (ver más info) que, lógicamente, es enviado al navegador.

Hay funciones de PHP que envían encabezados al navegador (session_start, header, set_cookie, etc.) y requieren que no se haya enviado una salida previa (BOM, espacio, salto de línea, html, etc.), es decir, ni siquiera un caracter.

En tu PC (localhost) funciona porque, seguramente, tienes activo un búffer de salida, que almacena contenido hasta completar determinada cantidad de caracteres y después lo envía al navegador; en 1&1 no tienes activo el búffer y por eso es que no funcionaban las sesiones.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: 1-1, hosting, localhost, variable
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 02:39.