PHP无法识别Flash undefined var

时间:2014-10-05 14:30:03

标签: php actionscript-3 flash-cs4

我遇到了Flash AS3和PHP 5.3.29的问题 我有一个我想要传递给PHP的var。在某些情况下,此var将是未定义的或具有值。

if(!isset($_POST['varName']) || empty($_POST['varName'])){
    $name = ">0";
    }
    else{
        $name = "=".$_POST['varName'];
        }

AS3代码:

var myVarsReq:URLRequest=new URLRequest(returnQuery);
    var phpMyVarsVar:URLVariables = new URLVariables();
        myVarsReq.method = URLRequestMethod.POST;
        phpMyVarsVar.varName = varName;  //varName = undefined;
        myVarsReq.data = phpMyVarsVar;
        phpMyVarsVar.sendRequest = "getResults";

我使用Charles跟踪Flash中的传出数据,当varName = undefined时,PHP!isset()没有将其设置为未设置。如果我强制varName varName =“”那么empty()函数可以很好地选择它。类似地,如果我给varName一个值,varName = 44它一切正常,那么我对isset做错了什么?

好的,我在之前和之后都回显了$ _POST var!isset。根据Flash Charles的$ POST var和!isset之前的echo是未定义的,而不是NULL“”或“undefined”,但PHP将其视为isset而不是!isset ...为什么PHP正在这样做?我不知道,但对于遇到同样问题的人来说: - 我的工作是将var强制为“空”而不是未定义。它不优雅或优雅,但它的作用......我仍然喜欢知道为什么!

2 个答案:

答案 0 :(得分:0)

Isset仅在变量未设置时才有效,您可能从动作脚本发送空或vanName = undefined

也许只是这样做

if($_POST['varName']=="undefined" || empty($_POST['varName'])){
    $name = ">0";
    }
    else{
        $name = "=".$_POST['varName'];
        }

答案 1 :(得分:0)

对于那些hwo仍然在想......经过一些调查和其他论坛的帮助后,似乎没有办法可以将一个未设置的var(!isset)从flash发送到PHP。根据PHP,它将始终以某种方式设置。 我的发现: - 当myVar被定义为数字但没有给出值

sendVartoPHP.varName = myVar:Number
PHP将其视为字符串(3)“NaN”

sendVartoPHP.varName = myVar:int
PHP将其视为字符串(1)“0”

sendVartoPHP.varName = myVar:String
PHP将其视为NULL

sendVartoPHP.varName = myVar

一个'无类型'var被PHP看作字符串(9)“undefined”

sendVartoPHP.varName = ""
PHP将其视为字符串(0)

sendVartoPHP.varName

甚至没有设置要发送的var(如上所述)被PHP视为NULL