Невозможно подставить заранее в файл. Иначе будет подставлено всем пользователям, которые зашли на сайт.
Нужно подставлять значение динамически - в момент вывода страницы на экран. Но приведённый тобой код никуда ничего не выводит. Он лишь производит редирект на одну из двух страниц.
Хорошо отформатированный очень плохой PHP-код.
@new - использование @ отключает реакцию PHP на ошибки. Т.е. если ошибка будет, ты будешь долго не понимать, в чём её причина. Использовать @ в этом месте абсолютно бессмысленно.
$user_name = $_POST['user_name'];
$password = $_POST['password'];
Отсутствие экранирования значений - дыра в безопасности. Да здравствует SQL-инъекция!
И куда надёжнее, если это будет не подстановка значения (даже экранированного) в запрос, а параметризованный запрос. Это всегда было удобно в PDO и недавно стало удобно в mysqli: вместо привязки параметров через bind_param() можно задавать значения параметров непосредственно в execute().
$password = md5($password.'');
Дыра в безопасности. Никто в здравом уме не использует md5 для хэширования паролей. Для этого есть специальные функции:
https://www.php.net/manual/ru/ref.password.php
$user['user_name'] - доступ у элементу массива $user без проверки того, что $user - это вообще массив (если пользователь не найден, в $user будет null, а если произошла ошибка - false).
Вызов setcookie не влияет на содержимое $_COOKIE. Потому, if делает не то, что ты ожидаешь.
Хранение информации об авторизации в куках - очень плохая идея. Для этого в PHP есть сессии.
Как уже сказали, == false не имеет смысла.