Originariamente inviato da fermat
si si confermo!!
stampa il $_SESSION ed il $_COOKIE e vedi cosa contengono.

A parte che non mi sembra troppo logico:

Codice PHP:
if (!isset($_SESSION['ctrl']) || !isset($_COOKIE['ctrl'])) {
    
header("location: index.php");
}

// e index.php

if (isset($_SESSION['ctrl']) || isset($_COOKIE['ctrl'])) {
    
header("location: home.php");

se in home non e' settato mandi a index.php,
se in index e' settato mandi a home.php

se viene mandato in index perche' non e' settato in home allora potra' mai essere settato in index???

Direi proprio di no. E poi devono essere presenti/assenti entrambi, cookie e sessione. Occhio anche che il session_start() recupera il cookie di sessione che viene inviato in automatico al browser e quindi non e' quello che indichi con nome ctrl. Se non trova il cookie di sessione apre una nuova sessione. potresti stampare anche il session_id per vedere se corrisponde sempre allo stesso oppure cambia tutte le volte.