Tu ejemplo:
Si te fijas está mal escrito, el primer parámetro de la funcion header() debe ser un string.
El string que has colocado tiene una zona (
?var= ) después de la variable que no es evaluado como un string y por lo tanto deja de ser un string.
Y el
'$znivel' al estar en comillas simples es evaluado directamente como un string, y no como una variable como supongo quieres.
También te falta el punto y coma final.
Tu codigo deberia ser distinto.
Tomando como ejemplo el que hay en la página de php.net en la documentación
Si te fijas es un string solo.
Para hacerlo más vistoso voy a asignar la variable $_SERVER['HTTP_REFERER'] a otra variable no tan compleja:
Fíjate en las comillas, son dobles al usar variables dentro del string.
NOTA: Debes tener en cuenta lo que te dicen en la documentación del HTTP_REFERER y es
'HTTP_REFERER'
Dirección de la pagina (si la hay) que emplea el agente de usuario para la pagina actual. Es definido por el agente de usuario. No todos los agentes de usuarios lo definen y algunos permiten modificar HTTP_REFERER como parte de su funcionalidad. En resumen, es un valor del que no se puede confiar realmente.
Así que sería bueno antes de utilizar la variable hacer comprobaciones sobre si existe y si es lo que queremos.
Un saludo y nos comentas.