HTTP_REFERER не всегда установлен, поэтому вы получаете уведомление. Браузер может отказаться от его отправки, или пользователь мог ввести URL-адрес непосредственно в свой браузер. Вы можете поместить это значение в сеанс , который имеет другие недостатки (например, несколько вкладок в браузере имеют одну и ту же страницу реферера). Я думаю, что URL-адрес по-прежнему лучший способ, если вы не нет формы, к которой вы можете добавить скрытое поле.
РЕДАКТИРОВАТЬ Кстати: не используйте URL в параметре get вслепую, который может быть снова подделан другими, как объяснено в ответах на этот другой вопрос .