Eliminar la sesion en PHP

luaugii

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Dic 2011
Mensajes
209
Buenas tardes, Dios los bendiga

Quiero saber como puedo eliminar la sesion de PHP.

Para destruir utilizo el siguiente codigo
PHP:
<?php

session_start();

/*include ('navegacion/funciones_navega.php');*/

include ('funciones.php');

if (isset ($_POST['cerrar_sesion']))

	{
		unset($_SESSION['usuario']);

		session_destroy();

		$mensaje="Salio de la Sesión..! ".var_dump($_SESSION);

		$url="http://localhost/odontologo/index.php?mensaje=$mensaje&error=1";

		presentar_mensaje_popup($url);
		
	}

Utilizo esto para ELIMINAR la sesión, mediante un BOTON SUBMIT.

PERO cuando aplasto el BOTON DE REGRESAR (ATRAS) del Navegador, inmediatamnete regresa a la misma página con el mismo usuario logeado.

¿Que puedo hacer?

muchas gracias

Dios los bendiga
 

victorvu

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Feb 2013
Mensajes
118
Proba con estas! no pongas el unset($_SESSION['usuario']);
PHP:
session_unset()
session_destroy();
$mensaje="Salio de la Sesión..! ".var_dump($_SESSION); 
$url="http://localhost/odontologo/index.php?mensaje=$mensaje&error=1"; 
presentar_mensaje_popup($url);
 

juanec27

Gamma
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
19 Mar 2011
Mensajes
207
Estas validando en las paginas donde solo se puede acceder una vez logueado, que la sesion este inicializada? Si no es asi, quizas por eso puedes ver aun alguna pagina de estas, si usas datos de la seccion quizas aparecerian errores de que la sesion no existe y si no x eso no te das cuenta

He de mencionar que en mis años de programacion no he encontraod una manera mas sencilla o dinamica para validar esta situacion siempre incluyo una funcion o archivo que me valida la sesion en las secciones y es complicado si tienes muchas secciones. No hablo solo de PHP si no otros lenguajes... quiza es que no he investigado al respecto... ejeje
 

luaugii

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Dic 2011
Mensajes
209

Muchas Gracias Victor por responder a mi pregunta,

Ya lo hice
PHP:
unset($_SESSION['usuario']);

Sí cierra la sesión, pero mi problema de seguridad es cuando el usuario presiona el botón "hacia atras" del navegador, el navegador le presenta los datos que tenia el usuario una pantalla antes de cerrar la sesión.

esta información puede ser sensible (delicada) quisiera la forma de eliminar el historial de todas las pantallas donde el usuario transito.

Ej: en Facebook, cuando cierras sesión y presionas "hacia atras" en el botón del navegador, automáticamente te sale pantalla de inicio de sesión de Facebook.

Muchas gracias por responder.!


Dios te bendiga
 
Última edición:

victorvu

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Feb 2013
Mensajes
118

Es muy raro que siga mostrando datos despues de hacer eso, quizas muestra datos pero es xq no se actualizo la pagina que esta detras del popup que abris, si das a actualizar siguen viendose?
 

luaugii

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Dic 2011
Mensajes
209
Excelente tu observación, lo voy a intentar.

---------- Post agregado el 06-feb-2014 hora: 19:38 ----------

Es muy raro que siga mostrando datos despues de hacer eso, quizas muestra datos pero es xq no se actualizo la pagina que esta detras del popup que abris, si das a actualizar siguen viendose?

sigue saliendo la misma cosa..!

Edite un archivo de Wordpress, para saber como ellos manejan el asunto de cerrar sesion en su WP-ADMIN

llegue hasta el archivo donde esta la "liga" esto es wp-login?action=logout así esta escrito.

pero bueno

wordpress cuando cierra sesion y presiono el boton del navegador , TAMBIÉN vá para atras, pero cuando quiero elegir otra opcion dentro del panel de control,
me trasnporta a la página de iniciar sesion.

me parece super bien..!

¿como debo validar, para que las páginas se muestren siempre y cuando este iniciada una sesion logeada?

muchas gracias por sus respuestas..!
 

victorvu

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Feb 2013
Mensajes
118
¿como debo validar, para que las páginas se muestren siempre y cuando este iniciada una sesion logeada?

muchas gracias por sus respuestas..!

podrias probar
PHP:
if(!isset($_SESSION['usuario']))
{
    header("location:/url/");
}

ahi colocas la url a la cual queres ser redireccionado si no esta iniciada la sesion, solo cambia $_SESSION['usuario']) por el que corresponda
 

Feddy

Gamma
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
13 Dic 2013
Mensajes
373
Edad
34
Estas usando cookies? El index como lee los datos de session? Solamente con destroy deberia funcionar
 

NJCalvo

