我是PHP的新手,所以我很抱歉,如果这看起来像一团糟......我正在尝试使用以下三个函数验证表单 - checkName,checkEmail和checkMessage。我遇到的问题是当我提交表单时,它总是显示第一个错误,即使输入正确。谁能告诉我我做错了什么?
function checkName(){
if($name == ''){
print "Please enter your name!<br />";
return false;
}
else{
if(strlen($name)<2) {
print "Your name should be more than 1 characters long!<br />";
return false;
}
else{
return true;
}
}
}
function checkEmail(){
if($from == '') {
print "Please enter your email address!<br />";
return false;
}
else{
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $from)){
print "Please enter a valid email address!<br />";
return false;
}
else{
return true;
}
}
}
function checkMessage(){
if($message == '') {
print "Please enter your message!<br />";
return false;
}
else{
if(strlen($message)<10) {
print "Your message should be more than 10 characters long!<br />";
return false;
}
else{
return true;
}
}
}
if($validation == ''){
$a = checkName();
$b = checkEmail();
$c = checkMessage();
$result = array($a, $b, $c);
return $result;
答案 0 :(得分:3)
将变量传递给测试函数以进行检查。你现在拥有它的方式,它会假设你正在使用$name,$message,$email
的全局变量。这需要在函数中使用global
关键字(或其他一些选项),但被认为是不好的做法。最好传递变量
$a = checkName($name);
$b = checkEmail($email);
$c = checkMessage($message);
// Pass variable to function
function checkName($name){
if($name == ''){
print "Please enter your name!<br />";
return false;
}
else{
if(strlen($name)<2) {
print "Your name should be more than 1 characters long!<br />";
return false;
}
else{
return true;
}
}
}
function checkEmail($email){
// etc...
}
function checkMessage($message){
// etc...
}
顺便说一句,作为经常需要维护其他人编写的旧PHP代码的人,我可以告诉您高度建议您不要使用$a,$b,$c
之类的变量名称。而是让它们像$nameResult, $emailResult, $messgeResult
一样可读。
答案 1 :(得分:0)
在函数中,您的变量未定义。如果完全定义了它们,则必须在函数中使用global $variable
来在函数中定义它们
例如: 坏:
$var = 'Hello';
function fun () {return $var;}
echo fun () . ' world';
好:
$var = 'Hello';
function fun () {
global $var;
return $var;
}
echo fun () . ' world';