如果在if ISSET语句中无法访问ISSET,则外部的变量

时间:2013-11-25 08:14:24

标签: php variables global-variables scope 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 个答案:

答案 0 :(得分:0)

$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";
}

答案 1 :(得分:0)

$ HTTP_RAW_POST_DATA requires an ini value to be set,使用输入流应该没有任何特殊的ini设置,也是'首选'方法。

您需要使用替代方法

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

the documentation is here

答案 2 :(得分:0)

它只是一个想法,如果检查或不检查它进入内部的$ aff的价值。

 $aff = "100";

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