assert () не обрабатывает код автоматически - PullRequest
0 голосов
/ 05 сентября 2018

Моя версия PHP - 7.2.9-1. В следующем упражнении вводится код assert:

extract($_POST);
function goAway() {
    error_log("Hacking attempt.");
    header('Location: /error/');
}

if (!isset($pi) || !is_numeric($pi)) {
    goAway();
}

if (!assert("(int)$pi == 3")) {
    echo "This is not pi.";
} else {
    echo "This might be pi.";
}

Операция assert () оценивает код PHP и содержит ввод пользователя. Однако я использовал pi=phpinfo(), а сервер не phpinfo(), а только выводит This might be pi.. Может ли кто-нибудь объяснить это?

1 Ответ

0 голосов
/ 05 сентября 2018

Из руководства по PHP:

Утверждения не должны использоваться для обычных операций во время выполнения, таких как проверки входных параметров. Как правило, ваш код всегда должен работать правильно, если проверка утверждений не активирована.

Вполне возможно, что утверждения просто отключены в вашей конфигурации PHP. Проверьте файл php.ini или assert_options().

Кроме того, на основе предоставленного вами примера кода это НЕ , для чего предназначен assert.

...