Allora le variabili $_SERVER sono le superglobals che tengono i dati appunto del server.
Se lanci php da command line (ad esempio cron) la superglobal $_SERVER pertanto puo' non avere tutti i campi o non esistere(non ho testato molto da questo punto di vista).

Quindi si appunto il controllo del protocollo puo' essere un giusto campo da controllare.

Per le sessioni ti lacio qualche appunto dopo ora non ho tempo.

A dopo