О насБлогКонтакты
Технологии8 ноября 2002 г. 4 мин 92Обновлено: 18 мая 2026 г.

Первые сайты на PHP3 в 2002: как мы верстали до CSS, без фреймворков и без Stack Overflow

AunimedaAunimeda
📋 Содержание

Первые сайты на PHP3 в 2002: как мы верстали до CSS, без фреймворков

2002 год. Интернет в Бишкеке - это dial-up по телефонной линии, 33-56 кбит/с, оплата по времени подключения. Отключить телефон на час - значит заплатить за час интернета. Разработчики качали документацию и сохраняли локально, потому что каждый раз заходить на php.net было дорого.

В этих условиях мы делали первые коммерческие сайты.


Стек 2002 года

Язык: PHP 3.x и PHP 4.0-4.2. PHP5 ещё не вышел (он появится в 2004). Никакого ООП в привычном смысле - классы в PHP3 были, но большинство писало процедурный код.

База данных: MySQL 3.23. Транзакций нет (InnoDB был опционален и редко используем). mysql_query() напрямую - никакого PDO (оно появится в 2005).

Вёрстка: таблицы (<table>). CSS существовал, но IE6 реализовывал его частично и с ошибками. Для стабильного пиксель-перфект результата в IE6 и Netscape 4 - только таблицы.

Редактор: Dreamweaver MX или HomeSite. Многие использовали Dreamweaver в WYSIWYG-режиме - это считалось нормальным, не стыдным.


Как выглядел реальный PHP-код 2002 года

<?php
// Подключение к базе - в каждом файле, без config.php сначала
$conn = mysql_connect("localhost", "root", "password");
mysql_select_db("mysite");
// Никакого mysql_real_escape_string - его ещё нет в PHP3
// Была mysql_escape_string, но её использовали редко

// Типичный запрос - SQL-инъекции были нормой, о них почти не писали
$id = $_GET['id'];
$result = mysql_query("SELECT * FROM news WHERE id=$id");
$row = mysql_fetch_assoc($result);

// HTML + PHP вперемешку в одном файле
?>
<html>
<head><title><?= $row['title'] ?></title></head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF">
<!-- bgcolor и text - атрибуты тега body, CSS не доверяли -->

<table width="780" border="0" cellpadding="5" cellspacing="0">
  <tr>
    <td width="160" valign="top" bgcolor="#EEEEEE">
      <!-- Левый сайдбар: меню из таблицы -->
      <?php include("menu.php"); ?>
    </td>
    <td width="600" valign="top">
      <font face="Arial" size="2" color="#333333">
        <!-- font тег - потому что CSS работал не везде -->
        <b><?= $row['title'] ?></b><br><br>
        <?= nl2br($row['body']) ?>
      </font>
    </td>
  </tr>
</table>
</body>
</html>

Это не плохой код для 2002 года. Это типичный код 2002 года. SQL-инъекции не осознавались как угроза - большинство разработчиков о них просто не читало, потому что статей на русском почти не было.


Вёрстка таблицами: почему это имело смысл

CSS-позиционирование (float, position: absolute) в Netscape 4 работало не так, как в IE5, а в IE6 - не так, как в Mozilla. Два-трёхколоночный макет с помощью CSS в 2002 году требовал хаков под каждый браузер:

/* Это В 2002 ГОДУ НЕ РАБОТАЛО ОДИНАКОВО ВО ВСЕХ БРАУЗЕРАХ */
.sidebar {
    float: left;
    width: 160px;
}
.content {
    margin-left: 170px; /* В IE6: иногда работало, иногда нет */
}

Таблицы работали везде одинаково. Вложенные таблицы с width в пикселях давали предсказуемый результат в IE4, IE5, IE6, Netscape 4, Opera 6. Это была надёжность, а не невежество.