Dseda
Programador
Verificado por Whatsapp
Desde
15 Ago 2010
Mensajes
1.050
Como dicen arriba, si en cada archivo no hay una comprobación que verifique si la sesión esta iniciada se mostrará lo mismo.
Sobre lo de WP, usan switch.
 

luaugii

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Dic 2011
Mensajes
209
es cierto usan switch..! En Wordpress
 

ecoal95

Gamma
Programador
Desde
1 Sep 2012
Mensajes
243
Simplemente evita mandar cabeceras 304, así el navegador no cacheará la página, ni siquiera al volver atrás en el historial.
 

shadowhck

Lambda
Programador
Verificado por Whatsapp
Desde
18 Ago 2009
Mensajes
2.772
Para los usuarios logueados debes de mandar cabeceras que no permitan que la página se guarde en cache. Cache-control, Expires.

Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
 

alexander171294

Delta
SEO
Desde
7 Abr 2013
Mensajes
590
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Simplemente evita mandar cabeceras 304, así el navegador no cacheará la página, ni siquiera al volver atrás en el historial.

eso es un serio problema, si no se cachea la página tendrás carga extra innecesaria en el navegador

lo mejor que puedes hacer es como dice shadowhck cuando estés en una sección donde cargue información sensible, simplemente evitas que la cachee.

en realidad mejor sería que la información sensible no esté en el html directamente, sino que sea solicitada luego de cargar la página por javascript, la información debería ser devuelta solo si está logueado

saludos!
 

ecoal95

Gamma
Programador
Desde
1 Sep 2012
Mensajes
243
Claro, es eso a lo que me refería, no quieres enviar cabeceras 304 donde se muestren datos sensibles.

En una landing o páginas estáticas claro que lo mejor es enviarlas, y en los archivos estáticos también hace falta una "expires"...

Lo de cargar la información asíncronamente puede tener sus ventajas, pero por otra parte eso significaría que un usuario sin javascript no podría acceder a ella.
 

luaugii

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Dic 2011
Mensajes
209
Estimados Betas

Le doy gracias a Dios, porque pude resolver este inconveniente que me consumió todo el día de hoy.

Aquí expongo los correctivos que tome


y este es el codigo... una parte
PHP:
<?php 
	session_start();
	include("funciones.php");
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Servicios de Odontologos</title>
<link href="css/estilos.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="barra-menu-inicio">


</div>
<?php 		
			
	if (isset($_SESSION['usuario']))
			header("Location: http://localhost/odontologo/entorno_usuario.php");

	else
		{
?>

<div class="ingreso_datos_pagina_inicio">
<form name="ingreso" method="post" action="">
<h1>Iniciar Sesión:</h1>
Para ingresar a tu perfil debes iniciar Sesión.
<hr>
<div align="center">
Usuario:<input name="c_usuario" type="text"
 placeholder="Ingrese su Identificación"  class="campo-datos">
Contraseña:<input name="c_passw" type="password"
placeholder="Favor escriba su Contraseña"  class="campo-datos">
<fieldset >
Paciente<input name="tipo_usuario" type="radio" value="Paciente">Odontólogo<input name="tipo_usuario" type="radio" value="Odontologo" required>
<input class="botones-pagina-inicio" name="iniciar-sesion" type="submit" value="iniciar sesión">
</fieldset>
</div>
<input name="clase_formulario" type="hidden" value="mi">
<br>
</form>
<form name="ingreso" method="post" action="perfil-persona.php">
<h2>Registrarse</h2>
Si no esta registrado aún, hazlo ahora..!<br/>
<div align="center">
<fieldset >
Paciente<input name="tipo-usuario" type="radio" value="Paciente">Odontólogo<input name="tipo-usuario" type="radio" value="Odontologo" required>
<input class="botones-pagina-inicio" name="b_registrarse" type="submit" value="registrarse" required>
</fieldset>
</div>
</form>
</div>
<?php }?>

<?php 
if ($_GET['error']==1)
	{
		$mensaje=$_GET['mensaje'];

		echo "<script language='javascript1.5'>
		alert ('$mensaje'); location.href='http://localhost/odontologo/index.php';
		</script>";
	}
?>

<?php 
	if (isset($_POST['iniciar-sesion']))
		{
			$usuario=trim(strip_tags($_POST['c_usuario']));
			$passw=trim(strip_tags($_POST['c_passw']));
			$tipo_usuario=trim(strip_tags($_POST['tipo_usuario']));
			$resultado_busqueda=buscar_usuario($tipo_usuario,$usuario,$passw);
			if ($resultado_busqueda->num_rows==0)
				echo "
				<script type='text/javascript'> 
					alert('Usuario no encontrado');
					
				</script>
				";
		}
?>
</body>
</html>


aqui el código
PHP:
<?php
session_start();

include ('funciones.php');

