Когда пользователь впервые заходит на сайт, у него будет пустой сеанс.Ваше первое предложение if () всегда будет иметь значение true, потому что в PHP есть правила приведения типов:
if($_SESSION['authorizedreferral'] == false)
Сессия пуста, поэтому в сеансе нет значения авторизованного реферала, поэтому PHP возвращает 'null' (и предупреждение о неустановленном ключе массива).В соответствии с правилами типизации PHP, null == false
- ИСТИНА.
Вам придется изменить свою логику, чтобы проверить, вошел ли пользователь в систему (НЕ сохраняйте это в файле cookie - сохраните его в сеансе), и перенаправьтена страницу входа в систему:
session_start();
if (!isset($_SESSION['loggedin']) || ($_SESSION['loggedin'] === false)) {
header("Location: login.php");
}
Другой альтернативой является использование оператора строгого сравнения:
if ($_SESSION['authorizedreferral'] !== true) {
...
}
, который будет успешным только в том случае, если действительно будет БЫЛО авторизованное значение реферала, для которого установлено логическое значениеправда.Тем не менее, вы все равно получите предупреждение о неустановленном массиве для совершенно новых пользователей.