Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.02.2017, 01:14
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

отсутствие 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, я не знаю.
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2017, 09:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от DivMan
Допустим я отправлю action="aaa" и произойдет логическая ошибка
Это не так. Все зависит от логики приложения, если действия по умолчанию нет, то и страшного не произойдет.
Но если switch определяет переменную, и она по умолчанию не определена, то ее может определить и злоумышленник.

Сообщение от DivMan
зачем хакеры подделывают формы? Ну для того, чтобы взламывать сайты. Как раз default бы это исправил
Ну это полная глупость. Для атаки формы в общем-то и не требуется, достаточно отправить данные под именами полей формы. А способов атак, и мест атаки предостаточно, и default никак не является лекарством от таких атак.

Сообщение от DivMan
А что можно написать в default, я не знаю.
А зачем калькулятор на РНР, какой в нем смысл?
Ответить с цитированием
  #3 (permalink)  
Старый 04.02.2017, 15:34
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Делаю калькулятор на php, что бы изучить php.

Я знаю, не надо делать на php, то, что можно сделать на JS, что бы не обращаться лишний раз к серверу.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
циклы switch Lammitta Общие вопросы Javascript 7 07.02.2016 10:01
Помощь в преобразовании строки json dimke931 jQuery 42 28.05.2015 14:13
Помогите разобраться с оператором switch psii Javascript под браузер 15 22.11.2014 23:10
switch и альтернативы - что использовать? Placido Общие вопросы Javascript 3 16.12.2013 04:55
Сравнить две структуры таблиц MySQL Shasoft Общие вопросы Javascript 2 11.07.2012 11:42