"Tienes" que hacerlo como más te convenga.
Yo personalmente siempre creo un archivo, llámalo "login.php" (en el que está session_start()), en el que se comprueba la existencia del usuario en caso de haber enviado el formulario de login. Puedes hacer por ejemplo, que el formulario se envíe a la misma página en el que esté el usuario enviando una variable por GET.
Éste sería el formulario que tendremos en form.php:
Código HTML:
<?
if(!$_SESSION['loged']) {
?>
<form action="?accion=login" method="POST"....
<?
}
?>
Como el fichero login.php se incluye siempre, pues puedes poner en el archivo lo siguiente:
Código PHP:
if(i$_GET['accion']=="login") {
// Aquí puedes comprobar que el usuario exista y que la contraseña coincida
// En caso de que exista hacer esto:
header("Location: ".$_SERVER['HTTP_REFERER']); // Se reenvía donde estaba
exit();
// Si no coincide:
header("Location: ?error=login"); // Así puedes hacer if error = login mostrar mensaje de error
exit();
}
Comprobar si el usuario está identificado, puedes hacerlo o en una parte del código, o solo incluir una página si se está identificado:
Código PHP:
if($_SESSION['identificado']) include("unapagina.php");
else echo "No tienes acceso a ésta página. Identifícate o regístrate";
Por ejemplo, ésto mismo podrías hacer con el formulario, si está identificado no se muestra, y si no, se muestra.
También puedes meter tu switch dentro del if:
Código PHP:
if($_SESSION['identificado']) {
switch()...
}
Hay mil maneras.
No sé si ha quedado muy claro, porque me lié un poco creo. Siempre puedes preguntar para lo que te queden dudas.
Saludos.