目前正在处理一个应用程序,并对我提交表单后为什么我的脚本进入空白页面感到好奇。当我向我的脚本添加一个应该进入我的数据库的片段时,它开始发生,该脚本检查是否存在用户名,然后如果是这种情况则回复消息,如果不是这样,则回显消息。
这是代码:
function validateUser() {
global $user, $userErr, $validForm;
$userErr = "";
if ($user == "") {
$userErr = "nothing entered";
$validForm = false;
}
else if (!preg_match("/^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-
Z]*)*$/",$user)) {
$userErr = "invalid characters";
$validForm = false;
}
elseif (strlen($user) > 1) {
$stmt = $conn->prepare("SELECT COUNT(username) AS num FROM credentials WHERE
username = :username");
$stmt->bindValue(':username', $user);
$stmt->execute(array($user));
$norows = $result->fetchColumn();
if ($norows > 0 ) {
$userErr = 'Username already taken';
}
else {
$userErr='User added';
}
}
}
给我带来麻烦的是最后一个elseif声明......由于某种原因它没有按照它应该做的那样做。我看过很多不同的来源,我尝试过实现不同的解决方案,但似乎没有任何工作。只有在您想知道的情况下提交表单时才会运行此函数。对任何可能的解决方案都非常开放。因为我无法让它工作......谢谢!
答案 0 :(得分:0)
不要使用else if()
,因为您使用的是不同的比较语句。只需将所有else if()
替换为if()
。然后使用$userErr
变量检查输入是否通过了所有验证。
function validateUser() {
global $user, $userErr, $validForm;
$userErr = "";
if ($user == "") {
$userErr = "nothing entered";
$validForm = false;
}
if (!preg_match("/^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/",$user)) {
$userErr = "invalid characters";
$validForm = false;
}
if (strlen($user) > 1) {
$stmt = $conn->prepare("SELECT COUNT(username) AS num FROM credentials WHERE
username = :username");
$stmt->bindValue(':username', $user);
$stmt->execute(array($user));
$norows = $result->fetchColumn();
if ($norows > 0 ) {
$userErr = 'Username already taken';
}
}
if($userErr == "") {
$userErr='User added';
}
}