О насБлогКонтакты
Веб-разработка22 июня 2002 г. 3 мин 113Обновлено: 22 июня 2026 г.

LAMP-стек: фундамент веб-разработки (2002)

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

В 2002 году казахстанский веб-разработчик имел два пути. Первый - Windows Server + IIS + SQL Server + ASP. Лицензии, дорогой хостинг, Windows-администратор. Для большинства проектов это было нереалистично.

Второй - LAMP: Linux, Apache, MySQL, PHP. Всё бесплатно. Shared-хостинг у Astel или KazNIC: Apache уже стоит, MySQL включён, PHP в комплекте. За $8-15 в месяц.

В то время российские хостинги с такой ценой были доступнее местных. Казахстанские провайдеры только начинали предлагать PHP/MySQL хостинг - Nursat, Astel, первые частные хостеры. Мы разворачивали сайты туда по FTP, иногда через dial-up 33.6 kbps, и это работало.


PHP 4 - язык, которым строился Казнет

<?php
// config.php - стандарт 2002 года
// PDO не было. MySQLi не было в PHP 4.
// Только mysql_* функции.

define('DB_HOST', 'localhost');
define('DB_USER', 'webapp');
define('DB_PASS', 'secret123');
define('DB_NAME', 'kazsite');

$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS);
if (!$conn) {
    die('Ошибка подключения: ' . mysql_error());
}
mysql_select_db(DB_NAME, $conn);
mysql_query("SET NAMES 'utf8'", $conn);

// Важно: register_globals был ON по умолчанию.
// GET/POST параметры автоматически становились переменными.
// Это была катастрофа безопасности.
// В Казнете 2002 почти все сайты были уязвимы к SQL-инъекциям.
?>
<?php
// katalog.php - типичный каталог товаров
require_once 'config.php';

// Хоть какая-то защита от инъекций:
$cat_id = isset($_GET['cat']) ? (int)$_GET['cat'] : 0;
$page   = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;
$limit  = 20;
$offset = ($page - 1) * $limit;

$where = $cat_id > 0
    ? "WHERE category_id = $cat_id AND active = 1"
    : "WHERE active = 1";

$count_res = mysql_fetch_assoc(
    mysql_query("SELECT COUNT(*) AS n FROM products $where", $conn)
);
$total_pages = ceil($count_res['n'] / $limit);

$res = mysql_query(
    "SELECT id, name, price, image FROM products $where
     ORDER BY id DESC LIMIT $offset, $limit", $conn
);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Каталог</title>
</head>
<body>
<?php while ($row = mysql_fetch_assoc($res)): ?>
  <div>
    <a href="product.php?id=<?php echo $row['id']; ?>">
      <?php echo htmlspecialchars($row['name']); ?>
    </a>
    - <?php echo number_format($row['price'], 0); ?> тенге
  </div>
<?php endwhile; ?>
</body>
</html>

Apache .htaccess: обязательное знание

# .htaccess - каждый PHP-разработчик знал его наизусть

RewriteEngine On
RewriteBase /

# Красивые URL: /tovar/123 → product.php?id=123
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^tovar/([0-9]+)/?$ product.php?id=$1 [L,QSA]

# Отключаем register_globals - обязательно!
php_flag  register_globals  Off
php_flag  display_errors    Off

# Листинг директорий - закрыть!
Options -Indexes

# Защита конфига
<FilesMatch "^config\.php$">
    Order allow,deny
    Deny from all
</FilesMatch>

Типичная уязвимость: SQL-инъекция 2002 года

<?php
// ТАК ДЕЛАЛИ ПОЧТИ ВСЕ в 2002 - это уязвимо!
$id = $_GET['id'];  // register_globals: просто $id

// URL: product.php?id=1 OR 1=1--
// Этот запрос вернёт ВСЕ товары:
$result = mysql_query("SELECT * FROM products WHERE id = $id");

// Правильно (минимальная защита 2002):
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

// Или для строк - mysql_real_escape_string:
$name = mysql_real_escape_string($_GET['name']);
$result = mysql_query(
    "SELECT * FROM products WHERE name = '$name'"
);

// Параметризованные запросы появятся в PHP 5.1 (PDO, 2005).
// До тех пор - ручное экранирование, которое часто забывали.
?>

Почему LAMP победил в Казнете

Цена. Хостинг с PHP+MySQL стоил в 5-10 раз дешевле Windows-хостинга. Для казахстанского стартапа или малого бизнеса 2002 года это было решающим.

Порог входа. PHP был прост для изучения. HTML-разработчик мог начать вставлять PHP в страницы и получать результат немедленно. Никакой компиляции, никакого апп-сервера.

Сообщество. phpbb.com, php.net, SQL-ошибки гуглились на русском. Казахстанские разработчики учились у российских коллег по тем же форумам.

К 2005 году LAMP лежал в основе 90% новых коммерческих сайтов в Казнете. Все первые казахстанские интернет-магазины, новостные порталы, корпоративные сайты - LAMP. Это основа, на которой вырос современный казахстанский IT.

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

Разработка сайта в Алматы 2026: цены, технологии и как выбрать студиюaunimeda
Веб-разработка

Разработка сайта в Алматы 2026: цены, технологии и как выбрать студию

Сколько стоит разработка сайта в Алматы в 2026 году? Сравниваем технологии, типы сайтов и даём практическое руководство по выбору IT-партнёра для бизнеса в Казахстане.

Разработка сайта в Алматы в 2026 году - цены, сроки, технологииaunimeda
Веб-разработка

Разработка сайта в Алматы в 2026 году - цены, сроки, технологии

Сколько стоит разработка сайта в Алматы в 2026 году, какие технологии используют профессионалы и как выбрать подрядчика для бизнеса в Казахстане.

Node.js: JavaScript вышел на сервер (2009)aunimeda
Веб-разработка

Node.js: JavaScript вышел на сервер (2009)

8 ноября 2009 года Райан Даль представил Node.js на JSConf EU. Веб-сервер в 10 строк, 10 000 одновременных соединений без потоков. V8 на сервере. Для казахстанских разработчиков, работавших с PHP+Apache, это был совершенно другой способ думать о сервере.

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

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

Разработка сайтов

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