PHP - Cierre sesión

 
Vista:
sin imagen de perfil

Cierre sesión

Publicado por Sergio (12 intervenciones) el 16/03/2018 22:31:48
Hola. Estoy haciendo una aplicación que se maneja a través de fomularios php desde un navegador. La misma cuenta con una pagina de logeo. El problema que tengo es que cuando cierro la sesión me dirige correctamente a la página principal, pero si le doy al boton atrás del navegador puedo volver a reescribir el formulario. Cómo puedo hacer para que al cerrar sesión realmente la cierre??? 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 italo
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Cierre sesión

Publicado por italo (150 intervenciones) el 16/03/2018 22:42:08
hola, ya hay un tema parecido a este (el mismo problema) deberias de escribir el codigo de las paginas para poderte ayudar la parte de php y html.

salud2
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

Cierre sesión

Publicado por Sergio (12 intervenciones) el 16/03/2018 23:00:21
index.php
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
 session_start();
 include_once "conexion.php";
 function verificar_login($user,$password,&$result)
 {
    $sql = "SELECT * FROM usuarios WHERE usuario COLLATE utf8_bin = '$user' and password COLLATE utf8_bin = '$password'";
    $rec = mysql_query($sql);
    $count = 0;
    while($row = mysql_fetch_object($rec))
    {
         $count++;
         $result = $row;
    }
 
    if($count == 1)
    {
         return 1;
    }
    else
    {
         return 0;
    }
 }
 
 if(!isset($_SESSION['userid']))
 {
    if(isset($_POST['login']))
    {
         if(verificar_login($_POST['user'],$_POST['password'],$result) == 1)
         {
//acá debería de discriminar las pantallas a que puede acceder cada usuario
              if (($_POST['user']) == 'alarma')
	      {
              header("location:error.php");
              }
	      else
	      {
	           if (($_POST['user']) == 'admin')
		   {
	       	        $_SESSION['userid'] = $result->id;
		        $userid = $_SESSION['userid'];
		         header("location:/login/admin_index.php");
		   }
		   else
		   {
		        $_SESSION['userid'] = $result->id;
		        $userid = $_SESSION['userid'];
                        if ($userid==0 or $userid==1)
                        {
                             header("location:/login/admin_index.php");
                        }
                        else
                             header("location:http:/login/noadmin_index.php?userid=$userid");
		   }
	      }
         }
         else
         {
              header("location:error.php");
         }
    }
 }
 else
 {
    header("location:index.php");
 }
?>

logout.php
1
2
3
4
5
<?php
 session_start();
 session_destroy();
 header("location:index.php");
?>
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 italo
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Cierre sesión

Publicado por italo (150 intervenciones) el 16/03/2018 23:22:42
hola, ese es el codigo de index.php y logout.php

faltaria el codigo de la pagina del formulario.

salud2
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

Cierre sesión

Publicado por Sergio (12 intervenciones) el 16/03/2018 23:24:52
una vez que un usuario habilitado ingresa puede pasar por 10 diferentes páginas o formularios. Sería muy extenso colocar todos!!!
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

Cierre sesión

Publicado por Sergio (12 intervenciones) el 24/03/2018 15:13:04
Hola. Ahí estuve viendo y el paso es el siguiente de mi página index.php paso a admin:index.php y por último a logout.php. En ambas tengo el mismo id de sesión. Al finalizar me muestra que ha destruido la sesión y el problema que cuando le doy al boton de retroceder me figura un nuevo id. Adjunto lo código por si desean ralizar prueba, aunque no tiene la bd generada.
index.php
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<html>
<body>
<meta http-equiv="Expires" content="-1">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
 
<?php
 session_start();
 include_once "conexion.php";
 
 $iduser=session_id();
 echo $iduser;
?>
 
