Tutto ciò che invia il cliente può essere falsificato (aggirando così il codice php, sia l'intestazione , ergo la stringa User agent o il cookie etc).
Penso dovrai lavorare con una matrice e magari salvi l'indice numerico della matrice nella variabile di sessione per poi confrontarlo.
Codice PHP:
//esempio con variabile di sessione
session_start(); //imposta o recupera $_SESSION
$my_arr[] = 1; //L'indice inizia da zero
$_SESSION['uniq'] = count($my_arr); // totale globale in questo script, potrebbero anche essere più utenti o semplicemente il singolo utente ma con più connessioni
//se utente già loggato usa più di un indice numerico significa più di una connessione
//occorre anche una stringa univoca per ogni connessione in modo da stabilire il limite di una connessione