[英]smarter php login form validation
我已经开始学习PHP和MySQL了一段时间,但我仍然认为自己是一个初学者!
我创建了一个简单的注册表单,还编写了PHP代码对其进行验证。
我想知道是否有更好,更聪明的方法来实现我的目标。
我的表单基于5个输入: username
, password
, repeat password
, email
, repeat email
并且它通过POST发送,它们的内容和一个按钮的值。 执行提交时,它必须检查以下条件:
username
长度不能超过20个字符 password
和repeat password
必须相等 email
和repeat email
必须是有效的电子邮件,并且必须相等 我写了这个函数(它在一个类中),它可以完成我上面说的所有操作,但是我可以改进它以减少重复的代码吗? 还有其他PHP函数可用于此吗? 最后,我的代码有多安全?
就这个!
public function processRegisterInfo($POSTArray = array())
{
if (count(array_filter($POSTArray)) > 1) // button don't have to be counted
{
if (count(array_filter($POSTArray)) < 6)
{
$this->errorMsg = "Some fields are empty";
return FALSE;
}
else
{
$username = $POSTArray["username"];
$password = $POSTArray["password"];
$repPassword = $POSTArray["repPassword"];
$email = $POSTArray["email"];
$repEmail = $POSTArray["repEmail"];
$isValid = TRUE;
// Checking username length
if (strlen($username) > 20)
{
$this->errorMsg .= " Username too long.";
$isValid = FALSE;
}
// Checking password length and equality
if (strcmp($password, $repPassword) == 0)
{
if (strlen($password) < 8)
{
$this->errorMsg .= " Password must be at least 8 characters.";
$isValid = FALSE;
}
else if (strlen($password) > 20)
{
$this->errorMsg .= " Password must be max 20 characters long.";
$isValid = FALSE;
}
}
else
{
$this->errorMsg .= " Passwords don't match.";
$isValid = FALSE;
}
// Checking email validation and equality
if (strcmp($email, $repEmail) == 0)
{
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
$this->errorMsg .= " Email provided is not valid.";
$isValid = FALSE;
}
}
else
{
$this->errorMsg .= " Emails don't match.";
$isValid = FALSE;
}
if (isset($this->errorMsg) && !empty($this->errorMsg))
$this->errorMsg = substr($this->errorMsg, 1);
return $isValid;
}
}
else
{
$this->errorMsg = "All fields are empty";
return FALSE;
}
}
非常感谢你的帮助! :)
如果您只能使用php,那将是我想得到的。 这些检查可以通过Jquery(javasript)来执行。 使用jquery的优点是,您不必首先提交它,并且可以轻松标记哪个字段的值错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.