ti scrivo un piccolo esempio che ovviamente va migliorato

login.php
codice:
<?PHP
  // Avvia la sessione
  session_start();

  // Verifica se l'utente è già loggato, in caso affermativo reindirizza l'utente
  // ad una pagina precisa, altrimenti continua con il login
  if ( isset($_SESSION['auth']) && $_SESSION['auth'] == 1 ) {
    header("location: admin.php");
    exit();
  }

  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ( isset($_POST['username']) && isset($_POST['password']) ) {
      $username = mysql_escape_string($_POST['username']);
      $password= mysql_escape_string($_POST['password']);

      // Verifico il login tramite una funzione creata appositamente
      if ( check_login($username, $password) ) {
        session_register('auth');
        $_SESSION['auth'] = 1;
        // Redireziono l'utente alla giusta pagina dopo il login
        header("location: admin.php");
        exit();
      }
    }
  }
  
?>

<form action="" method="post" name="frmlogin">
  <input type="text" name="username" value="">
  <input type="password" name="password" value="">
  <input type="submit" name="submit" value="Login">
</form>
admin.php
codice:
<?PHP

  // Avvio o ripristino la sessione
  session_start();

  // Verifico le variabili di sessione relative al login
  if ( !isset($_SESSION['auth']) || $_SESSION['auth'] != 1 ) {
    die("Non puoi accedere a questa pagina senza aver effettuato il login");
  }

  // Resto del codice...
  // ...
?>
spero di non aver sbagliato nulla dato che l'ho scritto adesso adesso e magari di esserti stato utile