<?php
 
 function verificar_login($user,$password,&$result)
 {
    $sql = "SELECT * FROM usuarios WHERE usuario COLLATE utf8_bin = '$user' and password COLLATE utf8_bin = '$password'";
    $rec = mysql_query($sql);
    $count = 0;
    while($row = mysql_fetch_object($rec))
    {
         $count++;
         $result = $row;
    }
 
    if($count == 1)
    {
         return 1;
    }
    else
    {
         return 0;
    }
 }
 
 if(!isset($_SESSION['userid']))
 {
    if(isset($_POST['login']))
    {
         if(verificar_login($_POST['user'],$_POST['password'],$result) == 1)
         {
//acá debería de discriminar las pantallas a que puede acceder cada usuario 
              if (($_POST['user']) == 'alarma')
	      {
                  header("location:error.php");
              }
	      else
	      {
	           if (($_POST['user']) == 'admin')
		   {
	       	        $_SESSION['userid'] = $result->id;
		        $userid = $_SESSION['userid'];
                        header("location:admin_index.php");
		   }
		   else
		   {
		        $_SESSION['userid'] = $result->id;
		        $userid = $_SESSION['userid'];
                        if ($userid==0 or $userid==1)
                        {
                              header("location:admin_index.php");
                        }
                        else
                             header("location:http:/login/noadmin_index.php?userid=$userid");
		   }
	      }
         }
         else
         {
              //echo '<div class="error">Usuario incorrecto, intente nuevamente.</div>';          
              //echo "<meta http-equiv=refresh content=3;URL=logout.php>";
              header("location:error.php");
         }
    }
 }
 else
 {
    //   echo 'Su usuario ingreso correctamente.'; 
    //echo '<a href="logout.php">Intentar nuevamente</a>'; 
    header("location:index.php");
 }
?>
 
<br><br><br><br>
 
<form action="" method="post" class="login">
 
    <div><input name="user" type="text" placeholder="Usuario"></div>
    <br>
    <div><input name="password" type="password" placeholder="Contraseña"></div>
    <br><br><br>
    <div><input name="login" type="submit" value="Entrar"></div>
</form>
</body>
</html>

admin_index.php

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<html>
 
<body>
<?php
 
session_start();
 
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
 
header("Pragma: no-cache"); // HTTP 1.0.
 
header("Expires: 0"); // Proxies.
 
$iduser=session_id();
 
echo $iduser;
 
 
 
 
 
 echo "<FORM method=\"post\">";
 
 
echo "<INPUT TYPE=\"submit\" name=\"sitio0\" class = \"button2\" VALUE=\"&nbsp SITIO0\">"."<br>"."<br>"."<br>";
 
echo "<INPUT TYPE=\"submit\" name=\"sitio1\" class = \"button2\" VALUE=\"&nbsp SITIO1\">"."<br>"."<br>"."<br>";
 
echo "<INPUT TYPE=\"submit\" name=\"sitio2\" class = \"button2\" VALUE=\"&nbsp SITIO2\">"."<br>"."<br>"."<br>";
 
echo "<INPUT TYPE=\"submit\" name=\"sitio3\" class = \"button2\" VALUE=\"&nbsp SITIO3\">"."<br>"."<br>"."<br>";
 
echo "<INPUT TYPE=\"submit\" name=\"sitio4\" class = \"button2\" VALUE=\"&nbsp SITIO4\">"."<br>"."<br>"."<br>";
 
echo "<INPUT TYPE=\"submit\" name=\"sitio5\" class = \"button2\" VALUE=\"&nbsp SITIO5\">"."<br>"."<br>"."<br>";
 
echo "<INPUT TYPE=\"submit\" name=\"sitio6\" class = \"button2\" VALUE=\"&nbsp SITIO6\">"."<br>"."<br>"."<br>";
 
 
echo "<br>";
 echo "</FORM>";
 
if ($_POST[sitio0])
 {
 //   header("location:admin.php"); 
 }
 
if ($_POST[sitio1])
 {
 //   header("location:admin.php"); 
 }
 
if ($_POST[sitio2])
 {
 //   header("location:admin.php"); 
 }
 
if ($_POST[sitio3])
 {
 //   header("location:admin.php"); 
 }
 
if ($_POST[sitio4])
 {
 //   header("location:admin.php"); 
 }
 
if ($_POST[sitio5])
 {
 //   header("location:admin.php"); 
 }
 
if ($_POST[sitio6])
 {
 //   header("location:admin.php"); 
 }
 
?>
 
 
<?php
//pie de pantalla==============================================================
 
echo "<form method=\"post\" action=\"/login/button.php\">";
 
echo "<input type=\"submit\" class=\"button\" name=\"salir\" value=\"Salir\">";
 
echo "</form>";
?>
 
 
</body>
 
</html>

y por último logout.php

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
<?php
//Inicia una nueva sesión o reanuda la existente 
    session_start();
