Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php flash AS3 if/else语句存在问题_Php_Flash_Actionscript 3_If Statement - Fatal编程技术网

Php flash AS3 if/else语句存在问题

Php flash AS3 if/else语句存在问题,php,flash,actionscript-3,if-statement,Php,Flash,Actionscript 3,If Statement,我试图在flash中使用if语句来检查一个变量(从PHP获取)是否等于某个值,但是否出了问题 代码: function completeHandler(event:Event):void{ // Load the response from the PHP file var data:URLVariables = new URLVariables(event.target.data); var return_stat = data.return_stat_verify;

我试图在flash中使用if语句来检查一个变量(从PHP获取)是否等于某个值,但是否出了问题

代码:

function completeHandler(event:Event):void{
    // Load the response from the PHP file
    var data:URLVariables = new URLVariables(event.target.data);
    var return_stat = data.return_stat_verify;



    if (return_stat == "FAILED"){
    status_txt.text = "dsfdsfg";
        }
        else if (return_stat == "PASSED"){

        var first_nme = data.return_first;
        var second_nme = data.return_second;
    var email_addr = data.return_email;
    var user_domain = data.return_domain;
    var user_name = data.return_username;

    gotoAndPlay("finish");

    first_txt.text = first_nme;
    second_txt.text = second_nme;
    email_txt.text =  email_addr;
    username_txt.text = user_name;
    domain_txt.text = user_domain;


    }
function completeHandler(event:Event):void{
    // Load the response from the PHP file
    var data:URLVariables = new URLVariables(event.target.data);
    var return_stat = data.return_stat_verify;

    if (return_stat == "FAILED"){
    status_txt.text = "dsfdsfg";
    }
    else if (return_stat == "PASSED"){

    var first_nme = data.return_first;
    var second_nme = data.return_second;
    var email_addr = data.return_email;
    var user_domain = data.return_domain;
    var user_name = data.return_username;

    gotoAndPlay("finish");

    first_txt.text = first_nme;
    second_txt.text = second_nme;
    email_txt.text =  email_addr;
    username_txt.text = user_name;
    domain_txt.text = user_domain;


    }
    else {
        status_txt.text = "I hate flash";

    }
现在,当我测试时,什么都没有发生。然后,我尝试在其中放置一个简单的
else
语句,以查看
if
else if
语句是否都失败

代码:

function completeHandler(event:Event):void{
    // Load the response from the PHP file
    var data:URLVariables = new URLVariables(event.target.data);
    var return_stat = data.return_stat_verify;



    if (return_stat == "FAILED"){
    status_txt.text = "dsfdsfg";
        }
        else if (return_stat == "PASSED"){

        var first_nme = data.return_first;
        var second_nme = data.return_second;
    var email_addr = data.return_email;
    var user_domain = data.return_domain;
    var user_name = data.return_username;

    gotoAndPlay("finish");

    first_txt.text = first_nme;
    second_txt.text = second_nme;
    email_txt.text =  email_addr;
    username_txt.text = user_name;
    domain_txt.text = user_domain;


    }
function completeHandler(event:Event):void{
    // Load the response from the PHP file
    var data:URLVariables = new URLVariables(event.target.data);
    var return_stat = data.return_stat_verify;

    if (return_stat == "FAILED"){
    status_txt.text = "dsfdsfg";
    }
    else if (return_stat == "PASSED"){

    var first_nme = data.return_first;
    var second_nme = data.return_second;
    var email_addr = data.return_email;
    var user_domain = data.return_domain;
    var user_name = data.return_username;

    gotoAndPlay("finish");

    first_txt.text = first_nme;
    second_txt.text = second_nme;
    email_txt.text =  email_addr;
    username_txt.text = user_name;
    domain_txt.text = user_domain;


    }
    else {
        status_txt.text = "I hate flash";

    }
现在,当我测试时,flash会在
status\u txt
字段中打印出“我讨厌flash”。因此,我随后替换
status\u txt
的值,以打印出使用if语句的变量(
return\u stat
):

然后当我测试它时,它显示通过或失败。这意味着问题不在PHP中,因为它返回了正确的数据,问题在
If
语句中

我在这里完全迷路了。我看不出我做错了什么,有什么想法吗

谢谢各位

编辑

我的PHP代码:

<?php

require ('installation_5_functions.php');
require ('cust_ver_i.php');


$username=$_POST['userName'];

$ident_encrypt=$_POST['userPsswrd'];


verify($reference_id, $username, $ident_encrypt);


if ($ref_id_stat == "FAILED"){

$retrn_stat = "FAILED";

print "return_value=$error_ref_id&return_stat_verify=$retrn_stat";  

exit();

}
if($ref_id_stat == "PASSED"){

if ($user_verify_status == "FAILED"){

$retrn_stat = "FAILED";


print "return_value=$user_verify_error&return_stat_verify=$retrn_stat";

}

elseif ($user_verify_status == "PASSED"){

if ($cust_status == "DEACT"){

$retrn_stat = "FAILED";

print "return_value=$display_error_stat&return_stat_verify=$retrn_stat";    

}
elseif ($cust_status == "ACTIVE"){

$retrn_stat = "PASSED"; 

print "return_first=$cust_first&return_second=$cust_last&return_email=$cust_email&return_username=$cust_username&return_domain=$cust_domain&return_stat_verify=$retrn_stat";

}

}
}



?>

可能您没有从服务器返回字符串?尝试检查返回的类型


很多时候,空白会出现问题。例如,如果

data.return\u stat\u verify==“失败”
当您将其放入文本字段中时,不会出现任何差异。要查看是否存在这种情况,您可以尝试:

// place a character on both sides. That will show whether there is whitespace
status_txt.text = "|"+return_stat+"|";

编辑 看起来下面就是这种情况。这意味着您需要调整您的输入。首先,确保PHP文件中没有多余的空格(最后一行是
?>
还是结尾有空行?
?>
之外的空行会导致您描述的问题

然后,为了安全起见,也检查输入。就我个人而言,我会使用它,因为它是最明确的,因为大多数语言都有一些方法来做一些非常类似的事情。如果没有,我会使用正则表达式来解决这个问题:

// using two to be explicit
// /^\s+/m this removes all occurrences of one or more spaces at the beginning
return_stat = return_stat.replace(/^\s+/m, "");
// /\s+$/m this removes all occurrences of one or more spaces at the end
return_stat = return_stat.replace(/\s+$/m, "");
当然,你可以直接在线:

// use the global flag if you are doing this all at once.
return_stat = return_stat.replace(/^\s+|\s+$/mg, "");

好的,我已经设法解决了这个问题。我将
exit();
放在php脚本中每个if/else语句的底部,它现在似乎正在工作。这样做毫无意义,但它成功了


感谢您的帮助。

问题可能是由关闭的php标记引起的:
?>
见:


该标记后面的任何空白都将附加到任何打印/回送输出中。虽然html页面中的额外空白不会造成问题,但在您的情况下,这是一个问题。很容易忽略这一点,因此在这些情况下,最好避免使用结束标记,或者确实确保标记后面没有任何字符。

这是什么意思<代码>当我测试它时?显然
return_stat
的值既不是“通过”也不是“失败”,更可能是“null”或“未定义”。我的意思是,当我从服务器(在浏览器中)查看swf时。不,return_stat确实返回了“失败”或“通过”的正确值这就是我告诉它在PHP中要做的事情。因此,PHP返回return_stat_verify的值为“PASSED”或“FAILED”,然后flash获取该值作为变量值(return_stat的值)。不,return_stat的值不是“null”或“undefined”…正如我在问题中所说的,我使用else语句在status_txt字段中打印return_stat的值,然后打印正确的值(“通过”或“失败”),请检查这一点,希望能有所帮助。您应该使用firebug检查php中的返回变量。但是我检查了php文件。任何地方都没有空格(不应该有空格的地方)。刚刚尝试了那个代码。我得到了“| FAILED(还有另一个|但在新行中。)”所以第二个|在“|FAILED”@Nav下面,这就是你的错误所在:字符串中有一个新行字符(“FAILED\n”)。不知怎的,你在php代码中给变量添加了一个“换行符”。你可以通过修剪
return\u stat
来解决它。好的,那么修剪return\u stat是什么意思。我该如何修剪它呢?谢谢。@Nav删除所有空白:
return\u stat=return\u stat.replace(/\s/m,”);
\s
表示任何空格字符(包括换行符);/../m之后的
m
表示“对此正则表达式执行多行搜索”。它已中断,因为您的逻辑已关闭。如果要进行多个比较,其中只有一个比较为真,请使用开关(真)语句,并将您的比较放在案例行“case(return_stat==”FAILED”):“更容易理解的代码,您永远不会有这个问题。嘿。但是我如何避免php结束标记,因为代码当时不会运行。或者它会运行吗?@Nav没有它运行得很好。请参阅注释:“文件末尾的PHP块的结束标记是可选的[…]”