Вы перенаправляете до , устанавливаете значение сеанса:
header('Location: user.php');
$_SESSION['userKey'] = $userKey;
Затем вы проверяете значение и, если его там нет, перенаправляете обратно:
if (isset($_SESSION['userKey'])){
//...
}
else {
header('Location: index.php');
die();
}
Так как это не было установлено, это перенаправляет назад.Это продолжается в бесконечном цикле между двумя страницами.
Установите значение перед перенаправлением:
$_SESSION['userKey'] = $userKey;
header('Location: user.php');