我对用户注册表单进行了一些php验证。它正在验证所有输入,如果所有输入都是正确的,则检查该用户名是否正在使用,如果没有,则在数据库中创建该记录。由于某种原因,最后一个不会被激活,只是刷新所有数据仍然在输入框中。我无法在任何地方找到问题!!
pets/new.html.erb
答案 0 :(得分:2)
首先要评论的是这个脚本拥有的令人难以置信的嵌套逻辑数量;如果/ else分支失控,那么在流量控制失败的情况下失去对流量的控制并不罕见。
重组示例
if (isset($_POST['user']))
{
// Prep
$error = '';
// Sanitize
foreach( $_POST as $varName => $value )
{
// Doing this for minification on Stackoverflow
$$varName = sanitiseString($_POST[$varName]);
// Validate
if ( empty($$varname) )
$error .= "Not all fields were entered<br /><br />";
}
// Valid Email?
if ( !filter_var($email, FILTER_VALIDATE_EMAIL) )
$error .= "Email format invalid<br /><br />";
// Validate date
$dateArray = explode('-', $dateOfBirth);
if (!checkdate($dateArray[0], $dateArray[1], $dateArray[2]))
{
$error .= "Enter a date in the format: MM-DD-YYYY</br></br>";
}
$result = querySQL("SELECT * FROM members WHERE user='$user'");
if ($result->num_rows)
{
$error .= "That Username already exists</br></br>";
}
if ( !empty($error) )
die($error);
querySQL("INSERT INTO members VALUES('','$firstname','$surname','$user','$pass','$email','$dateOfBirth','$gender')");
die("<h4>Account Created</h4>Please Log In.</br></br>");
}
其他一些注意事项与您的count($test_arr) == 3
和count($test_arr) <> 3
存在冲突。 $result->num_rows
的值可能不是0,正如您所期望的那样。