PHP - Duda con login y variable de sesion

 
Vista:

Duda con login y variable de sesion

Publicado por ZeroX (15 intervenciones) el 13/09/2019 16:43:08
Les cuento la duda y el problema actual

Tengo un login inicias sesion y todo bien se crea la variable y guarda en bd que hay una sesion activa, luego por algun motivo el usuario cambio de pagina estando en el sistema ejemplo youtube y quiere regresr a su pagina del sistema esta correcto aun tiene sesion activada,

el problema es que cuando cierra el navegador e intenta acceder al sistema lo manda al login y se firma pero reconoce que tiene una sesion activida impidiendo entrar, como puedo resolver el problema

que cuando cierren el nevegador se destruya la variable de sesion al igual que como darle cerrar sesion se elimine la sesion de la bd?

esa es la duda que traigo espero me puedan ayudar
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

Duda con login y variable de sesion

Publicado por Kathyu (905 intervenciones) el 13/09/2019 17:23:14
Pues no se si sea lo que busca pero yo al igual que usted guardo en variables de sesión algunas cosas, entre ellas el username o nick del usuario, y cuando cierran navegador e ingresan al sistema pues hago esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
	if(empty($_SESSION['username'])) {
?>
// Código HTML y/u otros
<?php
        }
	else{
		echo '
			<script>
                location.replace("INICIO");
            </script>
		';
	}
?>

Verifico si $_SESSION['username'] esta vacía/nula y si es así, le muestra el index que es el login, de lo contrario lo manda al INICIO que es el archivo donde (una vez loggeado) cae el usuario y puede elegir a que sistema ingresar.

En su caso es igual, si alguna de sus variables de sesión no están inicializadas significaría que en efecto en su DB ya no hay sesión activa y le tendría que mostrar el login, de lo contrario redireccionarlo a algún otro lado, y con eso se evitaría que al hacer login le diga que hay sesión activa y por lógica evitaría su error actual.
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

Duda con login y variable de sesion

Publicado por ZeroX (15 intervenciones) el 13/09/2019 18:14:32
si ntendi un poco pero ese codigo que utiliza en donde lo coloca en el index? o en la pagina principal una vez que loguea?

saludos
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

Duda con login y variable de sesion

Publicado por Kathyu (905 intervenciones) el 13/09/2019 19:52:45
En el index, porque es ahí donde evalúa

Pseudo
1
2
3
4
5
6
if(la variable de sesión esta vacía){
   Entonces mostrale este archivo que es el login
}
else{ // Si la variable de sesión NO esta vacía
   Entonces envíalo a esta pagina donde ya hay sesión iniciada
}
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

Duda con login y variable de sesion

Publicado por Zero X (15 intervenciones) el 13/09/2019 22:20:35
Ya me confundi mucho tengo mi archivo server que por lo que vi aahi realiza el inicio de sesion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//INICIAR SESION
if (isset($_POST['iniciarSesion'])) {
 
    $nombreUsuario = $_POST['username'];
    $contrasenia = $_POST['contrasenia'];
 
    //Verifica si el usuario existe
    $sql = "SELECT IdUsuario, idProveedor, NoProveedor, usuario FROM vProveedorUsuario_Listado WHERE usuario = '$nombreUsuario' AND password = '$contrasenia'";
    $stmt = sqlsrv_query($connProv, $sql);
    $row = sqlsrv_fetch_array($stmt);
    $IdUsuario = $row['IdUsuario'];
 
    //Verifica cuantos de ese usuario hay
    $sql2 = "SELECT COUNT(*) as Resultados FROM vProveedorUsuario_Listado WHERE usuario = '$nombreUsuario' AND password = '$contrasenia'";
    $stmt2 = sqlsrv_query($connProv, $sql2);
    $UsuarioEncontrado = sqlsrv_fetch_array($stmt2);
 
    //Verifica si el usuario ya esta conectado
    $sql3 = "SELECT COUNT(*) as estaConectado FROM sesion_proveedor WHERE idusuario = $IdUsuario";
    $stmt3 = sqlsrv_query($conn, $sql3);
    $conectado = sqlsrv_fetch_array($stmt3);
 
    if($conectado['estaConectado'] == 1){
        header('location: index.php?login=False');
    } else {
 
        if($UsuarioEncontrado['Resultados'] == 1){
            $_SESSION['IdUsuario'] = $row['IdUsuario'];
            $_SESSION['IdProveedor'] = $row['idProveedor'];
            $_SESSION['NoProveedor'] = $row['NoProveedor'];
            $_SESSION['Usuario'] = $row['usuario'];
 
            $sql3 = "INSERT INTO sesion_proveedor VALUES ($IdUsuario,HOST_NAME(),GETDATE())";
            $stmt3 = sqlsrv_query($conn, $sql3);
 
            header('location: requisiciones.php');
        }
        else {
            header('location: index.php?login=Error');
        }
    }
 
    sqlsrv_close($conn);
}

el archivo index.php

que es donde viene para ingresar usuarioy contraseña trae esto

1
2
3
4
5
6
7
8
9
10
<?php
	if(isset($_GET["login"])){
		if ($_GET['login']=="Error"){
			echo "<center style='color:red; font-size: 20px;'>El usuario o contraseña no son correctos</center>";
		}
		else if ($_GET['login']=="False"){
			echo "<center style='color:red; font-size: 20px;'>Este usuario ya cuenta con una sesión activa</center>";
		}
	}
?>

indica si ya tienes sesion o te da entrada

entonces no se donde colocar bien lo que me comentaste que yo tmbn sabia que era algo asi
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

Duda con login y variable de sesion

Publicado por Kathyu (905 intervenciones) el 13/09/2019 22:46:56
Yo uso el index para que muestre el login, y cuando se envían los datos del login lo paso a otros archivos que hacen todo el proceso de logeo, definir variables de sesión, bitácoras, permisos y un montón de cosas mas, cuando ese archivo procesa correctamente al usuario, lo redirijo al archivo "inicio" que es donde el usuario llega desde el login, ahí cada quien busca a que sistema meterse.

Pero respondiendo la pregunta, yo pongo mi código en el index, osea en el primer archivo que el usuario visita cuando entra a mi portal, es ahí donde confirmo si ya tiene sesión iniciada, y como ya lo he dicho, si tiene sesión iniciada lo redirige al "inicio" de lo contrario le muestra el form del login.
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

Duda con login y variable de sesion

Publicado por ZeroX (15 intervenciones) el 13/09/2019 22:54:05
si lo pongo en el index
me sale un mensaje que dice que localhost se ha redirigido demasiadas veces
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

Duda con login y variable de sesion

Publicado por Kathyu (905 intervenciones) el 13/09/2019 23:29:24
Un loop de seguro.

Ponga el código de su index, así tal cual como lo tiene con mi código, y por favor entre los tags de código no así como texto

1
Asi

PD: fines de semana no toco PC's por ordenes federales, así que si no resolvemos hoy en 30 minutos nos vemos el lunes
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

Duda con login y variable de sesion

Publicado por ZeroX (15 intervenciones) el 14/09/2019 00:24:39
no lo respeta ya lo cambio a tu codigo y hace el mismo comportamiente de como inicie que indica que ya se tiene una sesion activa y sigue mandando al login y no se si deberia de funcionar asi que si yo cierror el navegador se destruya la sesion y asi ya no me marque el error que ya tiene sesion activa o eso es con otro punto?
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