我遇到了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强制为“空”而不是未定义。它不优雅或优雅,但它的作用......我仍然喜欢知道为什么!
答案 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