Es que $_SERVER["HTTP_REFERER"] no es un dato en el que puedas confiar, a veces ofrece datos y otras veces no.
Hay navegadores que no te envían nada en ese campo, por lo que PHP no tiene nada que mostrar en esos casos.
Otras veces puede ser que el usuario haya escrito directamente la ruta de la página en la barra de direcciones del navegador, por lo que no existiría nada en $_SERVER["HTTP_REFERER"], ya que no hay página que haya hecho las veces de "referer".