Inicio de sesión en un sitio Estoy trabajando en las funciones que esperaba en mi máquina local pero falla en el servidor remoto pero SOLAMENTE en Internet Explorer. El truco es que funciona en IE localmente, pero no en la máquina remota.Las variables de sesión no se configuran, pero solo en Internet Explorer y no en todas las máquinas
¿Qué demonios podría causar esto? He recorrido el código en la máquina remota y puedo ver los valores de inicio de sesión ingresados que se verifican en la base de datos, se encuentran y luego se llama a una función de inicio de sesión. Esto establece dos variables $ _SESSION y redirecciones a la página principal de administración. Sin embargo, en IE solamente (y no cuando se ejecuta en la máquina local ... esta es la clave) las variables $ _SESSION no están presentes cuando se llega a la página principal de administración. var_dump($_SESSION)
me da lo que espero en cada navegador cuando estoy ejecutando esto en mi entorno local y en todos los navegadores excepto IE 6, 7 y 8 cuando se ejecutan en el servidor remoto (donde obtengo un valor nulo como si nada hubiera sido establecido para $ _SESIÓN).
Esto realmente me tiene perplejo por lo que cualquier consejo es apreciado.
Por ejemplo ... en IE, ejecutar localmente, var_dump me da:
array
'Username' => string 'theusername' length=11
'UserID' => string 'somevalue' length=9
Ejecutar en el servidor remoto (IE sólo ... funciona bien en otros navegadores) var_dump me da:
array(0){}
de código (un ejemplo mínimo ... aunque realmente un ejemplo de código no se necesita con este tema):
$User = GetUser($Username, $Password);
if ($User->UserID <> "") { // this works so we call Login()...
Login($User); // this also works and gives expected results. on to redirect...
header("Location: index.php"); // a var_dump at index.php shows that there is no session data at all in IE, remotely.
} else {
header("Location: login.php");
}
function Login($data) {
$_SESSION['Username'] = $data->Username;
$_SESSION['UserID'] = $data->UserID;
// a var dump here gives the expected data in every browser
}
EDITAR: Ha resuelto esto. Fue el hecho de que el nombre de dominio en el servidor de prueba tenía un guión bajo. No tengo idea de por qué y no tengo tiempo para buscarlo ahora, pero el guión bajo, llamado algo así como un_cliente.empresa.com, fue el problema. Me encanta Internet Explorer ... es como un compañero de trabajo pasivo y agresivo que simplemente no puedes evitar.
¿Muestra de código para que podamos ver? –
¿Incluyó 'session_start();' en la parte superior de cada página? – Alec
¿Incluyó session_start(); en la parte superior de cada página? Sí. – Stuart