php - MySQL数据库检查

标签 php mysql phpmyadmin accounts

这是我的代码

$username = $_POST['user'];
$password = $_POST['pass'];

if (isset($_POST['user'])); {
    $db = mysqli_connect('localhost', 'root', '', 'db');
    if($query = mysqli_query($db, "SELECT `pass` FROM `accounts` WHERE `user` = '$username'")){
      while($row = mysqli_fetch_assoc($query)){
        $row['pass'] = $setpassword;
      }
      mysqli_free_result($query);
    }
}

它当前的作用是从表单中检索用户输入的用户名和密码,获取该用户名并找到具有该用户名的行,然后从该行获取密码并将其设置为变量 $setpassword。下面的代码用于检查密码是否与数据库中给定的用户名匹配。

if ($password=='') {
    $verify = 0;
}

if ($password!='') {
    if ($password!=$setpassword) {
        $verify = 1;
    }
    if ($password==$setpassword) {
        $verify = 2;
    }
}

如果验证是... 0 - 登录表单将显示为未输入任何内容。 1 - 错误的密码将与登录表单一起显示。 2 - 将显示正确的密码,并将用户名分配给 session 变量。

我遇到一个问题,用户可以输入不存在的用户名和任何密码,无论其是否在数据库中,并且都会进行验证。

如何检查数据库中是否不存在该用户名?

最佳答案

当您接受用户注册时,查询数据库以查看它是否已存在。

$result = mysqli_query("SELECT * FROM accounts where `user` = $username");

if(mysql_num_rows($result) >0) // if there are any rows returned then the username exists
{ 
    //User Name already exists
}
else
{
   //User name doesn't exist, add user
}

我不确定这是你在做的事情。但要消除重复项,您可以这样做。此外,您还可以将列用户定义为唯一。这样 SQL 将不允许重复值。

还有这一行:

$row['pass'] = $setpassword; //setting $row['pass'] to $setpasswords value.

这是相反的。你应该反过来做。

 $setpassword = $row['pass']; //setting setpassword to $row['pass'] value.

如果我需要澄清任何事情,请告诉我。

关于php - MySQL数据库检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8765476/

相关文章:

mysql - 编写此查询的另一种方法

mysql - phpmyadmin,如何替换所有表中的一个字符?

php - INNER JOIN 第三个表

mysql - 为什么执行 count() 会返回带有回溯的 PhpMyAdmin 错误

php - memcaching php 资源对象

php - 获取 WordPress 帖子的顶级类别名称而不是 slug

python - Django 部署。加载 MySQLdb 模块时出错。从/tmp 目录读取/写入时出现问题

php - 如何设置仅针对用户当前使用的语言的国家/地区显示的产品费用

php - 我如何使用 php 在一页中进行多次提交?

mysql - 从表中选择最新的2条 “group/batch”记录