Доброго всем времени суток! В этой статье для себя ничего не сможет найти полезного человек, который хоть когда-нибудь пробовал кодить на php, однако думаю новичкам в данной области может быть полезна для понятия основ.
Итак, наша задача — написать простейший калькулятор, который мог бы не только производить простейшие вычисления, но работал бы со всеми основными системами счисления, что нам самим может пригодиться в будущем. Код в данном случае получается небольшой, однако, в целях безопасности переменные лучше фильтровать. В своём примере я решил прибегнуть к регулярным выражениям, дабы была возможность для увеличения функциональности без внесения существенных изменений в код. Также следует отметить, что в случае с калькулятором обработчик мной было решено оставить в одном файле с разметкой, хотя в остальных случаях зачастую лучше отделять код от html-разметки. Собственно, нам понадобятся следующие html-формы:
— формы для ввода двух чисел с соответствующими атрибутами name='a' и name='b'
— форма для выбора действия. Сразу стоит подумать, а нужно ли нам записывать её значение в переменную и фильтровать. Для себя я решил, что это будет лишним, однако если делать нечего, то можно и сделать.
— формы для задания кодировки. Вообще желательно проверить, соответствует ли число заданной кодировке, однако и это действие я решил опустить. Если пользователь знает, что это такое, вряд ли он получит сообщение об ошибке.
Однако если это Вася из 5а, и он хочет немножко поиграться со скриптом, то в любом случае ничего интересного он не увидит.
А так собственно будет выглядеть наш код:
Посмотреть всё в связке можно в архиве со скриптом, скачать который можно здесь.
Итак, наша задача — написать простейший калькулятор, который мог бы не только производить простейшие вычисления, но работал бы со всеми основными системами счисления, что нам самим может пригодиться в будущем. Код в данном случае получается небольшой, однако, в целях безопасности переменные лучше фильтровать. В своём примере я решил прибегнуть к регулярным выражениям, дабы была возможность для увеличения функциональности без внесения существенных изменений в код. Также следует отметить, что в случае с калькулятором обработчик мной было решено оставить в одном файле с разметкой, хотя в остальных случаях зачастую лучше отделять код от 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 "Подсказка:
Должны быть заполнены все поля
";
?>
Посмотреть всё в связке можно в архиве со скриптом, скачать который можно здесь.