最近一段时间,PHP凭借其功能强大,简单易用的特点被越来越多的人们所喜爱和接受,成为目前最为流行的脚本编程语言之一。本文将结合用户在使用PHP过程中经常容易出现的问题,包括语法错误,程序运行错误以及逻辑错误等展开详细的介绍,希望能够对那些目前正在学习PHP语言的用
PHP编程纠错指南(3)
这样,我们就知道问题是出现在VerifyPassword()函数的身上。检查了一遍函数之后,我们怀疑问题可能出现在“if”语句中。所以我们屏蔽到VerifyPassword()函数中的条件语句,并进行如下输出:
print “UserPassword =〉 $UserPassword, Password =〉 $Password,”;
print “Password==UserPassword =〉 ”.(int)($Password==$UserPassword).“〈BR〉”;
print “UserName =〉 $UserName, Name =〉 $Name, ”;
print “Name==UserName =〉”.(int)($Name==$UserName).“〈BR〉”;
(说明:我们使用(int)($Password==$UserPassword)语句将比较结果转化为整数0或1)
程序修改之后的实际输出结果如下:
UserPassword =〉 foo1ish, Password =〉 , Password==UserPassword =〉 0
UserName =〉 admin, Name =〉 , Name==UserName =〉 1
I’m sorry, the password is incorrect
这里,我们可以清楚的看出Password和Name两个变量都是空值,也就难怪判断语句不起作用了。
那么为什么$Password为空值呢?我们在程序的开头部分就已经明确的对$Password变量进行了赋值,但是因为某种原其变量值无法带入到VerifyPassword()函数中。回想一下PHP语言关于变量作用域的规定,我们可以立刻找到出现问题的原因,那就是如果要想在函数中使用变量,必须将该变量声明为全局变量。知道了错误的根源之后,我们在VerifyPassword()函数的第一行加入以下语句,然后重新运行程序:
global $Password, $Name;
程序运行结果如下:
UserPassword =〉 foo1ish, Password =〉 Secret, Password==UserPassword =〉 0
UserName =〉 admin, Name =〉 admin, Name==UserName =〉 1
The Password is correct
为什么?按理说我们应当得到密码不正确的错误提示。再一次仔细检查遍程序之后,终于发现原来我们把逻辑运算符“==”误用成“=”,这样就把$UserPassword变量的值赋给了$Password变量。把最后的这两处错误改正过来之后,完成的程序如下:
〈?
$Password=“Secret”;
$Name=“admin”;
function VerifyPassword ($UserPassword, $UserName){
global $Password, $Name;
if ($Password==$UserPassword && $Name==$UserName){
return 1;
}
else { return 0;}
}
if (VerifyPassword (“foo1ish”, “admin”)){
print “The Password is correct”;
}
else {
print “I’m sorry, the password is incorrect”;
}
?〉
执行程序得到如下结果:
I’m sorry, the password is incorrect.
输入正确密码重新运行时,得到以下结果:
The Password is correct
编辑 引用 报告 评分 回复
更多软件资讯请点击PCHOME首页

网友评论