我有一个网络程序,它有一个管理员面板,允许当前登录的用户为其他用户向系统添加新的登录名和密码。在处理一些代码的过程中,我发现虽然我检查了相同的代码,但最初的代码是'并且'最后'名称,以及相同的用户名'在系统中,我目前没有检查用户' Bilbo Baggins'应该' bilbo baggins'被检查。
从理论上讲,我可以做两次检查所有相似之处......无论是bilbo baggins' bilbo baggins' bilbo baggins'或者' BILBO BAGGINS' ...但我认为有更好的方法来做到这一点,而不是重写相同的代码来检查相同的信息。
使用我当前的实现,是否有人有类似的情况要检查1)系统中没有保留相同的名字和姓氏,2)相同的用户名不存在?
...set all variables used in post...
try {
//Confirm that there are no other same first and last names with the same registration
$query = $general->db->prepare("SELECT * FROM users WHERE firstname = :firstname AND lastname = :lastname");
$names = array(
'firstname' => $firstname,
'lastname' => $lastname);
$query->execute($names);
$result = $query->fetchAll();
if (sizeof($result) == 0) {
//Now check that the username isn't currently in use
$query = $general->db->prepare('SELECT * FROM users WHERE username = :username');
$username = array('username' => $username);
$query->execute($username);
$usernames_exist = $query->fetchAll();
if (sizeof($usernames_exist) == 0) {
##both fullname test as well as username check passed, so allow user to enter the information
$addedUser = $users->register_user($firstname, $lastname, $username['username'], $password, $cellphone, $seclvl, $email, $direct, $extension);
$message = "Congratulations, you have successfully added **AN ALREADY ACTIVATED** user with the following information: <br><br>";
答案 0 :(得分:0)
MySQL WHERE子句默认情况下不区分大小写。所以......
...只会在db中找到包含'bilbo_baggins'的一条记录。只需确保该字段具有UNIQUE索引。
有关详细信息,请参阅here。
答案 1 :(得分:0)
为了让您的系统正常运行,您无需检查姓/名。但现在回过头来看看。
您可以做的是以小写形式将所有文本输入数据库。拔出后,您可以将文本格式化为正确的格式。
这允许您的所有数据以相同的方式运行,因此您不必进行如此多的检查。