¿Sabes qué es una cabecera hablando de HTTP?
Bueno, pues el referer es una cabecera, y dichas cabeceras las establece el navegador cuando inicia una petición nueva.
No siempre establece el referer, ¿por qué? Cada navegador tiene sus reglas, o bien, investiga el RFC al respecto.
Pero al final el hecho sigue siendo el mismo: con código PHP no puedes cambiar nada de dicho mecanismo.