PHP - La variable de sesión desaparece despues del header

 
Vista:
sin imagen de perfil

La variable de sesión desaparece despues del header

Publicado por Diego (7 intervenciones) el 15/02/2023 12:38:04
Buenos días a todos.

Tengo un código el cual hace lo siguiente:

Si el inicio de sesión (con usuario y password desde la base de datos encriptada) son correctos, entonces $_SESSION['init']=1 y redirige la página al index. Con el valor "1" en la variable de sesión, habilita los menú extras en el menú, que son funcionalidades para los dueños de la página. El inconveniente surge cuando quiero redirigir la página.
Verifiqué, y el sript hace la verificación en la base de datos, coloca el "1" en la variable global $_SESSION['init'] pero cuando redirige la dirección al "index.php" , la variable $_SESSION['init'] se borra y aparece como vacía.
Puse varios "echo" para ver que efectivamente logueaba y cargaba el valor a la variable global.

La función session_start(); está puesta en todas las páginas. Lo probé en casa con mi servidor y funcina correctamente. Pero cuando lo hago en el hosting, no funciona. Creo que se está saliendo la sesión cada vez que utilizo la función header().

Aqui el pedacito de código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if( $_SESSION['init']<>1){
            header('Location: index.php'); //Si el inicio
        }else{
            echo "Hola ".$_SESSION['nombre']." ".$_SESSION['apellido'];
            echo $_SESSION['init'];
 
            session_write_close();
            header('Location: index.php');
            die();
            exit;
 
            ob_end_flush();
            session_regenerate_id(true);
        }

He buscado por todos lados pero sigue sin funcionar. Me podrían ayudar por favor?

Muchísimas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

La variable de sesión desaparece despues del header

Publicado por Kathyu (905 intervenciones) el 15/02/2023 15:16:34
Pon todo el código de esos archivos, así vemos si tiene algo que te genere el error, el de la validación y el que recibe por ultimo la variable de sesión.

Yo creo que justo arriba de ese IF puede andar el problema, pero para eso necesito ver todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

La variable de sesión desaparece despues del header

Publicado por Diego (7 intervenciones) el 15/02/2023 20:01:26
Hola Kathyu, gracias por tu respuesta. Claro, ahora subo ambos archivos.

Te cuento que la validación la hace perfecto y me asigna a la variable global $_SESSION['init'] el valor de "1" pero luego desaparece.

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

La variable de sesión desaparece despues del header

Publicado por Kathyu (905 intervenciones) el 15/02/2023 20:26:51
Tu lógica esta medio rara y no la entiendo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if( $_SESSION['init']<>1){
            header('Location: index.php'); //Si el inicio
        }else{
            echo "Hola ".$_SESSION['nombre']." ".$_SESSION['apellido'];
            echo $_SESSION['init'];
 
            session_write_close();
            header('Location: index.php'); //http://bicharraco.site
            die();
            exit;
 
            ob_end_flush();
            session_regenerate_id(true);
        }

Si init es diferente de 1 lo mandas al index y si no también???

Además, contra que corroboras que sea un correo de un dueño???

Explícame eso y mañana continuo que a salir de la oficina voy.

Si en index pones el siguiente código cual es el resultado que te da a ti??

1
2
3
4
5
session_start();
 
echo '<pre>';
    print_r($_SESSION);
echo '</pre>';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

La variable de sesión desaparece despues del header

Publicado por Kathyu (905 intervenciones) el 16/02/2023 14:48:40
Otra cosa password_verify no tiene sentido porque no estas usando ningún has de comparación, por eso nunca entra al IF que te asigna 1 en init. Igual los comparadores <> dan true si $a y $b son diferentes.

Por eso es necesario saber que es lo que de verdad necesitas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

La variable de sesión desaparece despues del header

Publicado por Diego (7 intervenciones) el 17/02/2023 18:26:29
Hola!

Estuve mandando aunque sea lo que sea, lo mando a index (era para probar y se los mandé así)

La dirección de correo la corroboro directamente con la consulta swl.

LLego a casa y pruebo lo que me dijiste (viaje laboral)

Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

La variable de sesión desaparece despues del header

Publicado por Diego (7 intervenciones) el 19/02/2023 19:43:21
Me tira esto:

Array
(
[init] => 1
[nombre] => Diego
[apellido] => Morales
[mail] => [email protected]
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

La variable de sesión desaparece despues del header

Publicado por Ivan (118 intervenciones) el 16/02/2023 12:27:38
Hola,

cuando utilizas variables de sesión debes ejecutar la función de PHP:

1
session_start()

Antes que cualquier otra salida de la página.
En tu página signing.php primero declaras el DOCTYPE y otros tags HTML y despúes haces el session_start(), debes cambiar el orden.

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

La variable de sesión desaparece despues del header

Publicado por Kathyu (905 intervenciones) el 16/02/2023 14:13:44
Pero signing.php es el formulario HTML. Eso no genera error ya que todo el funcionamiento inicia en el siguiente archivo y en el archivo index, es mas en index si que obtiene la variable de sesión. El problema radica mas en lo que comenté antes, en la lógica que está implementando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

La variable de sesión desaparece despues del header

Publicado por Diego (7 intervenciones) el 17/02/2023 18:27:57
Bueno, en mi computadora, el index si recibe el "1" de la variable de sesion, pero cuando lo subo al hosting, el index no recibe la variable de sesion. Por eso es el problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

La variable de sesión desaparece despues del header

Publicado por Diego (7 intervenciones) el 19/02/2023 19:51:53
borré la lógicca y después del logueo, sea como sea, lo manda al index.php.

Puse banderas de "echo" por todos lados imprimiendo el session_id(); y obtengo como resuoltado que al cambiar de pestaña al index.php, la variable de sesión directamente desaparece, así como la session id. Esta última aparece como vacía
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

La variable de sesión desaparece despues del header

Publicado por Diego (7 intervenciones) el 19/02/2023 20:47:06
Finalmente, averigüe que era lo que estaba pasando.

Por alguna extraña razón, los archivos "index.php" no eran nativos php y tenían la cabecera de archivo de html. Así que lo único que hice, fue hacer otro archivo "index.php" y t0odo salió funcionando como piña.

gracias a todos por tomarse el tiempo y responderme.

GRACIAS GRACIAS GRACIASSSSSSSS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

La variable de sesión desaparece despues del header

Publicado por Kathyu (905 intervenciones) el 20/02/2023 14:26:10
Me alegra, pero ten cuidado, que según el código que pasaste todos se meterían como dueños ya que lo único que hacías para entrar en el IF que le ponía 1 al init, era que se verificara el pass.

Por eso insistí tanto en saber la lógica que tienes pensada para que el sistema sepa quien es dueño y quien no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar