Esistono diverse tecniche per verificare se un utente è autenticato oppure no (e quindi è un utente anonimo).
Il modo più semplice, anche se non è molto elegante, è caricare la variabile globale $user e controllarne l'UID.
global $user; if ($user->uid) { // Codice per utenti autenticati. }
oppure, per verificare se l'utente non è loggato basta negare la condizione:
global $user; if (!$user->uid) { // Codice per utenti anonimi (o non autenticati). }
Esiste però un sistema più compatto ed elegante che consiste nell'usare la funzione user_is_logged_in()
presente su Drupal 6, Drupal 7 ed anche Drupal 8. Questa funzione non fa altro che verificare l'UID dell'utente, in maniera analoga a quella appena presentata nei due esempi qui sopra.
if (user_is_logged_in()) { // Codice per utenti autenticati. }
La funzione user_is_logged_in(), come si può dedurre dal codice, restituisce VERO o FALSO a seconda dello stato dell'utente corrente senza dover caricare la variabile globale all'interno del codice che si sta eseguendo.
Abbiamo quindi identificato un paio di vantaggi:
- Codice più compatto.
- Si evita di caricare in memoria una variabile.
Volendo, esiste anche la funzione opposta user_is_anonymous()
, anche se basta negare la precedente ed ottenere lo stesso risultato.