if ISSET外部的变量不能在if ISSET语句内部访问


Variables outside if ISSET cannot be accessed inside the if ISSET statement

我有这个代码:

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变量不可访问。在if ISSET语句中回显$aff不会显示$aff的值。可能是什么原因造成的?如何访问$aff变量的值?请注意,执行了WriteLog()函数,但$aff没有值。请帮我做这个。谢谢

这只是一个检查$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')

文档在这里