Сложение двух чисел на PHP с передачей параметров через GET (серверное приложение)
В отличии от статьи Сложение двух чисел на HTML + PHP тут рассматривается пример web-приложения без использования HTML — только серверная часть. Подобные приложения могут использоваться для клиент-серверных приложений, когда клиент отправляет на сервер запрос, сервер формирует ответ и возвращает клиенту.
В статье рассматривается вариант с POST запросом.
Приготовления
Нам потребуется так или иначе сервер, на котором просчитываются PHP скрипты. Можно установить локальный сервер (например, тут описано) через установку связки Apache + PHP + MySQL + phpMyAdmin, можно воспользоваться уже готовыми сборками (Denver, Open Server, WampServer и др.). Можно использовать сервер на каком-нибудь виртуальном хостинге и так далее. В общем, вариантов много.
Далее предполагается, что у вас есть такой сервер, вы умеете запускать в браузере PHP скрипты (если не знаете, то или тут почитайте или в любом другом месте в учебниках по PHP).
Постановка задачи
На сервер поступает HTTP запрос с двумя переменными a и b . Сервер должен считать два числа, сложить их и вернуть эту сумму клиенту. Переменные a и b передаются через GET параметры, то есть через адресную строку. Пример такого запроса:
Пример скрипта на моем сайте:
https://harrix.dev/blog/2017/add-2-num-php-get/demo?a=2&b=3
Если данные не переданы, то должно вывестись слово error .
PHP скрипт
Общий вид PHP скрипта index.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=harrix&b=3 мы получим 3 , так как строка harrix была переведена в число 0 .
Дополнительные ссылки
В статье рассмотрен пример web-приложения на Java, который делает тоже самое.
В статье и статье рассматривается пример создания клиентского приложения на Android Studio.
В статье статье рассматривается пример создания клиентского приложения на HTML.
В отличии от статьи Сложение двух чисел на HTML + PHP тут рассматривается пример web-приложения без использования HTML — только серверная часть. Подобные приложения могут использоваться для клиент-серверных приложений, когда клиент отправляет на сервер запрос, сервер формирует ответ и возвращает клиенту.
В отличии от статьи Сложение двух чисел на HTML + PHP тут рассматривается пример web-приложения без использования HTML — только серверная часть. Подобные приложения могут использоваться для клиент-серверных приложений, когда клиент отправляет на сервер запрос, сервер формирует ответ и возвращает клиенту.
Harrix
Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.
Сумма двух чисел php
Помните школьные основы арифметики? Описанные ниже операторы работают так же.
Пример | Название | Результат |
---|---|---|
+$a | Идентичность | Конвертация $a в int или float , что более подходит. |
-$a | Отрицание | Смена знака $a . |
$a + $b | Сложение | Сумма $a и $b . |
$a — $b | Вычитание | Разность $a и $b . |
$a * $b | Умножение | Произведение $a и $b . |
$a / $b | Деление | Частное от деления $a на $b . |
$a % $b | Деление по модулю | Целочисленный остаток от деления $a на $b . |
$a ** $b | Возведение в степень | Возведение $a в степень $b . |
Операция деления («/») возвращает число с плавающей точкой, кроме случая, когда оба значения являются целыми числами (или строками, которые преобразуются в целые числа), которые делятся нацело — в этом случае возвращается целое значение. Для целочисленного деления используйте intdiv() .
При делении по модулю операнды преобразуются в целые числа ( int ) (путём удаления дробной части) до начала операции. Для деления по модулю чисел с плавающей точкой используйте fmod() .
Результат операции остатка от деления % будет иметь тот же знак, что и делимое — то есть, результат $a % $b будет иметь тот же знак, что и $a . Например:
echo ( 5 % 3 ). «\n» ; // выводит 2
echo ( 5 % — 3 ). «\n» ; // выводит 2
echo (- 5 % 3 ). «\n» ; // выводит -2
echo (- 5 % — 3 ). «\n» ; // выводит -2
Сложение двух чисел на HTML + PHP
В статье рассказывается как создать приложение сложения двух чисел на HTML + PHP.
Приготовления
Нам потребуется так или иначе сервер, на котором просчитываются PHP скрипты. Можно установить локальный сервер (например, тут описано, как я делаю у себя, но это лишь одна из миллиона инструкций в интернете) через установку связки Apache + PHP + MySQL + phpMyAdmin, можно воспользоваться уже готовыми сборками (Denver, Open Server, WampServer и другие). Можно использовать сервер на каком-нибудь виртуальном хостинге и так далее. В общем, вариантов много.
Далее предполагается, что у вас есть такой сервер, вы умеете запускать в браузере PHP скрипты.
Создание болванки
Создаем текстовой документ под именем index.php .
Закинем в него простую болванку HTML5 документа:
lang="ru"> charset="utf-8" /> name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> Программа сложения двух чисел
Если мы сохраним документ и откроем в браузере, то увидим пустое белое окно, так как ничего видимого в документе пока нет — это просто болванка с шапкой, где располагаются некоторые мета-тэги (по сути, их тоже можно было выкинуть), и пустое тело.
Если же вы открыли в браузере и увидели тот, текст, который написан выше, то, значит, вы неправильно открываете в браузере PHP скрипт.
Наполнение HTML
Так как нам нужно приложение, которое будет складывать два числа, то нужно два поля ввода текстовой информации. Следовательно, их нужно будет размещать в некоторой форме. Поэтому в теле HTML документа разместим такую форму:
action="index.php"> name="a" type="text" value="1" /> /> name="b" type="text" value="1" /> />
Каждое поле имеет своё имя name с названием переменной a и b . Также они имеют начальное наполнение.
Нам нужна кнопка для вычислений:
type="submit" value="Сложить два числа" /> />
При клике на кнопку будет вызываться тот скрипт, который у нас прописан в форме в свойстве action .
Общий документ будет иметь вид:
lang="ru"> charset="utf-8" /> name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> Программа сложения двух чисел action="index.php"> name="a" type="text" value="1" /> /> name="b" type="text" value="1" /> /> type="submit" value="Сложить два числа" /> />
Если мы сохраним документ и его откроем, то получим следующее:
PHP код
Теперь поговорим о том, какая логика вычислений будет в нашем приложении. Когда мы нажимаем на кнопку, то браузер собирает информацию из формы, и отправляет ее на сервер, говоря, какой скрипт должен обработать данную информацию.
Мы указали в качестве обрабатывающего скрипта тот же самый файл, который и отправил информация index.php .
То есть наш скрипт должен уметь работать в двух режимах: когда мы просто открыли PHP скрипт index.php и никуда не нажимали на кнопки, и когда мы его открываем с некоторой отправленной ему информацией из браузера клиента, когда пользователь нажал на кнопку формы.
Как можно отследить эти состояния и понять, в каком режиме запустил пользователь скрипт index.php ?
Всё просто. Если переменные a и b в глобальном массиве передаваемой информации есть, и они не пустые, то значит, пользователь нажал на кнопку (или имитировал). Если же переменных нет или они пустые, то пользователь открывает PHP скрипт пустой, например, перейдя по ссылке.
Запрограммируем это. Добавим в начало документ конструкцию того, что внутри нее будем писать не HTML код, а PHP код:
Внутри нее и будем писать наш код.
Считаем передаваемую информацию:
if (isset($_GET['a'])) $string_a = htmlentities($_GET['a']); if (isset($_GET['b'])) $string_b = htmlentities($_GET['b']);
Что мы тут делаем? Вначале функцией isset() мы проверяем, а есть ли в глобальных переменных GET наши переменные. Если же они есть, то считываем из глобального массива $_GET переменную. При этом не просто считаем, а прогоним через функцию htmlentities() , которая экранирует всякие символы в строке. Зачем это нужно? А чтобы злобные пользователи не отправили зловредный код в PHP скрипт. Функция htmlentities() делает считываемую строку безопасной, например, для вывода на экран.
Итак, переменные мы считали. Теперь проверим, что же содержится в переменных $string_ a и $string_b . Если они пустые, то, значит, пользователь, просто запустил скрипт, если же нет, то нажал на кнопку.
Будем хранить информацию о таком режиме в переменной $isEmpty . Вначале предположим, что будто человек нажал на кнопку:
Но если обе переменных пусты, то, значит, на кнопку пользователь не нажимал:
$isEmpty = false; if ((empty($string_a)) && (empty($string_b))) $isEmpty = true;
Теперь мы знаем, в каком режиме запущен PHP скрипт. В случае, если переменные содержат информацию, то проводим вычисления, иначе же приравняем переменные к начальных значениям:
if ($isEmpty==false) $a = (int)$string_a; $b = (int)$string_b; $c = $a + $b; > else $a = 1; $b = 1; >
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==false) $a = (int)$string_a; $b = (int)$string_b; $c = $a + $b; > else $a = 1; $b = 1; > ?> lang="ru"> charset="utf-8"> name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> Программа сложения двух чисел action="index.php"> name="a" type="text" value="1"> name="b" type="text" value="1"> type="submit" value="Сложить два числа">
Теперь мы можем использовать наши результаты. Вначале в полях ввода выведем значения переменных a и b . Если кнопка не нажималась, то они будут равны 1 и 1 . Если нажимались, то будут равны считанных значениям.
Данные строчки нужно поменять:
name="a" type="text" value="1"> name="b" type="text" value="1">
name="a" type="text" value=" echo $a;?>"> name="b" type="text" value=" echo $b;?>">
То есть мы внедрили в HTML код PHP код с выводом теста с помощью функции echo .
И, наконец, мы можем вывести после формы наш ответ опять с помощью команды echo , но только в случае, если кнопка была нажата. Для этого мы добавили проверку if ($isEmpty == false) (более красиво можно записать так if (!$isEmpty) ):
if ($isEmpty == false) echo $a." + ".$b." o">.$c; > ?>
Итого, полный 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 == false) $a = (int)$string_a; $b = (int)$string_b; $c = $a + $b; > else $a = 1; $b = 1; > ?> lang="ru"> charset="utf-8"> name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> Программа сложения двух чисел action="index.php"> name="a" type="text" value=" echo $a;?>"> name="b" type="text" value=" echo $b;?>"> type="submit" value="Сложить два числа"> if ($isEmpty == false) echo $a." + ".$b." o">.$c; > ?>
Если сохраним файл, запустим его, и нажмем на кнопку, то получим следующее:
В статье рассказывается как создать приложение сложения двух чисел на HTML + PHP.
В статье рассказывается как создать приложение сложения двух чисел на HTML + PHP.
Harrix
Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.