Php 如何使用电子邮件密码条件从数据库检索记录?

Php 如何使用电子邮件密码条件从数据库检索记录?,php,database,Php,Database,我想在php中建立一个查询,用户输入他的电子邮件地址和密码,如果电子邮件和密码与数据库中的匹配,则应从数据库中检索一行。我该怎么做?如果任何用户名或密码不正确,则应相应地打印一条消息。我将使用伪代码执行以下操作: if(authentication(email, password)) { phpQuery(); } else { alert(); } 如果authentication()函数将电子邮件与密码进行比较以授予访问权限。请记住,您不应将密码以纯文本形式存储在数据库中,请阅读有

我想在php中建立一个查询,用户输入他的电子邮件地址和密码,如果电子邮件和密码与数据库中的匹配,则应从数据库中检索一行。我该怎么做?如果任何用户名或密码不正确,则应相应地打印一条消息。

我将使用伪代码执行以下操作:

if(authentication(email, password)) {
  phpQuery();
} else {
  alert();
}

如果
authentication()
函数将电子邮件与密码进行比较以授予访问权限。

请记住,您不应将密码以纯文本形式存储在数据库中,请阅读有关密码哈希的内容

最简单的例子是:

function passwordHash($username, $password){
    $hash = $password;
    for($i = 0; $i < 10000; $i++){
        $hash = md5($hash . $username); // we use username as salt
    }
    return $hash;
}

$username = mysqli_real_escape_string($_POST['username']);
$hash = passwordHash($username, $_POST['password']);

$sql = "SELECT * FROM `users` WHERE username='$username' and password='$hash'";
$query = mysqli_query($sql);
if(mysqli_num_rows($query) != 0){
    // successfull login
}else{
    // login failed 
}
函数passwordHash($username,$password){
$hash=$password;
对于($i=0;$i<10000;$i++){
$hash=md5($hash.$username);//我们使用username作为salt
}
返回$hash;
}
$username=mysqli\u real\u escape\u字符串($\u POST['username']);
$hash=passwordHash($username,$\u POST['password']);
$sql=“从`users`中选择*,其中username='$username'和password='$hash';
$query=mysqli\u查询($sql);
if(mysqli_num_行($query)!=0){
//成功登录
}否则{
//登录失败
}

当然,您应该使用相同的哈希函数生成注册表单。我也没有初始化mysql连接

您不应该使用MD5,请阅读:PHP有它自己的函数,可以使用准备好的语句来完成作业!阅读SQL注入:伙计们,我写了最简单的安全解决方案。请注意,我使用了10000次md5迭代,并使用了mysqli\u real\u escape\u string.Post太宽,应该关闭。