Статьи из цикла

В отличии от статьи Сложение двух чисел на HTML + PHP тут рассматривается пример web-приложения без использования HTML — только серверная часть. Подобные приложения могут использоваться для клиент-серверных приложений, когда клиент отправляет на сервер запрос, сервер формирует ответ и возвращает клиенту.

В статье рассматривается вариант с POST запросом.

Приготовления

Нам потребуется так или иначе сервер, на котором просчитываются PHP скрипты. Можно установить локальный сервер (например, тут описано) через установку связки Apache + PHP + MySQL + phpMyAdmin, можно воспользоваться уже готовыми сборками (Denver, Open Server, WampServer и др.). Можно использовать сервер на каком-нибудь виртуальном хостинге и так далее. В общем, вариантов много.

Далее предполагается, что у вас есть такой сервер, вы умеете запускать в браузере PHP скрипты (если не знаете, то или тут почитайте или в любом другом месте в учебниках по PHP).

Постановка задачи

На сервер поступает HTTP запрос с двумя переменными a и b. Сервер должен считать два числа, сложить их и вернуть эту сумму клиенту. Переменные a и b передаются через GET параметры, то есть через адресную строку. Пример такого запроса:

https://[путь с скрипту]?a=2&b=3

Пример скрипта на моем сайте:

https://harrix.dev/blog/2017/add-2-num-php-get/demo?a=2&b=3

Если данные не переданы, то должно вывестись слово error.

PHP скрипт

Общий вид PHP скрипта index.php приведен ниже:

<?php
if (isset($_GET['a'])) $string_a = htmlentities($_GET['a']);
if (isset($_GET['b'])) $string_b = htmlentities($_GET['b']);

$isEmpty = false;
if ((empty($string_a)) || (empty($string_b))) $isEmpty = true;

if (!$isEmpty) {
  $a = (int)$string_a;
  $b = (int)$string_b;

  $c = $a + $b;

  echo $c;
}
else {
  echo "error";
}
?>

Разберем его.

В эти строчках мы считываем наши параметры в виде строковых переменных из GET параметров. Причем стараемся себе обезопасить, экранировав служебные символы функцией htmlentities, чтобы нельзя было передать через значения переменных зловредный код:

if (isset($_GET['a'])) $string_a = htmlentities($_GET['a']);
if (isset($_GET['b'])) $string_b = htmlentities($_GET['b']);

Значения GET переменных могут отсутствовать (например, вместо http://[путь с скрипту]?a=2&b=3 был запрос http://[путь с скрипту]). В этом случае сервер должен вывести error. Поэтому проверяем переменные на пустоту содержимого:

$isEmpty = false;
if ((empty($string_a)) || (empty($string_b))) $isEmpty = true;

Переводим строчки в числа:

$a = (int)$string_a;
$b = (int)$string_b;

А дальше складываем числа и выводим сумму клиенту через команду echo.

Проверка работы

Рассмотрим работу скрипта на тестовом примере. У меня скрипт залит по адресу demo/ (если перейти по ссылке без параметров, то должно выдаваться error).

При вызове demo/ мы получим error, так как данные не переданы.

При вызове demo?a=2 мы получим error, так как переменная b не передана.

При вызове demo?a=2&b=3 мы получим 5.

При вызове demo?a=harrix&b=3 мы получим 3, так как строка harrix была переведена в число 0.

Дополнительные ссылки

В статье рассмотрен пример web-приложения на Java, который делает тоже самое.

В статье и статье рассматривается пример создания клиентского приложения на Android Studio.

В статье статье рассматривается пример создания клиентского приложения на HTML.