Я бы не стал смешивать процедурный код и определения функций.
Вместо этого переместите процедурный код (т. Е. session_start()
) в отдельный файл, например bootstrap.php
, и добавьте его вверху своих страниц.
Чтобы обеспечить включение функций и классов, определенных в других файлах, используйте require_once
. Таким образом, вы можете безопасно включать необходимые файлы, не сталкиваясь с ошибками переопределения.
Еще одна вещь, session_start()
должна быть вызвана перед отправкой чего-либо в браузер. Поместите его в самый верх ваших сценариев для безопасности.
Например
bootstrap.php
<?php
// for development only
ini_set('display_errors', 'On');
error_reporting(E_ALL);
session_start();
require_once 'functions.php';
functions.php
<?php
function validate_user()
{
//validate user
}
header.php
<h1>...
user_class.php
<?php
require_once 'functions.php';
class User { ...
some_page.php
<?php
require_once 'bootstrap.php';
?>
<!DOCTYPE html>
<html>
<head>...</head>
<body>
<?php include 'header.php' ?>
</body>
</html>