首页 > 解决方案 > 检查用户是否存在

问题描述

我做了很多谷歌搜索并尝试了很多方法,但是在 Mysqli 数据库中检查用户名是否存在不起作用。一切都正确,但即使数据库中有用户名,用户仍在注册。请帮助...我的 php 版本是 7,phpmyadmin 是 5.6。我的代码:-

<?php 
session_start();
if (isset($_SESSION['id'])) {
header('Location: user.php');
die();
}

else {
if($_POST['submit']){

    $username = strip_tags($_POST['username']);
    $email = strip_tags($_POST['email']);
    $password = strip_tags($_POST['password']);
    $passhash = hash('sha512', $password);
    $passhash2 = hash('sha512', $passhash);
    $strlen = strlen("$password");
    if ($strlen < 10) {   {
    $lesspass = "Use password of atleast 10 letters";
    }
    }
    else {
    $date = date("Y-m-d");
    require ('setup.php');
    $conn = new mysqli($localhost, $hostuser, $hostpass, $hostdb) or die("conn died");
    $query1 = "SELECT * FROM member WHERE username = '$username'";
    $result1 = mysqli_query($conn, $query1);
    if (mysqli_num_rows($query1) > 0) {
        die ("Username in use");
    }

    else {
    $query2 = "SELECT from member WHERE email = $email";
    $result2 = mysqli_query($conn, $query2);

    if (($result2) > 0)  {
        $ee = "Email already exists";
    }
    else {

    $query = "INSERT INTO member(username, password, registered, email, activated, status) VALUES('$username', '$passhash2', '$date', '$email', '1', '0')";
    $result = mysqli_query($conn, $query);
    if($result) {
        header('Location: login.php');
    }
    else {
        echo "There was a problem while connecting";
    }
    }
}
}
}
}



?>

标签: phpmysqli

解决方案


我认为错误是您mysqli_num_rows在查询字符串上使用的。对结果进行操作:

if (mysqli_num_rows($result1) > 0) {

此外,您应该注意 SQL 注入(转义或使用准备好的语句),但这是另一回事。不确定是否strip_tags足够。


推荐阅读