Nuestro grupo de especialistas pasados muchos días de trabajo y de recopilar de información, hallamos la respuesta, esperamos que te resulte útil para tu trabajo.
Solución:
No estoy realmente seguro de lo que hace su código, porque no veo nada relacionado con la configuración del nombre de usuario ni nada por el estilo. Lo que hace su código es, inicia la sesión y verifica si la variable de nombre de usuario en la sesión está configurada, y si es SÍ, llama session_id
.
¿Puede usar esto para verificar si la sesión se creó correctamente?
session_start();
if (session_status() !== PHP_SESSION_NONE)
echo session_id();
Inicia una sesión y le muestra el ID de la sesión si el session_status no es PHP_SESSION_NONE
No necesita hacer un session_id () para iniciar una sesión, session_start () es suficiente.
Probé lo siguiente en Safari en iPhone 6 (solo agregue la parte de consulta db si lo desea):
testa.php
n";
$usernameOK = false;
$passwordOK = false;
if (isset($_POST['username']) and isset($_POST['password']))
$username = $_POST['username'];
$password = $_POST['password'];
$usernameOK = true;
$passwordOK = true;
if ($usernameOK == true && $passwordOK == true)
$_SESSION['username'] = $username;
else
$error_message = "Incorrect login data";
if (isset($_SESSION['username']))
header("Location: ../");
exit;
else
?>
testb.php
n";
echo "Data stored in session: $_SESSION['username']
n";
-
Borre datos / cookies en su navegador móvil (o simplemente entre en modo incógnito). Esto asegurará que “empiece desde cero”.
-
Abierto testa.php en su navegador móvil. Tome nota de la identificación de sesión que se muestra. Ingrese sus datos de inicio de sesión y toque Enviar. La siguiente página puede aparecer en blanco.
-
Abierto testb.php. Nuevamente, tome nota de la identificación de sesión que se muestra. Debe ser igual a la identificación de sesión que se muestra en test1.php. Si son diferentes, es posible que su navegador móvil esté configurado para no aceptar cookies.
Personalmente probé esto en Safari en iPhone 6 y pude obtener los datos del nombre de usuario de la sesión.
PD. Un recordatorio amistoso: no olvides escapar de los datos que usas en las consultas (es decir, $ nombre de usuario y $ contraseña). Use mysqli_real_escape_string o use declaraciones preparadas. Por seguridad.
Tal vez esté experimentando algunos problemas de conflicto:
Mi código session_start
if (isset($_SESSION['username']))
session_id();
else if (!isset($_SESSION))
session_start();
Código completo para el archivo login.php
En el index.php en la primera línea tengo -> ELIMINAR ESO, PONER PRIMERA RUTINA DE VERIFICACIÓN DE SESIÓN
if (!isset($_SESSION))
session_start();
EDITAR: Noté que estás usando la función de encabezado para redirigir a la página de índice. Es importante evitar tales redireccionamientos a menos que esté enviando al usuario fuera de su sistema, porque algunos entornos no funcionan bien con ellos. Sugiero cambiar su rutina a rutinas http POST / GET de usuario en su lugar:
Dentro de validateSession.php
fuera de validateSession, NADA acerca de las reglas de las sesiones, concentre todo allí
index.php / head.php / algún código que siempre comienza en cada página solo comienza eso:
Su formulario:
EDITAR: Revisé su rutina, preste atención a validateSessions.php, me estaba olvidando de cargar session_start () en cada rutina que llamó al archivo. Coloque validateSessions dentro de su directorio de inclusión.
ACTUALIZACIÓN: Incluso mi código que ayudaba al OP, el problema principal era la configuración de SESSION en el archivo php.ini con session.save_path, lo que causaba problemas con las rutinas de sesión. La solución php.ini resolvió el problema, el código que espero que ayudó a OP a pensar en algunas rutinas para las cosas de la sesión.
Te mostramos las comentarios y valoraciones de los usuarios
Si haces scroll puedes encontrar las observaciones de otros creadores, tú asimismo tienes la libertad de dejar el tuyo si lo crees conveniente.