us3.php.net/manual/ru/function.header.php//header('Location: http://www.example.com/');
//header('Location: script.php');
//header('Location: script.php', true, 302);
//header('Location: script.php', true, 301);
<?php
$redirect_url = 'catalog'; // url: http://www.example.com/catalog
if(empty($_GET['id']) || !is_numeric($_GET['id'])) {
//id проекта не передан, или не число, редирект, и прекращение выполнения
header("Location: {$redirect_url}");
exit;
}
include 'admin/functions/database_project.php';
$projects = getProjects($_GET['id']);
if(empty($projects['id'])) {
// Этот редирект сработает, только если в файле database_project.php
//не отрисовывался html, не вызывался print, или echo
header("Location: {$redirect_url}");
exit;
}
$title = $projects['name']." | KINGWOOD ";
include "header_two.php";
Если же в файле database_project.php производится хоть какой-то вывод, header не сработает.
В этом случае код, связанный с получением данных, должен выполняться с буферизацией.
Также обратите внимание, что вызов проверки на существование полученных данных происходит до того, как подключаются какие-либо дальнейшие обработчики.
php.net/manual/ru/function.ob-start.php