[AYUDA] Expirar sesion

Muy buenas a todos.
El caso es que tengo montado un sistema de usuarios que crea una sesion por cada usuario para mantenerlo conectado, pero quiero que una vez que el usuario haga logout la sesion expire para que cuando se vuelva a loguear se cree una nueva sesión y que esta expire tambien, se que esto se puede hacer con cookies pero estoy acostumbrado a las sesiones disculpen las molestias y gracias de antemeno :)
Hola:

Simplemente borra la sesión en el logout:

session_destroy(); // Borra los archivos de sesión en el servidor
$_SESSION = array(); // Borra las variables de sesión
Gracias amigo lo pude solucionar de esta forma:

session_destroy(); //Borro los Archivos de sesion
session_unset(); //Borro las variables;
header("location:home.php"); //El usuario vuelve al index de visitas

Ahora quiero proteger la pagina para que los no logueados no puedan acceseder como lo logro??
Hmmmm, eso dependerá de cómo hayas hecho el inicio de sesión. Por ejemplo:

login
// Después de haber validado al usuario en la base de datos y demás
$_SESSION['logged_in'] = true;

restringido.php
if( $_SESSION['logged_in'] !== true ) {
  echo 'No tienes permiso!';
  return;
} else {
  // muestras la página, incluyes el archivo o cualquier cosa
}
Lo hice de la siguiente forma :

//se comprueba la sesión
if(!isset($_SESSION['logeado'])){
//el usuario no esta logueado
}
else{
//muestro la pagina
}

Esto esta bien (disculpa las molestias).
Sí, está bien, pero es inseguro. Mejor asegúrate de que haya iniciado sesión y que el valor y el tipo de la variable sea idéntico al que esperas. Mira este código en PHPFiddler (Presiona F9 o haz clic sobre Run para ejecutarlo): http://phpfiddle.org/main/code/pmf-3x9

En general, == compara si los valores de las variables son iguales, mientras que === compara el valor y el tipo, así que, si el valor o el tipo no son iguales, la comparación es false.
Adapte el códigos con el '===' quedando asi:

session_start();
if(($_SESSION['logueado'] === false)){
echo "No tienes acceso";
}
else{
echo "Hola ".$_SESSION['nick']."<br>"; 
}

Cuando el usuario se loguea todo anda perfecto pero al hacer logout y volver a cargar la pagina anterior (digamos index_user.php) me dice que la variable

$_SESSION['logueado']; 

y la variable

$_SESSION['nick'];


Estan indefinidas en vez de mostrar "no tienes acceso" .

Porque ocurrirá esto?

Mi codigo de logout :

session_unset();
session_destroy();
header("location:index.php");

PD: Gracias por tu ayuda y paciencia.
Adapte el códigos con el '===' quedando asi:

session_start();
if($_SESSION['logueado'] === false){
echo "No tienes acceso";
}
else{
echo "Hola ".$_SESSION['nick']."<br>"; 
}

Cuando el usuario se loguea todo anda perfecto pero al hacer logout y volver a cargar la pagina anterior (digamos index_user.php) me dice que la variable

$_SESSION['logueado']; 

y la variable

$_SESSION['nick'];


Estan indefinidas en vez de mostrar "no tienes acceso" .

Porque ocurrirá esto?

Mi codigo de logout :

session_unset();
session_destroy();
header("location:index.php");

PD: Gracias por tu ayuda y paciencia.
Ah, claro, porque en el logout estás borrando todo lo que dentro de $_SESSION. Por ejemplo, al login:

$_SESSION['nick'] = 'Mi Usuario'; // Por ejemplo
$_SESSION['logueado'] = true;
print_r( $_SESSION );

/* Suponiendo que no hay más variables definidas en $_SESSION, el resultado sería:
  array( 'nick' => 'Mi Usuario', 'logueado' => true );
*/

Por otro lado, después del logout:

session_unset();
session_destroy();
print_r( $_SESSION );

/* Mostraría: array() */

Siempre debes asegurarte de dos cosas:

1.- Que la variable exista. Para eso se usa isset( $variable ).
2.- Que el contenido no este vacío y cumpla con lo que esperas. Revisar que cumpla con lo que esperas que sea el contenido de la variable es complejo, pues depende de lo que quieres. Por otro lado, el que no este vacío es fácil:

if( !empty( $variable ) )
if( $variable ) // En PHP, similar a C, cualquier variable que contenga algo evaluará como true. Si no esta definida en ningún lado, aparecerá la alerta que mencionas
if( $variable != '' ) // en este caso dependerá del tipo de variable: $variable == número, $variable == string, etc.

Los ejemplos anteriores dependerán del punto 1, pues si la variable no existe, no tiene sentido procesarla. De cualquier forma, siempre que la variable exista, debes procesarla, o sea, asegurarte de que el contenido sea lo que esperas y no otra cosa, pues podrían hackear tu sitio (ningún sitio es completamente seguro, pero para qué hacerles la tarea fácil, no?). Esto último es especialmente cierto cuando se involucra el ingreso de contenido por parte del usuario y la lectura/escritura de datos en una base de datos, pues podrían inyectar código SQL como: $_POST['nick'] = 'DELETE * FROM usuario'; ($_POST['nick'] es el nombre del input en el formulario de login).

En conclusión: el error implica que la variable no existe en ningún lugar, por ende, debes usar isset( $variable ) para asegurarte de que exista.
ahora lo hice de la siguiente forma :

session_start();
//primero compruebo que ambas variables existan
if(isset($_SESSION['logueado']) && isset($_SESSION['nick'])){
/*de ser asi me sersioro de que si la 
variable logueado devuelve false mostrar
un mensaje de error */
if($_SESSION['logueado'] === false){
echo "ocurrio un error";
}
else{
//De lo contrario muestro la pagina
echo "Hola ".$_SESSION['nick'];
}
}
else{
//en caso de que las variables no existan...
echo "Restringido";
}

Ahora creo que resulta mas funcional ya que devuelve un mensaje o otro dependiendo de que fallo y en caso de que este todo bien imprime la pagina, pero me gustaría saber si esta del todo correcto segunda lo que me as sugerido hasta ahora
Jajajaj, sí!

Aunque deberías pensar cómo mejorarlo (puede que no haya forma)... tarea para la casa :)
no, no creo que allá forma de mejorarlo, no veo como hacerlo o simplemente no se puede.