Ciao,
allora, innazitutto il define col nome della sessione non è una cosa obbligatoria, piuttosto è una mia convenzione ( ma credo che anche altri scrivano il loro codice allo stesso modo ).
Permettimi di fare un piccolo passo indietro.
Nella tua applicazione non devono mancare 2 files che saranno inclusi in ogni singola pagina del tuo progetto ( che sia sito internet, gestionale ecc.. ):

- file del setup ( io lo chiamo setup.php )
- file che viene caricato subito dopo il setup ( io lo chiamo application_top.php, ho preso spunto da oscommerce )

Nel file di setup crei una costante a cui dai il nome della sessione che varrà per quel progetto:

Codice PHP:
define(SESSIONE,'miaSessione' 
Inoltre, il file di setup ti servirà per inizializzare le altre costanti, come ad esempio username, host e pass del db ( per questo dev'essere incluso sempre ).
Dare il nome della sessione differenziato ti da la possibilità di installare 2 o più volte lo stesso progetto sullo stesso server. In caso contrario, autenticandoti in uno solo saresti autenticato da tutte le parti.

Nel file application_top.php ( nome da esempio ) puoi inizializzare quelle variabili che ti servonoi a livello globale, ad esempio

Codice PHP:
$userId = isset($_SESSION[SESSIONE]['id']) ? (int)$_SESSION[SESSIONE]['id'] : 0
Il tuo file index.php sarà qualcosa del genere:

Codice PHP:
<?php

require_once('./includes/setup.php');
require_once(
'./includes/application_top.php'); // ho creato una dir includes

?>
Su application_top.php inoltre inizializzi la sessione e registri la costante

Codice PHP:
session_start();

if(!
session_is_registered(SESSIONE){
  
session_register(SESSIONE);

Inoltre potrai inizializzare alcuni oggetti che ti serviranno a livello globale ( ad esempio la gestione del database ).
La sessione inoltre potrai anche salvarla sul database se preferisci ( con session_set_save_handler )

Il controllo va bene come l'hai fatto.
Per essere sicuro fallo direttamente sulla sessione:
Codice PHP:
if(isset($_SESSION[SESSIONE]['id']) && (int)$_SESSION[SESSIONE]['id'] > 0){
 
// contenuto protetto
}else{
 
// login

Non ti rimane altro che provare per vedere se le cose funzionano o meno
Ciao