我想检查用户是否已经存在。
我做了以下代码,但它无法正常工作。
echo
中的checkUser
仅用于查看是否跳转到if
子句。
$email = $_POST['email'];
$username = $_POST['username'];
$password = $_POST['password'];
$checkUserID = mysql_query("SELECT *
FROM users
WHERE username = '$username'");
if (mysql_num_rows($checkUserID) >= 1) {
//echo "User id exists already.";
echo "testststst";
$user1 = mysql_fetch_array($checkUserId);
$result = flashMessage("User is already taken, please try another one");
//print_r($user); // the data returned from the query
}else if(empty($form_errors)){
...formcheck...
}
我希望有人可以帮助我,我不知道该怎么做。
答案 0 :(得分:1)
我建议你使用PDO库。对于您的问题,最佳解决方案是将表中的用户名设为PRIMATY KEY
或UNIQUE CONSTRAINT
。这样,如果您尝试插入两次相同的用户名,查询将抛出异常(或根据您的设置返回false),这样做更容易。
答案 1 :(得分:0)
我可以看到您的代码存在以下问题 -
您尚未建立任何数据库连接。
您应该检查$ _POST变量是否可用。这是尝试使用if(isset)函数来检查它。
尝试使用预准备语句,因为它们更安全。
答案 2 :(得分:0)
首先,你的代码很容易被sql注入。用函数包装表单数据。
<?php
//function to prevent sql injections
function validateFormData($formData) {
$formData = trim( stripslashes( htmlspecialchars( strip_tags( str_replace( array( '(', ')' ), '', $formData ) ), ENT_QUOTES ) ) );
return $formData;
}
$email = validateFormData($_POST['email']);
$username = validateFormData($_POST['username']);
$password = validateFormData($_POST['password']);
$checkUserID = mysql_query("SELECT *
FROM users
WHERE username = '$username'");
if (mysql_num_rows($checkUserID) >= 1) {
//echo "User id exists already.";
echo "testststst";
while ($row = mysqli_fetch_assoc($checkUserID)){
//set some variables to save some data
$usernameD = $row['username'];
}
//compare form username with db username{
if($usernameD === $username){
echo "Username already taken";
}else{
//continue the rest...
}
}
?>