if (isset ($_POST['cerrar_sesion']))
	{
		
		session_unset();
		$mensaje="Salio de la Sesión..! ";
		$url="http://localhost/odontologo/index.php?mensaje=$mensaje&error=1";
		presentar_mensaje_popup($url);
		
	}

if (isset($_SESSION['usuario']))
	{
		$persona=$_SESSION['tipo_usuario'];
		$usuario=$_SESSION['usuario'];
					
?>

<!DOCTYPE HTML>
<html>
<head>

<meta charset="utf-8">
<title><?php echo $usuario;?> | Perfil</title>
<link href="css/estilos.css" rel="stylesheet" type="text/css">

<meta name="viewport" content=" width=device-width; initial-scale=1.0">


<link href="css/colores.css" rel="stylesheet" type="text/css">
<link href="css/base.css" rel="stylesheet" type="text/css">
<link href="css/grande.css" rel="stylesheet" type="text/css" media="screen and(min-width: 981px)">
<link href="css/medino.css" rel="stylesheet" type="text/css"media="screen and(min-width: 481px) and (max-width: 980px)">
<link href="css/mini.css" rel="stylesheet" type="text/css"media="screen and(max-width: 480px)">
</head>

<body>
<div class="barra">
  <div id="titulo">
		Entorno de <?php echo $usuario;?>
  <img  src="http://localhost/odontologo/imagenes/<?php echo $persona;?>.png" width="50" height="50">
  </div>
  <div  id="titulo" style="text-align:right;"> 
  		<strong>Odontología de Guayaquil</strong>
  </div>
  <div id="salir">
  	<form method="post" action="cerrar_sesion.php">
    	<input name="cerrar_sesion" type="submit" value="Salir" title="Cerrar Sesión" class="botones-entorno-usuario">
	</form>
  </div>
</div>


</body>

</html>

<?php 
		echo "
				<script type='text/javascript'> 
					alert('".$_SESSION['usuario'].", Haz iniciado la Sesión');
					
				</script>
				";
		}
	else
		{
			$mensaje="Favor inicie la Sesion..!";
			$url="http://localhost/odontologo/index.php?mensaje=$mensaje&error=1";
			presentar_mensaje_popup($url);
		}

?>

Lo que hice en el "entorno de usuario" es que pueda solo ingresar a está página solo cuando este una sesion activa..!

Y en la página de "inicio de sesión" , iniciar la sesión con php y si en caso el "usuario" presione el botón "hacia atras" del navegador, utilizo un IF que verifica si eso sucede, y si eso sucede utilizo un HEADER y lo devuelvo al entorno de usuario"

De esta forma gracias a Dios , pude dar solución a este problema que no lo pude resolver ayer.

con parto con ustedes mi solución. En caso que otro beta lo necesite..!

Dios los bendiga..!
 

alexander171294

Delta
SEO
Desde
7 Abr 2013
Mensajes
590
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.

eso es cierto, pero hay que tener en cuenta que encontrar hoy en día a un usuario sin javascript (teniendo como base que hasta los navegadores de los móviles tienen javascript) es muy raro, yo tengo como política no dar soporte a "obsoletos" cosas como el internet explorer 6, o gente con un navegador sin javascript. (es mi opinión personal), pero en general la industria tiende a establecer unos minimos prerequisitos para el desarrollo (como por ejemplo tener memoria suficiente para correr una app, etc.)

saludos!
 

luaugii

Gamma
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Dic 2011
Mensajes
209

Es muy cierto, el Java Script es muy importate, tanto para el "entorno de usuario", como para las validaciones antes que el servidor trabaje con los datos ("así alivianamos el trabajo del servidor").

JavaScript es Importante al momento de "FrontEnd" y "BackEnd".

Dios los bendiga
 

ecoal95

Gamma
Programador
Desde
1 Sep 2012
Mensajes
243
En cierto modo te doy la razón (si soportaras a IE6 sólo demostrarías masokismo, y casi que a IE7 te digo lo mismo), pero para mí las partes críticas de la web deberían funcionar sin javascript:
Hay muchos (si bien es cierto que cada vez menos) lectores de pantalla sin Javascript, y privarle del acceso a la web a un ciego sólo por ser ciego pues me parece una putada.
 

alexander171294

Delta
SEO
Desde
7 Abr 2013
Mensajes
590
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
por suerte tengo un compañero de estudios ciego, y la verdad que javascript no le afecta en lo absoluto, de hecho, casi cualquier lector de pantalla puede leer los alt de una imagen "cargando" de alguna peticion ajax en casi cualquier navegador, para lo que no usa ajax (osea que no lleva tanto tiempo en terminar el proceso) funciona muy bien los lectores (hasta me atrevo a decir que el propio Orca de linux funciona excelente, si no contamos con opciones de pago).

saludos!