У меня проблема с Flash AS3 и PHP 5.3.29
У меня есть переменная, которую я хочу передать в PHP. Этот 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 до и после! Isset. Переменная $ POST в соответствии с Flash Charles и эхом до! Isset была неопределенной, а не NULL «» или «undefined», однако PHP видит это как isset, а не! Isset … Почему PHP делает это? Я не знаю, но для тех, кто сталкивался с той же проблемой: — моя работа заключалась в том, чтобы заставить переменную как «» пустую, а не неопределенную. Это не изящно или элегантно, но это работает … Я все еще хотел бы знать почему, хотя!
Isset работает, только если переменная вообще не установлена, вы, вероятно, отправляете пустой или vanName = undefined из сценария действия
может просто сделать это
if($_POST['varName']=="undefined" || empty($_POST['varName'])){
$name = ">0";
}
else{
$name = "=".$_POST['varName'];
}
Тем не менее, все еще задаются вопросом … После некоторого исследования и помощи с другого форума выясняется, что вы не можете отправить переменную, которая не установлена (! Isset) из флэш-памяти в 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 как string (9) «undefined»
sendVartoPHP.varName = ""
рассматривается PHP как строка (0)
sendVartoPHP.varName
даже установка переменной для отправки (как указано выше) рассматривается PHP как NULL