semplifica il tutto. L'utente è di due tipi:
1) utente senza cookie => non fai nulla.
2) utente con cookie => esegui il login.

avrai una funzione verifica_se_loggato() con questa struttura:
- (if) esiste la sessione loggato -> return TRUE;
- (else if ) esiste un cookie di login (AND) ed è "corretto" -> crei la sessione loggato & return TRUE;
- (else) non logato => return FALSE.

Dove sta il tuo problema?