Переменные снаружи if ISSET не могут быть доступны внутри оператора if ISSET

У меня есть этот код:

function WriteLog($offer,$values) {
    $Filename = "./".$offer.date('Ymd').".txt";
    $fh = fopen($Filename, 'a') or die("can't open file");
    $filecontent = $values;
    $filecontent .= PHP_EOL;
    fwrite($fh,$filecontent);
    fclose($fh);
}

$aff = "100";

if (isset($HTTP_RAW_POST_DATA)) {
    echo $aff;

    WriteLog('events',$aff);

}

Вот проблема: $aff переменная недоступна. Повторяя $aff внутри if ISSET заявление не отображает значение $aff, Что, вероятно, вызывает это? Как я могу получить доступ к значению $aff переменная? Обратите внимание, что WriteLog() Функция была выполнена, но $aff не имеет значения. Пожалуйста, помогите мне с этим. Спасибо!

3 ответа

Решение

Это просто идея проверить значение $aff, входит ли он внутрь, если проверить или нет.

 $aff = "100";

 if (isset($HTTP_RAW_POST_DATA)) {
    var_dump($aff);
    WriteLog('events',$aff);
 }
 else{
    var_dump($aff); 
 }

$HTTP_RAW_POST_DATA содержит необработанные данные POST.

в твоем случае $HTTP_RAW_POST_DATA не содержит никакого значения, поэтому ваш if условие не выполнено и не распечатывается echo $aff; значение.

$aff = "100";

if (isset($HTTP_RAW_POST_DATA)) {
  echo $aff;

  WriteLog('events',$aff);
 }else{
   echo "HTTP_RAW_POST_DATA not set";
}

$HTTP_RAW_POST_DATA требует установки значения ini, использование входного потока должно работать без каких-либо специальных настроек ini, а также является "предпочтительным" методом.

вам нужно использовать альтернативный метод

$postData = file_get_contents('php://input')

документация здесь

Другие вопросы по тегам