Php验证不起作用。即使数据良好(已关闭)
对于我的网站,我想注册。在确认之前,一切都很顺利。因此,我必须在不同的文件(validation.php中的验证、registration.php中的注册和registrationForm.php中的注册表单)中完成这一切。在registration.php中,我有如下内容:Php验证不起作用。即使数据良好(已关闭),php,validation,Php,Validation,对于我的网站,我想注册。在确认之前,一切都很顺利。因此,我必须在不同的文件(validation.php中的验证、registration.php中的注册和registrationForm.php中的注册表单)中完成这一切。在registration.php中,我有如下内容: 我的问题是,无论我输入了好的数据还是完全错误的数据,我的验证总是说它是错误的 以下是我的验证代码(validation.php): 在每个return语句中检查$allChecked,如果未设置,则返回true,而不是
我的问题是,无论我输入了好的数据还是完全错误的数据,我的验证总是说它是错误的
以下是我的验证代码(validation.php):
在每个
return
语句中检查$allChecked
,如果未设置,则返回true,而不是$allChecked
return (isset($allChecked) ? $allChecked : true);
在函数
validateName
,validateSurname
,validatePassword
,validateUsername
中,返回的是原始字符串,而不是验证结果。在validateEmail
和checkIfPasswordsAreMatching
中,您将返回$allChecked,但如果所有检查都通过,则不会使用值初始化它,因此将返回null
您应该重写验证函数,使其看起来像这样
function validateName($string) {
if (strlen($string) < 2) {
$_SESSION['nameError'] = "Your name is too short. It has to be at least 2 characters long.";
return false;
}
if (preg_match('[\W]', $string)) {
$_SESSION['nameError'] = "Your name cannot contain any special character.";
return false;
}
return true;
}
函数validateName($string){
if(strlen($string)<2){
$\u会话['nameError']=“您的名称太短。它必须至少有2个字符长。”;
返回false;
}
if(preg_匹配('[\W]',$string)){
$\u会话['nameError']=“您的名称不能包含任何特殊字符。”;
返回false;
}
返回true;
}
似乎您真的希望函数返回布尔值
而不是字符串
,而且,$allChecked
在函数中不存在,因此它将抛出一个警告。我将$string更改为$allChecked,但现在即使我输入了正确的数据,它仍然会将我重定向回注册表。我不知道为什么我的错误没有显示出来,但我必须返回$allChecked
,因为我必须检查验证是否正常。当验证过程中出现问题时,它会自动将$allChecked
设置为False您正在返回它。。。如果失败了。这只是一个真/假指示符,如果验证没有失败,则不会像没有失败时那样返回真标志。由于作用域可变,在所有函数之前设置它不起作用。每个函数都无法“看到”它。更改后,它可以工作,但我得到的错误是,我的姓氏长度小于2个字符,即使键入10个字符。ok,我只是需要调整一些内容,现在它可以工作了。谢谢你的帮助;)如果答案解决了你的问题,考虑接受答案。然后返回此处,对勾号/复选标记执行相同操作,直到其变为绿色。这将通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,并可能希望发布(更多)答案。您将获得积分,其他人将被鼓励帮助您。我已经重写了函数,使它们看起来像上面的示例,但它仍然会在数据良好时将我重定向回注册表。我在会话中设置的错误没有显示出来。您可以编辑您的问题并将表单的html代码添加到问题中吗?