Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Actionscript 3 Actionscript 3密码验证程序不使用';密码不匹配_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 Actionscript 3密码验证程序不使用';密码不匹配

Actionscript 3 Actionscript 3密码验证程序不使用';密码不匹配,actionscript-3,flash,Actionscript 3,Flash,我正在做一个flash密码验证项目,用户输入一个6到10个字符的密码,并且必须包含一个大写、一个小写和一个数字 当我测试程序并输入密码时,我在反馈_txt字段中得到“密码不匹配,请重试” 我有两个由Submit按钮的事件处理程序调用的函数:Same()和PasswordApproved()。相同的函数验证两次输入的密码。PasswordApproved函数验证密码是否符合指定的标准 我给了一个使用CharCodeAt来帮助PasswordApproved部分的提示,但我似乎不知道如何做到这一点

我正在做一个flash密码验证项目,用户输入一个6到10个字符的密码,并且必须包含一个大写、一个小写和一个数字

当我测试程序并输入密码时,我在反馈_txt字段中得到“密码不匹配,请重试”

我有两个由Submit按钮的事件处理程序调用的函数:Same()和PasswordApproved()。相同的函数验证两次输入的密码。PasswordApproved函数验证密码是否符合指定的标准

我给了一个使用CharCodeAt来帮助PasswordApproved部分的提示,但我似乎不知道如何做到这一点

代码如下:

submit_btn.addEventListener(MouseEvent.CLICK,Submit);
function Submit(e:MouseEvent):void {
var pass1:String = password1_txt.text;
var pass2:String = password2_txt.text;
if (Same(pass1,pass2) == true) {
if (PasswordApproved(pass1) == true)  {
        feedback_txt.text = "Your password was APPROVED."
        feedback_txt.textColor = 0x00FF00;
} else {
        feedback_txt.text = "DID NOT MEET QUALIFICATIONS. Try again."
        feedback_txt.textColor = 0xFF0000;
}
} else {
    feedback_txt.text = "Passwords DID NOT MATCH. Try again."
    feedback_txt.textColor = 0xFF0000;
}
password1_txt.text = "";
password2_txt.text = "";
stage.focus = password1_txt;
}
这就是我对函数所做的(我认为这就是它不工作的原因。我没有正确地编写它?或者它只是错误的):

函数相同(pass1,pass2:String):void{
var pass1:String=password1_txt.text;
var pass2:String=password2_txt.text;
}
函数密码已批准(pass1:String):String{
var pass1:String=“abchefghjkmnpqrstuvxyzqwertyuioplkjhgfdsazxcvnm0123456789”;
变量i:数值=0;
var-pass:String=“”;
var nLength:Number=pass1.length;
变量长度:数字=10

while(i您希望
相同的
函数做什么

function Same(pass1,pass2:String):void {
var pass1:String = password1_txt.text;
var pass2:String = password2_txt.text;
}
此函数返回
void
,这意味着当您编写类似于

if (Same(pass1,pass2) == true) {

因为这种情况永远不会发生。

您可以使用一条
if
语句和一个对象来完成您想要做的事情,例如:

var password_pattern:RegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10}$/; 
//                               │       │          │          │    
//                               │       │          │          └─> from 6 to 10 chars
//                               │       │          │
//                               │       │          └─> at least one upper letter
//                               │       │
//                               │       └─> at least one lower letter
//                               │
//                               └──> at least one digit

if(password1_txt.text == password2_txt.text && password_pattern.test(password1_txt.text)) {
    trace('Your password was APPROVED.');
} else {
    trace('Your password was NOT APPROVED.');
}
有关使用正则表达式的更多信息,请查看

编辑:

要正确使用
相同的
函数,您必须给它一个类型,在您的情况下,它是
布尔
,然后返回如下比较结果:

function Same(pass1, pass2:String): Boolean 
{
    return pass1 == pass2;
}
function PasswordApproved(pass:String):Boolean 
{
    var password_pattern:RegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10}$/;
    return password_pattern.test(pass);
}
编辑2:

您的
PasswordApproved()
函数只能验证您的密码,因为您已经验证了两个密码是相同的。因此可以如下所示:

function Same(pass1, pass2:String): Boolean 
{
    return pass1 == pass2;
}
function PasswordApproved(pass:String):Boolean 
{
    var password_pattern:RegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,10}$/;
    return password_pattern.test(pass);
}
那么你可以称之为:

if (Same(pass1, pass2)) {               // the same as : Same(pass1, pass2) == true
    if (PasswordApproved(pass1))  {     // the same as : PasswordApproved(pass1) == true
        feedback_txt.text = "Your password was APPROVED."
        feedback_txt.textColor = 0x00FF00;
    } else {
        feedback_txt.text = "DID NOT MEET QUALIFICATIONS. Try again."
        feedback_txt.textColor = 0xFF0000;
    }
} else {
    feedback_txt.text = "Passwords DID NOT MATCH. Try again."
    feedback_txt.textColor = 0xFF0000;
}

希望这能有所帮助。

我尝试了您的建议,但仍然得到“密码不匹配。请重试。”我发布了我的其余代码,但我认为相同的函数是它不起作用的原因。有没有办法确保两个密码匹配?@Tams正如我已经提到的,你甚至不需要
相同的
函数,因为你可以使用
if
语句验证你的文本字段是否相同,但是如果你喜欢al使用它的方式,我会编辑我的答案来为你更正。谢谢你,akmozo。我已经测试过了,现在一切都很好。@Tams在这种情况下,如果我的帖子是你想要的,你可以选择它作为接受的答案。我知道这是一个迟到的回复,但我又在做这个项目&注意到它似乎批准了任何密码,只要y匹配。我只需要批准长度在6到10个字符之间的密码,并且至少包含一个数字、一个大写字符和一个小写字符。我已经尝试了所有方法来解决这个问题,但我所做的一切似乎都不起作用。