//Destruye toda la información registrada de una sesión
 
   // session_unset();
   // session_destroy(); 	
 
 $iduser=session_id();
 echo "El id a borrar es: ",$iduser;
 
 $_SESSION= array();// VACIAMOS LA VARIABLE DE SESION 
 session_unset();// HACEMOS QUE LA VARIABLE YA NO ESTE DEFINIDA 
 session_destroy();// DESTRUIMOS SESION DE SERVIDOR 
 $session_name = session_name();// OBTENEMOS NOMBRE DE COOKIE DE SESION 
 if(isset($_COOKIE[$session_name]))// VERIFICAMOS QUE EXISTA LA COOKIE 
     {setcookie(session_name(), '', time()-3600, '/');}// ELIMINANDO COOKIE DE VARIABLE DE SESION  
 
 
 $iduser=session_id();
 echo "<br>";
 echo "El id de la sesión es: ",$iduser;
 
//Redireccioneea a la página de login
//   header('location: index.php'); 
 
?>

Lo que quiero hacer es lo mismo que pasa con una página de un banco cuando uno cierra la sesión, si le da al boton de atrás o sale un msj de sesión expirada o siempre lo manda a la página principal.
Si esto no puedo lograrlo con php por favor indicarme con que lenguaje podría hacerlo???
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

Cierre sesión

Publicado por Martin (6 intervenciones) el 21/03/2018 06:25:24
Tienes que crear la condiciones después de session start ()
1
2
3
4
5
6
7
<?php
session_start();
include 'conexion.php';
if(!isset($_SESSION['usuario'])){
	echo '<script> windows.location="login.php"; </script>';
}
?>

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
sin imagen de perfil

Cierre sesión

Publicado por Sergio (12 intervenciones) el 22/03/2018 02:08:10
Hola. Probé el código y no funciona. De la página index.php salta a esta:

paso.php

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
 
 echo "<FORM method=\"post\">";
 
 echo "<INPUT TYPE=\"submit\" name=\"sitio1\" class = \"button2\" VALUE=\"&nbsp A\">"."<br>"."<br>"."<br>";
 
 echo "<INPUT TYPE=\"submit\" name=\"sitio2\" class = \"button2\" VALUE=\"&nbsp B\">"."<br>"."<br>"."<br>";
 
 echo "<INPUT TYPE=\"submit\" name=\"sitio3\" class = \"button2\" VALUE=\"&nbsp C\">"."<br>"."<br>"."<br>";
 
 echo "<INPUT TYPE=\"submit\" name=\"sitio4\" class = \"button2\" VALUE=\"&nbsp C\">"."<br>"."<br>"."<br>";
 
 echo "<INPUT TYPE=\"submit\" name=\"sitio5\" class = \"button2\" VALUE=\"&nbsp D\">"."<br>"."<br>"."<br>";
 
 echo "<INPUT TYPE=\"submit\" name=\"sitio6" class = \"button2\" VALUE=\"&nbsp E\">"."<br>"."<br>"."<br>";
 
 echo "<INPUT TYPE=\"submit\" name=\"sitio5\" class = \"button2\" VALUE=\"&nbsp F\">"."<br>"."<br>"."<br>";
 
 echo "</FORM>";
 
 if ($_POST[sitio1])
 {
    header("location:sitioa.php");
 }
 if ($_POST[sitio2])
 {
    header("location:sitiob.php");
 }
 if ($_POST[sitio3])
 {
    header("location:sitioc.php");
 }
 if ($_POST[sitio4])
 {
    header("location:sitiod.php");
 }
 if ($_POST[sitio5])
 {
    header("location:sitioe.php");
 }
 if ($_POST[sitio6])
 {
    header("location:sitiof.php");
 }
 if ($_POST[sitio7])
 {
    header("location:sitiog.php");
 }
 
?>
<?php
//pie de pantalla==============================================================
 
 echo "<form method=\"post\" action=\"button.php\">";
 
 echo "<input type=\"submit\" class=\"button\" name=\"salir\" value=\"Salir\">";
 echo "</form>";
?>

y de ahí al darle "salir" me dirige a la página logout.php.

Pero al darle al boton de retroceso me sale la página paso.php y podría interactuar como si nunca hubiese salido.
Gracias por tu interés.
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