База данных db2 не может проверить, существует ли уже имя пользователя - PullRequest
0 голосов
/ 05 марта 2019

Я создаю простую страницу регистрации, используя IBM Db2 и PHP, и все мои данные сохраняются в базе данных Db2.Тем не менее, я не могу сохранить ограничения уже существующего имени пользователя.Он регистрирует пользователя, даже если имя пользователя уже есть в Db2.Кроме того, он входит в систему с любым введенным паролем!

Я не мог понять, когда записи отображаются в базе данных, это означает, что данные нашли правильное соединение с базой данных.Тогда почему он не улавливает логику ограничений.

Я просто изменил функции MySQL в Db2 для PHP, и есть некоторые функции, которые дают мне сообщения об ошибках, такие как db2_exec() и db2_fetch_assoc.

Ответы [ 3 ]

0 голосов
/ 05 марта 2019

вышеупомянутый поднятый запрос решается в следующем фрагменте кода;

if(isset($_POST['signup'])){
$username = ($_POST['username']);
$email = ($_POST['email']);
$password = ($_POST['password']);
$confirm_password = ($_POST['confirm_password']);

//form validation

if(empty($username)) {array_push($errors, "Username is required");}
if(empty($email)) {array_push($errors, "Email is required");}
if(empty($password)) {array_push($errors, "Password is required");}
if($password != $confirm_password) {array_push($errors, "Passwords do not match");}
if(strlen($password)<6){array_push($errors, "Password must be at least 6 characters long");}
if (!preg_match($password_requirements, $password) ) {array_push($errors,"Password must contain at least one upper case , one lower case and one digit" );}

//check db for existing user with same username

$check_username = "SELECT * FROM people WHERE username = '$username'";
$check_email = "SELECT * FROM people WHERE email = '$email'";

$res_username = db2_exec($db, $check_username);
$user_username = db2_fetch_assoc($res_username);
$res_email = db2_exec($db, $check_email);
$user_email = db2_fetch_assoc($res_email);


if(!empty($user_username)){
    array_push($errors, "Username already exists!");
}
if(!empty($user_email)){
    array_push($errors, "Email already exists!");
}
//register user if no error
elseif (count($errors) == 0) {

    //$password = md5($password);
    $query = "INSERT INTO people (username, email, password)
                VALUES ('$username', '$email', '$password')";

    db2_exec($db,$query) or die("couldn't execute query..".db2_stmt_errormsg());

    $_SESSION['username']= $username;
    $_SESSION['success']= "You are now logged in"; 
    //echo "you are now logged in";
    header('Refresh: 0; URL=index.php', true, 301);

}

}

0 голосов
/ 06 марта 2019

Просто добавьте еще один запрос, чтобы проверить имя пользователя и пароль

$check_username_password= "SELECT * FROM users WHERE username ='$username' AND 
                           password = '$password'";

$result = db2_exec($db,$check_username_password);
$user = db2_fetch_assoc($result);

if(!empty($user)){ // username match with the password
 // Set your session here
 // Redirect to the page you want

  }
 else{
   // Show your error here
  }
0 голосов
/ 05 марта 2019
$user_check_query= "SELECT * FROM users WHERE username ='$username'"
$result = db2_exec($db,$user_check_query);
$user = db2_fetch_assoc($result);

if(!empty($user)){ // Not empty mean database already exist this username
array_push($errors,"Username exists");
}
...