Для оступов лучше всего использовать пробелы. Большинство юзает 4 пробела.
А то у тебя всё как-то в перемешку, и табы и пробелы.
if (!$user_id)
$error = 'Доступ открыт только <a href="../login.php">авторизованным</a> посетителям';
if ($error) {
// ...
}
Возможно там были какие другие сообщения об ошибках, но на данный момент этот код не очень хорош и лучше сразу использовать одно условие вместо двух и лишней переменной $error.
if (isset($_POST['save'])) {
Я знаю, что так модно, но ещё моднее проверять метод запроса:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {}
$genre = isset($_POST['genre']) ? functions::checkin(mb_substr(trim($_POST['genre']), 0, 100)) : '';
$year = isset($_POST['year']) ? functions::checkin(mb_substr(trim($_POST['year']), 0, 50)) : '';
$director = isset($_POST['director']) ? functions::checkin(mb_substr(trim($_POST['director']), 0, 50)) : '';
$cast = isset($_POST['cast']) ? functions::checkin(mb_substr(trim($_POST['cast']), 0, 200)) : '';
$description = isset($_POST['description']) ? functions::checkin(mb_substr(trim($_POST['description']), 0, 2000)) : '';
Здесь можно цикл организовать.
Далее вниз по коду идёт куча echo, которые можно заменить одним.
Вот это вот:
?>
в конце файла писать не рекомендуется. Лучше опустить. Потому что к примеру, если у тебя там появится лишний пробельный символ, он скорее всего попадёт в ответ.
А если подключено десять таких файлов, то в итоге на выхоте в разметке в конце получим что-то вроде этого:
</body></html>
// Коммент чисто для примера. Переносы иначе стираются.