Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 1
Регистрация: 24.03.2013
Сообщений: 304
1

Отсутствие default в switch

04.02.2017, 01:01. Показов 1085. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я сделал калькулятор

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php error_reporting(-1);
ini_set('display_errors', 'On');
header('Content-Type: text/html; charset=utf-8');
?>  
    
<form action="" method="POST" style="border: 1px solid red; width: 400px; float: left;">
    <div style="width: 300px;">Введите число 1 <input type="text" name="number1"></div>
    <div style="width: 300px;">Введите число 2 <input type="text" name="number2"></div>
    <div class="operator" style="padding: 10px 0;">
        Выберите знак оператора<br>
        <label>плюс <input type="radio" name="op" value="+"></label> |
        <label>минус <input type="radio" name="op" value="-"></label> |
        <label>умножить <input type="radio" name="op" value="*"></label> |
        <label>разделить <input type="radio" name="op" value="/"></label> |
    </div>
    <input type="submit" name="submit" value="Получить результат">
</form>
 
<div class="result" style="width: 200px; height: 100px; border: 1px solid red; float: left;">
<span style="display: block; padding: 10px 0;">Результат</span>
<?php
 
function calc($num1,$num2,$action = '+'){
    if(is_numeric($num1) && is_numeric($num2)){
        switch($action){
            case '+':
                return $num1 . ' + '. $num2 . ' = ' . ($num1 + $num2);
                break;
            case '-':
                return $num1 . ' - '. $num2 . ' = ' . ($num1 - $num2);
                break;
            case '*':
                return $num1 . ' * '. $num2 . ' = ' . ($num1 * $num2);
                break;
            case '/':
                if($num2 == 0){
                    return 'На 0 делить нельзя';
                }
                else{
                    return $num1 . ' / '. $num2 . ' = ' . ($num1 / $num2);
                }
                break;
            }   
        }
    else{
        return 'Введите число';
    }
}
 
if(isset($_POST['number1'], $_POST['number2'])){
    if(isset($_POST['op'])){
        echo calc($_POST['number1'], $_POST['number2'], $_POST['op']);
    }
    else{
        echo calc($_POST['number1'], $_POST['number2']);
    }
    
}
 
?>
</div>
И мне говорят, то, что не указал default из-за этого есть уязвимости для хакеров.

Цитирую:

Допустим я отправлю action="aaa" и произойдет логическая ошибка, так как у тебя отсутствует default. default стоит добавлять, чтобы предусмотреть разное поведение.

Твой вопрос: зачем хакеры подделывают формы? Ну для того, чтобы взламывать сайты. Как раз default бы это исправил


А что можно написать в default, я не знаю.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2017, 01:01
Ответы с готовыми решениями:

Поместить switch в switch
Всем привет. Есть работающий код который обрабатывает строку GET и берет от туда данные Вот урл...

Switch Default ошибка
Привет. Подскажите где ошибка? Ругается на default Random randNum = new Random(); ...

Switch default и cin
Проблема в следующем: Если в case есть cin то после завершения кейса выбирается default, как...

