вернуть заголовок 404 просто:
<?php
if($loggedIn == false){
header("HTTP/1.0 404 Not Found");
} else{
//some other code
}
?>
Проблема только в том, что изменение заголовка на 404 не приведет к отображению страницы ошибки 404, а только к пустой странице с заголовком, установленным на 404 (поисковые роботы не будут индексировать страницу, но люди, посещающие сайт, не будут знать, что происходит ). Вы должны будете добавить 404 контента самостоятельно.
Пример:
<?php
if($loggedIn == False){
header("HTTP/1.0 404 Not Found");
?>
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>Not Found</h1>
<p>The requested URL <?=$_SERVER['PHP_SELF']?> was not found on this server.</p>
<hr>
<address>Apache/x.x.xx (Debian) Server at xxx.xxx.xxx.xxx Port x</address>
</body>
</html>
<?php
exit;
} else {
//some other code here
}
?>