Avatar ·

В чем разница между клиентской и серверной разработкой? Пример с PHP

Всем привет! Я только начал изучать веб-разработку и никак не могу понять разницу между клиентской и серверной частью. Вроде бы и там, и там код, но работают они по-разному. Например, я написал простой скрипт на PHP, который считает сумму двух чисел: ```php ``` Если я открою этот файл в браузере, я увижу результат. Но если я напишу то же самое на JavaScript, тоже увижу. В чем тогда разница? Я слышал, что PHP выполняется на сервере, а JavaScript — в браузере. Но что это значит на практике? Почему нельзя сделать всё только на клиенте или только на сервере? И как понять, какой код где должен выполняться? Объясните, пожалуйста, на пальцах, с примерами. Особенно интересует, как это работает в PHP. Заранее спасибо! <<>>

Клиент vs Сервер: главное отличие — где выполняется код

Вы абсолютно правы: и PHP, и JavaScript могут показать одинаковый результат в браузере. Но ключевое различие — место выполнения и момент времени.

Серверная часть (PHP) — "кухня ресторана"

Представьте, что вы заказываете пиццу. PHP — это повар на кухне. Вы (браузер) отправляете запрос ("хочу пиццу с суммой 5+10"), повар (сервер) готовит блюдо (вычисляет сумму) и отдаёт готовый результат (HTML-страницу). Вы видите только готовую пиццу, но не процесс. Код PHP вы никогда не увидите — только результат его работы.

Пример серверного кода на PHP:

<?php
// Это выполняется на сервере
$secret_number = 42; // Пользователь это не увидит
$user_input = $_POST['number'];
$result = $secret_number + $user_input;
echo "Результат: $result"; // Только это уйдёт в браузер
?>

Клиентская часть (JavaScript) — "сервировка стола"

JavaScript — это официант, который уже стоит у вашего стола. Он может прямо при вас досыпать соль, переставить тарелки, показать фокус. Всё происходит прямо в вашем браузере, без связи с сервером. Код JS виден любому, кто нажмёт "Посмотреть код страницы".

Пример клиентского кода:

<script>
// Это выполняется в браузере пользователя
let secret = 42; // Любой может это увидеть в инспекторе
let userNum = prompt("Введите число:");
alert("Результат: " + (secret + userNum));
</script>

Когда что использовать?

  • Сервер (PHP) — когда нужна безопасность и работа с данными:
    • Авторизация (нельзя проверять пароль на клиенте)
    • Работа с базой данных
    • Обработка платежей
    • Любая логика, которую нельзя показывать пользователю
  • Клиент (JS) — когда нужна скорость и интерактивность:
    • Анимации и визуальные эффекты
    • Валидация форм (проверка email до отправки)
    • Динамическое обновление части страницы
    • Работа с интерфейсом пользователя

Практический пример на PHP: форма обратной связи

Представьте, что пользователь отправляет сообщение. Вот как это работает:

<?php
// Серверная часть (PHP) - НИКОГДА не показывается пользователю
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = htmlspecialchars($_POST['name']); // Защита от XSS
    $message = htmlspecialchars($_POST['message']);
    
    // Сохраняем в базу данных (никто не должен видеть этот код)
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
    $stmt = $pdo->prepare("INSERT INTO messages (name, text) VALUES (?, ?)");
    $stmt->execute([$name, $message]);
    
    // Отправляем email администратору
    mail('admin@site.com', 'Новое сообщение', $message);
    
    echo "Спасибо, $name! Ваше сообщение отправлено.";
}
?>

<!-- Клиентская часть (HTML + JS) - пользователь видит это -->
<form method="POST">
    <input type="text" name="name" id="name">
    <textarea name="message" id="message"></textarea>
    <button type="submit">Отправить</button>
</form>

<script>
// Клиентская валидация - быстрая проверка до отправки на сервер
document.querySelector('form').addEventListener('submit', function(e) {
    let name = document.getElementById('name').value;
    if (name.length < 2) {
        alert('Имя должно быть длиннее 2 символов');
        e.preventDefault(); // Останавливаем отправку
    }
});
</script>

Итог: PHP готовит данные на сервере и отправляет готовую HTML-страницу. JavaScript "оживляет" эту страницу уже в браузере. Без PHP сайт не сможет сохранять данные. Без JavaScript сайт будет статичным и медленным для пользователя.

<<>>

Дополнение: почему нельзя сделать всё только на PHP или только на JS

Коллега выше отлично объяснил базу. Я добавлю про ограничения каждого подхода.

Почему нельзя всё на PHP (только сервер)?

Представьте, что каждое движение мыши отправляет запрос на сервер. Это будет дико медленно. Пример: вы хотите показывать подсказки при наведении на кнопку. Если делать это через PHP, придётся каждый раз перезагружать страницу. Это 1998 год. Клиентский JavaScript делает это мгновенно, без обращения к серверу.

Почему нельзя всё на JavaScript (только клиент)?

JavaScript в браузере не имеет доступа к файловой системе сервера, базе данных или email. Если вы напишете интернет-магазин только на JS, то:

  • Цены будут видны в коде страницы — любой сможет их изменить через инспектор
  • Корзина не сохранится после перезагрузки
  • Вы не сможете принять оплату — нет безопасного соединения с банком

Современный подход: работаем вместе

В реальных проектах PHP и JavaScript работают в связке. PHP генерирует начальную страницу (Server-Side Rendering), а JavaScript потом догружает данные через AJAX-запросы. Например, вы открываете страницу товара (PHP отдал HTML), а когда вы добавляете товар в корзину — JavaScript отправляет запрос к PHP-скрипту, который обновляет базу данных. Страница не перезагружается, данные сохраняются. Это best practice.