PHP: у меня есть строка с математической операцией.Как мне его запустить? - PullRequest
0 голосов
/ 11 декабря 2011

(обратите внимание, это было введено пользователем, поэтому я не могу жестко его кодировать). В любом случае, пользователь вводит math.php? Do = 2 + 2, и в результате сценарий отбрасывает 4. Другое дело, что входные данные строго проверены, поэтому никакой вредоносной возможности нет. Мой метод тестирования это

function testMath($char){
    $array['math'] = Array("+", "-", "/", "*", "(", ")", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    foreach($char as $chr){
        if(!in_array($chr, $array['math'){
            return false;
        }
    }
    return true;
}

Было бы безопасно eval () что-то проверять этим? или я должен забыть про математику из введенного пользователем ввода?

Примечание, PHP выдает

Parse error: parse error in C:\Users\Josh\Desktop\App\html\new.php(24) : eval()'d code on line 1

Когда я пытаюсь что-то оценить (). Что не так?

1 Ответ

1 голос
/ 11 декабря 2011

Я не уверен, как вы использовали eval (), так как вы не опубликовали эту часть своего кода.Но если вы собираетесь оценить код, вам нужно указать переменную, в которую он будет сохранен:

Revised testMath:

function testMath($char){
    if(strlen($char) > 10) return false;
    $array['math'] = Array("+", "-", "/", "*", "(", ")", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
    foreach($char as $chr){
        if(!in_array($chr, $array['math'){
            return false;
        }
    }
    return true;
}

$math = $_GET['do'];
if(testMath($math)) eval("$result = " . $math . ";");

echo $math, ' = ', $result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...