<!-- Двухколоночный макет таблицами - работает в любом браузере 2002 года -->
<table width="760" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr>
    <td width="160" valign="top">
      <table width="155" border="0" cellspacing="0" cellpadding="3">
        <!-- Меню в отдельной таблице для надёжности -->
        <tr><td class="menu-item"><a href="/about">О нас</a></td></tr>
        <tr><td class="menu-item"><a href="/services">Услуги</a></td></tr>
      </table>
    </td>
    <td width="600" valign="top">
      <!-- Основной контент -->
    </td>
  </tr>
</table>

Где искали помощь без Google

phpclub.ru - главный русскоязычный PHP-форум. Ответ на вопрос мог прийти через день, мог через неделю. Некоторые вопросы оставались без ответа.

php.net - официальная документация. Но качать её полностью локально, потому что dial-up.

Книги: «PHP и MySQL для начинающих» (Люк Веллинг, Лаура Томсон) на русском языке вышла в 2003 - стала главным источником знаний для поколения разработчиков.

Коллеги: передавали знания лично. Приём «посмотри как у других сделано» - View Source в браузере - был стандартной практикой обучения.

Stack Overflow откроется в 2008. До него - форумы, IRC, книги и View Source.


Переломный момент: PHP 4.3 и первые MVC-паттерны

Примерно в 2003-2004 годах в русскоязычном сообществе начали появляться статьи про «шаблоны» (Smarty) и разделение логики и отображения. Не MVC в полном смысле, но первый шаг:

// Попытка отделить PHP-логику от HTML (2003-2004)
// Отдельный файл для логики
$id = (int)$_GET['id']; // (int) - первый способ защиты от инъекций
$result = mysql_query("SELECT * FROM news WHERE id=$id");
$data['news'] = mysql_fetch_assoc($result);

// Подключить шаблон (тогда ещё не Smarty, просто отдельный php-файл)
include('templates/news_detail.php');
// В templates/news_detail.php - только HTML + вывод переменных

Что осталось от того времени

Ничего из конкретных технологий. PHP3, mysql_* функции, таблицы для вёрстки, <font> тег - всё это исчезло или запрещено.

Остался принцип: понимай инструмент глубже, чем требуется для текущей задачи. Разработчики 2002 года, которые понимали почему таблицы работают надёжнее CSS в тех браузерах, а не просто копировали чужой код - быстро перешли на CSS, когда браузеры подтянулись. Понимание позволяет адаптироваться. Механическое знание «как это делается» устаревает вместе с инструментами.

Читайте также

DHTML-навигация в Бишкеке 2001 года: выпадающие меню на чистом JavaScriptaunimeda
Технологии

DHTML-навигация в Бишкеке 2001 года: выпадающие меню на чистом JavaScript

В 2001 году выпадающее меню без Flash и без перезагрузки страницы - это было то, что отличало профессиональный бишкекский сайт от любительского. DHTML на JavaScript + CSS. Работало в IE5 и Netscape 6. Вот как мы это делали, что ломалось и почему 300 мс до сих пор актуально.

Classic ASP и первые корпоративные веб-системы Бишкека (2000)aunimeda
Технологии

Classic ASP и первые корпоративные веб-системы Бишкека (2000)

В 2000 году первые бишкекские компании задумались о системах онлайн-авторизации: закрытые разделы сайта, личные кабинеты для клиентов, защищённые прайс-листы. Те, у кого были Windows-серверы, выбирали Classic ASP. Полный код системы входа, реалии разработки в Кыргызстане 2000 года.

Java-апплеты: интерактивный веб в Бишкеке 1999 годаaunimeda
Технологии

Java-апплеты: интерактивный веб в Бишкеке 1999 года

В 1999 году Java-апплеты обещали революцию: настоящие приложения прямо в браузере. На dial-up 33 кбит/с с задержкой 200-400 мс до европейских серверов - загрузка JVM занимала 30-60 секунд. Бишкекские разработчики всё равно их писали. Код, опыт, провал.

Нужна IT-разработка для вашего бизнеса?

Разрабатываем сайты, мобильные приложения и AI-решения для бизнеса в Кыргызстане. Бесплатная консультация.

Получить консультацию Все статьи