Cerrar sesion en mi web...

Buenas noches!

Despues de pasarme la tarde buscando un articulo o algo parecido sobre este tema no pude y decidí regresarme aca al foro...

Bueno, mi pregunta es algo compleja... Tengo una pagina web, en la que los usuarios inician sesion pero lo que quiero saber es como hacer que los usuarios puedan cerrar su sesion y que ya no haya modo de volver a entrar sin antes volverse a loguear... estoy un poco informado de que se trabaja con funciones tipo SESSION_DESTROY y tambien depende de los cockies... vi un tuto con eso de los 'estado' que vienen en el coockie pero no me pilla muy bien nada de eso... voy a dejar los codigos que tengo haber si vos me pueden ayudar....


TENGO:

login.php


<?php
session_start();
require_once('funciones.php');
conectar('localhost', 'mrtruji_login2', 'password', 'mrtruji_sistemaregistro');

//Recibir

$USERNAME = strip_tags($_POST['USERNAME']);
$PASSWORD = strip_tags($_POST['PASSWORD']);

$query = @mysql_query('SELECT * FROM logueados WHERE USERNAME="'.mysql_real_escape_string($USERNAME).'" AND PASSWORD="'.mysql_real_escape_string($PASSWORD).'"');
if($existe = @mysql_fetch_object($query))
{
$_SESSION['logged'] = 'yes';
$_SESSION['USERNAME'] = $USERNAME;
echo '<script>window.location="logueado.php"</script>';
}else{
header("location: useropassincorrectos.html");

}
?>


Y LUEGO SI SON LOGUEADOS CORRECTAMENTE SE LES LLEVA A UNA PAGINA LLAMADA 'logueado.php' donde comienza la sesion


logueado.php[/COLOR

<?php

session_start();
if ($_SESSION['logged'] == 'yes')
{
echo 'Bienvenido '.$_SESSION['USERNAME'].'!!!!, en unos segundos seras redirigido a tu perfil el cual podrás editar y en el cual podrás darte de alta';

}

else {

echo 'Favor de iniciar sesión, en la pagina de inicio';
}

?>

<html>
<head><title>:: BIENVENIDO!! ::
</title><META HTTP-EQUIV="REFRESH" CONTENT="5;URL=http://www.pruebacourse.x10.mx/logueado2.html">
</head>
</html>



LUEGO COMO ULTIMO SON REDIRIGIDOS A 'logueado2.html' QUE ES AHI DONDE TIENEN SU PERFIL (QUE POR CIERTO NO HE HECHO NADA SOBRE PERFILES, NO ENTIENDO NI LECHES xD)

logueado2.html:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>


este es tu perfil

<a href="index.html?status=loggedout"> Log Out </a>
</body>
</html>


Si se fijan... al ultimo de logueado 2 tengo un vinculo que los lleva a index.html, pero pues nadamas dan click en la flecha 'atras' en el navegador y regresan al perfil sin ser deslogueados... o nadamas cambian el 'URL' por 'logueado2.html' y ya vuelven a estar en el perfil


He estado buscando la tarde entera y no encuentro una buena manera buena de hacer que de verdad cierren su sesion... gracias por su apoyo compañeros!!!!!!!:rolleyes:


MRTRUJIS
BUENO MODIFIQUE EL LOS ARCHIVOS POR OTRO TUTO QUE VI Y CONSEGUI ESTO, ME CHEQUE Y DECIAN QUE ERA MEJOR USAR SESSION_DESTROY(); Y PUES HICE ESTO:

EN 'logueado2' le puse al vinculo de 'Log out' una redireccion a logout.html tal como se muestra aqui:


logueado2.html:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>


este es tu perfil

<a href="logout.php?status=loggedout"> Log Out </a>
</body>
</html>



logout.php:



<?
session_destroy();
?>


<html>
<head>
</head>
<body>
has terminado sesion con exito
</body>
</html>



Lo que sigo sin lograr hacer es que pues en realidadad termine con la sesion... sigo llendo atras con la flecha del navegador y digo 'conectado'


GRACIAS POR SU APOYO


MRTRUJIS
Yo uso esto para teminar la session


session_unregister("logged");
session_unregister("USERNAME");
Primeramente gracias por contestar spitfire2... pero donde pondria esas dos funciones??? en logout.php? :confused:


gracias!!!
Yo lo que hago, y no creo que sea lo mas eficaz, pero es también una idea... es poner que expire en -1 hora (Osea, que se elimine)
Aunque creo que como lo dice spit es bastante bueno.. qune aun no lo he probado mucho
hola, cuando pongo la funcion que me diste spit me arroja un error diciendome que la funcion es obsoleta
dice exactamente esto:


Deprecated: Function session_unregister() is deprecated



A QUE SE DEBE!!??


GRACIAS MRTRUJIS
Hola:

Deprecated en inglés significa que está obsoleto. En otras palabras, no deberías utilizar esa función (aunque puedes y no esta mal) porque no será soportada en versiones futuras (de PHP) y/o porque fue reemplazada por otra que tiene mejor rendimiento. Yo lo hago así:

$_SESSION = array(); // Esto eliminará todos los valores existentes del usuario, así que ten cuidado si quieres conservar algunos.
session_destroy();

Eso es todo lo que hago.
Hola skaparate, gracias por contestar... eso lo tengo que poner en la pagina 'logout.php'??? lo de $_SESSION = array(); session_destroy();

MRTRUJIS
Lo mismo que me esta pasando aqui esta ligado con lo de el post que hize sobre 'login no pilla muy bien'... ay algo que hace que cambiando la URL entre al 'perfil' sin siquiera tener una sesion... hay algo mal en el código?? si es asi lo puede resolver???.... tambien al cerrar sesion solo cambio la URL, y vuelve al perfil...





CON TODO ESTO, SE ME AGOTA LA PACIENCIA...
pues yo lo uso en el archivo salir.php y me funciona perfecto, pero creo que me hace falta un actualizacion 3.0 jaja
hola, yo apenas empiezo con esto de programacion web y yo lo hago asi
<a href="logout.php">Salir</a>

y tu archivo logout.php seria

<?
session_start();
unset($_SESSION["USERNAME"]);
unset($_SESSION["PASSWORD"]);
session_destroy();
header("Location: index.php");
exit;
?>

espero te sirva o tal ves ya lo resolviste

saludos