Оператор Switch - default
У меня есть якобы такой код на С++ Builder`e. Я сделал к каждому сase свою формулу. в ListBoxe у...

6
Эксперт PHP
3881 / 3222 / 1350
Регистрация: 01.08.2012
Сообщений: 10,867
04.02.2017, 02:48 2
Очевидно же,
PHP
1
return 'Некорректная арифметическая операция';
или как-то так.

Кстати, после return писать break уже нет смысла, свитч и так закончит работу.
0
3 / 3 / 1
Регистрация: 24.03.2013
Сообщений: 304
04.02.2017, 09:36  [ТС] 3
Всё равно я не знаю, как сделать правильно
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
04.02.2017, 09:44 4
Цитата Сообщение от Dimon3x Посмотреть сообщение
Всё равно я не знаю, как сделать правильно
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
switch($action){
            case '+':
                return $num1 . ' + '. $num2 . ' = ' . ($num1 + $num2);
            case '-':
                return $num1 . ' - '. $num2 . ' = ' . ($num1 - $num2);
            case '*':
                return $num1 . ' * '. $num2 . ' = ' . ($num1 * $num2);
            case '/':
                if($num2 == 0){
                    return 'На 0 делить нельзя';
                }
                else{
                    return $num1 . ' / '. $num2 . ' = ' . ($num1 / $num2);
                }
            default:
                return 'Тебе меня не сломать русский хакер!';
            }   
        }
0
Эксперт PHP
3881 / 3222 / 1350
Регистрация: 01.08.2012
Сообщений: 10,867
04.02.2017, 09:45 5
Dimon3x,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
switch($action)
{
    case '+':
        return $num1 . ' + '. $num2 . ' = ' . ($num1 + $num2);
    case '-':
        return $num1 . ' - '. $num2 . ' = ' . ($num1 - $num2);
    case '*':
        return $num1 . ' * '. $num2 . ' = ' . ($num1 * $num2);
    case '/':
        if($num2 == 0)
            return 'На 0 делить нельзя';
        else
            return $num1 . ' / '. $num2 . ' = ' . ($num1 / $num2);
    default:
        return 'Некорректное действие';
}
0
3 / 3 / 1
Регистрация: 24.03.2013
Сообщений: 304
04.02.2017, 10:07  [ТС] 6
А что делать с action, я так и не понял.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
04.02.2017, 10:40 7
Цитата Сообщение от Dimon3x Посмотреть сообщение
А что делать с action, я так и не понял.
Ничего. за вас уже всё сделали Если вы думаете, что вам про action формы говорили, то нет, речь про $action из вашей функции.
0
04.02.2017, 10:40
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2017, 10:40
Помогаю со студенческими работами здесь

Недопонимание с switch и выводом default
Задание: сделать так что бы при вводе целого числа (от 1 до 7 которые соответствует дням недели, 1-...

Возвращение значения из switch-default
Здравствуйте! У меня задача на создание двох фунций, которые вычисляют среднее значение двух и трех...

В операторе switch всегда срабатывает default
Привет всем, вот такая проблема ввожу указанные в case буквы, в любом случий срабатывает default,...

Var,switch,case,break,default-JavaScript
На экран выводится всё время &quot;равняется 100&quot;, так как я хочу сделать: case&gt;или&lt; 100 нельзя? var...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Использование Go (Golang) в Highload-проектах: преимущества и особенности
bytestream 25.01.2025
В мире высоконагруженных систем выбор правильного инструментария играет ключевую роль в успехе проекта. Go (Golang) представляет собой относительно молодой язык программирования, который быстро. . .
Откуда у float лишние цифры в конце дробной части. Представление чисел с плавающей точкой
bytestream 25.01.2025
При разработке программного обеспечения часто возникает необходимость работать с вещественными числами, которые содержат дробную часть. В современных компьютерных системах такие числа представляются. . .
Как использовать глобальную переменную в функции в Python
bytestream 25.01.2025
В программировании на Python глобальные переменные представляют собой особый тип переменных, которые доступны для использования во всех частях программы, включая различные функции, классы и модули. . . .
Как в цикле обойти все элементы map в Java
bytestream 25.01.2025
В разработке на Java одной из наиболее востребованных структур данных является интерфейс Map, который предоставляет эффективный способ хранения и управления парами "ключ-значение". Разработчики. . .
Для чего нужен UserManager.isU­serAGoat(­) в Android и как это использовать
bytestream 25.01.2025
В мире Android-разработки существует множество интересных и порой загадочных функций, о которых знают далеко не все разработчики. Одной из таких функций является метод UserManager. isUserAGoat(),. . .
Как обойти масси в JavaScript. Всё о циклах
bytestream 25.01.2025
JavaScript представляет собой мощный язык программирования, широко используемый в веб-разработке, где массивы и циклы являются фундаментальными концепциями для эффективной работы с данными. Массив в. . .
Как сделать, чтобы существующая ветка отслеживала удалённую в Git. Связывание локальных и удалённых веток
bytestream 25.01.2025
В разработке программного обеспечения системы контроля версий стали неотъемлемой частью процесса создания качественного программного продукта. Эти инструменты позволяют разработчикам эффективно. . .
Как проверить, что файл НЕ существует с помощью Bash
bytestream 25.01.2025
В системном администрировании проверка существования файлов является фундаментальной операцией, особенно при написании скриптов на Bash. Правильная обработка ситуаций, когда файл отсутствует,. . .
Как проверить, что строка пустая, неопределена или null в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript разработчики регулярно сталкиваются с необходимостью проверки строковых значений на различные состояния. Валидация данных является критически важным. . .
Как проверить существование ключа в объекте или массиве в JavaScript
bytestream 25.01.2025
При разработке веб-приложений на JavaScript программисты постоянно сталкиваются с необходимостью работать с объектами и массивами. Эти структуры данных являются фундаментальными элементами языка и. . .
Как создать ArrayList из массива (array) в Java
bytestream 25.01.2025
При разработке программного обеспечения на языке Java программисты часто сталкиваются с необходимостью эффективного управления наборами данных. Массивы и ArrayList являются двумя фундаментальными. . .
Как сгенерировать случайные целые числа (int) в указанном диапазоне в Java
bytestream 25.01.2025
В программировании генерация случайных чисел является важнейшим инструментом для решения множества практических задач. От создания игровых механик до реализации алгоритмов машинного обучения, от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru