отсутствие default в switch
Я сделал калькулятор
<?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, я не знаю. |
Цитата:
Но если switch определяет переменную, и она по умолчанию не определена, то ее может определить и злоумышленник. Цитата:
Цитата:
|
Делаю калькулятор на php, что бы изучить php.
Я знаю, не надо делать на php, то, что можно сделать на JS, что бы не обращаться лишний раз к серверу. |
Часовой пояс GMT +3, время: 08:00. |