Pull to refresh

PHP начинающим на примере калькулятора

Доброго всем времени суток! В этой статье для себя ничего не сможет найти полезного человек, который хоть когда-нибудь пробовал кодить на php, однако думаю новичкам в данной области может быть полезна для понятия основ.

Итак, наша задача — написать простейший калькулятор, который мог бы не только производить простейшие вычисления, но работал бы со всеми основными системами счисления, что нам самим может пригодиться в будущем. Код в данном случае получается небольшой, однако, в целях безопасности переменные лучше фильтровать. В своём примере я решил прибегнуть к регулярным выражениям, дабы была возможность для увеличения функциональности без внесения существенных изменений в код. Также следует отметить, что в случае с калькулятором обработчик мной было решено оставить в одном файле с разметкой, хотя в остальных случаях зачастую лучше отделять код от html-разметки. Собственно, нам понадобятся следующие html-формы:

— формы для ввода двух чисел с соответствующими атрибутами name='a' и name='b'
— форма для выбора действия. Сразу стоит подумать, а нужно ли нам записывать её значение в переменную и фильтровать. Для себя я решил, что это будет лишним, однако если делать нечего, то можно и сделать.
— формы для задания кодировки. Вообще желательно проверить, соответствует ли число заданной кодировке, однако и это действие я решил опустить. Если пользователь знает, что это такое, вряд ли он получит сообщение об ошибке.
Однако если это Вася из 5а, и он хочет немножко поиграться со скриптом, то в любом случае ничего интересного он не увидит.

А так собственно будет выглядеть наш код:

<?php
//подавливаем вывод замечаний знаком @ перед регулярным выражением. Ображаем внимание на синтаксис регулярного выражения, если не умеемих составлять.
if (@preg_match("|^[-0-9\.A-F]{1,12}$|i", $_POST['a']))
{
if (preg_match("|^[-0-9\.A-F]{1,12}$|i", $_POST['b']))
{
//Если проверка на корректность ввода чисел пройдена, и левых данных нет, записываем их в переменные
//и сразу же конвертируем в десятичную систему счисления.
$a = base_convert($_POST['a'], $_POST['as'], 10);
$b = base_convert($_POST['b'], $_POST['bs'], 10);
if ($_POST['d'] == 1) $otvet = $a + $b;
elseif ($_POST['d'] == 2) $otvet = $a - $b;
elseif ($_POST['d'] == 3) $otvet = $a * $b;
elseif ($_POST['d'] == 4) $otvet = $a / $b;
elseif ($_POST['d'] == 5) $otvet = pow($a, $b);
elseif ($_POST['d'] == 6) $otvet = pow($a, 1/$b);
echo 'Ответ: ' . base_convert($otvet, 10, $_POST['os']) . '
';
}
}
//если первое число пустое (т.е. страница грузится первый раз), то выводим подсказку - скрытое
//сообщение об ошибке.
else echo "Подсказка:
Должны быть заполнены все поля
";
?>


Посмотреть всё в связке можно в архиве со скриптом, скачать который можно здесь.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.