json_encode не может избежать токена = - PullRequest
0 голосов
/ 12 марта 2019

Я использую функцию curl для вызова SlackAPI для отправки некоторого сообщения журнала Slack, и один раз код не выполняется, и во время отладки я обнаружил, что этот URL:

Core: Обработчик исключений (WEB): Uncaught TYPO3 Exception: # 1278450972: Класс SlackConfigurationRepository не существует. Отражение не удалось. | TYPO3 \ CMS \ Extbase \ Reflection \ Exception \ UnknownClassException в файле /var/www/html/typo3/sysext/extbase/Classes/Reflection/ReflectionService.php в строке 363. Запрошенный URL: http://somewhere/typo3/index.php?route=%2Ftools%2Fextebsionn2F&token=

не удалось правильно экранировать следующий код:

$room = ($room) ? $room : "test";
    $data = json_encode(array(
        "channel"       =>  "#{$room}",
        "text"          =>  $message,
        "icon_emoji"    =>  $icon,
        "username"      =>  'TYPO3: '.getenv("TYPO3_CONTEXT"),
    ));

    // You can get your webhook endpoint from your Slack settings
    $ch = curl_init("slackhookurl");
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;

, а $ message - предыдущий URL. результат всегда был пустым, и Slack не получал никаких сообщений, смена конца предыдущего URL на любой из oken=, ken= или tken= будет работать, и я получу сообщение в Slack. или изменив код на:

...
"text"          =>  htmlspecialchars($message),
...

также заставит его работать, что означает, что кодирование json не выполняется правильно.

Почему это поведение?

p.s. Сама ошибка сделана только для проверки кода.

...