Actionscript 3 密码验证程序与密码不匹配
Actionscript 3 Password Verifier Doesn't Match Passwords
我正在做一个 flash 密码验证项目,用户输入一个 6 到 10 个字符的密码,并且必须包含一个大写字母、一个小写字母和一个数字。
当我测试程序并输入密码时,我在 feedback_txt 字段中得到 "Passwords DID NOT MATCH. Try again."。
我有两个由提交按钮的事件处理程序调用的函数:Same() 和 PasswordApproved()。 Same 函数验证两次都输入了密码。 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;
}
这就是我所拥有的功能(我认为这就是它不起作用的原因。我没有正确编写它?或者它只是错误的):
function Same(pass1,pass2:String):void {
var pass1:String = password1_txt.text;
var pass2:String = password2_txt.text;
}
function PasswordApproved(pass1:String):String {
var pass1:String = "abchefghjkmnpqrstuvwxyzQWERTYUIOPLKJHGFDSAZXCVBNM0123456789";
var i:Number = 0;
var pass:String = "";
var nLength:Number = pass1.length;
var length:Number = 10
while(i<=length)
{
var num:Number = Math.round(Math.random() * nLength);
pass += pass1.charCodeAt(num);
i++;
}
return pass;
}
您希望 Same
函数做什么?
function Same(pass1,pass2:String):void {
var pass1:String = password1_txt.text;
var pass2:String = password2_txt.text;
}
此函数 returns void
,这意味着当您编写类似
的内容时,它不会做太多事情
if (Same(pass1,pass2) == true) {
因为永远不会是这样。
您可以使用一个 if
语句和一个 RegExp
对象来完成您想做的事情,例如:
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.');
}
有关使用正则表达式的更多信息,请查看 here。
编辑:
要正确使用你的 Same
函数,你必须给它一个类型,在你的情况下它是 Boolean
然后 return 比较结果如下:
function Same(pass1, pass2:String): Boolean
{
return pass1 == pass2;
}
编辑 2:
您的 PasswordApproved()
函数只能验证您的密码,因为您已经验证了两个密码是否相同。所以它可以是这样的:
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;
}
希望能帮到你。
我正在做一个 flash 密码验证项目,用户输入一个 6 到 10 个字符的密码,并且必须包含一个大写字母、一个小写字母和一个数字。
当我测试程序并输入密码时,我在 feedback_txt 字段中得到 "Passwords DID NOT MATCH. Try again."。
我有两个由提交按钮的事件处理程序调用的函数:Same() 和 PasswordApproved()。 Same 函数验证两次都输入了密码。 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;
}
这就是我所拥有的功能(我认为这就是它不起作用的原因。我没有正确编写它?或者它只是错误的):
function Same(pass1,pass2:String):void {
var pass1:String = password1_txt.text;
var pass2:String = password2_txt.text;
}
function PasswordApproved(pass1:String):String {
var pass1:String = "abchefghjkmnpqrstuvwxyzQWERTYUIOPLKJHGFDSAZXCVBNM0123456789";
var i:Number = 0;
var pass:String = "";
var nLength:Number = pass1.length;
var length:Number = 10
while(i<=length)
{
var num:Number = Math.round(Math.random() * nLength);
pass += pass1.charCodeAt(num);
i++;
}
return pass;
}
您希望 Same
函数做什么?
function Same(pass1,pass2:String):void {
var pass1:String = password1_txt.text;
var pass2:String = password2_txt.text;
}
此函数 returns void
,这意味着当您编写类似
if (Same(pass1,pass2) == true) {
因为永远不会是这样。
您可以使用一个 if
语句和一个 RegExp
对象来完成您想做的事情,例如:
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.');
}
有关使用正则表达式的更多信息,请查看 here。
编辑:
要正确使用你的 Same
函数,你必须给它一个类型,在你的情况下它是 Boolean
然后 return 比较结果如下:
function Same(pass1, pass2:String): Boolean
{
return pass1 == pass2;
}
编辑 2:
您的 PasswordApproved()
函数只能验证您的密码,因为您已经验证了两个密码是否相同。所以它可以是这样的:
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;
}
希望能帮到你。