Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/05/2014, 03:47
aeb_asturias
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
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.