Verificare lo stato dell'utente corrente in Drupal 6, 7 e anche Drupal 8

Come verificare se l'utente corrente è loggato o non autenticato

Se si sta sviluppando del codice PHP in un sito Drupal può esserci l'esigenza di sapere se un utente è autenticato o meno. Ecco come fare per per stabilirlo.

Verificare lo stato dell'utente corrente in Drupal 6, 7 e anche Drupal 8

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.