所以我在数据库mysql.user中有用密码加密方法存储的用户(据我所知,这是默认的)和我的数据库.user,它们有登录凭据user和密码(密码用md5加密)。问题是,我想使用md5加密插入的密码(来自表单),用户可以查询数据库。
这些是从表单的$_POST方法中提取的登录凭据,以及使它们成为会话,以便在连接时轻松使用:
$_SESSION['utilizator']=$utilizator; //user
$_SESSION['parola']=md5($parola); //password
这是我需要查询数据库的每个文件中包含的数据库连接:
$link = mysqli_connect('localhost', $_SESSION['utilizator'], $_SESSION['parola']);
if(!$link){
die('Unable to connect to the database: ' . mysqli_error($link));
}
尽量不要使用md5,因为它不再安全。为什么要使用用户凭据连接到数据库?您应该有一个特定的密码和用户,并在任何需要数据库连接的地方使用它,并且只有当用户通过您的登录时(您所做的是不安全的),才允许用户更改数据库,换句话说,这些用户凭据仅用于数据库和数据库,并且只有您知道。完成此操作后,您可以将与用户相关的内容保存在表中:密码和用户名按照您的要求加密,登录以检查加密的密码和DB密码,如果可以的话,然后进行查询。
编辑:
由于您可以将通行证存储在cookie或会话中,因此此方法将有所帮助,因为您可以简单地存储加密密码并检查它是否与数据库中的密码相同。
我建议您在将用户名和密码存储在会话中之前对其进行修剪和消毒。至于mysqli_connect需要4个参数
<?php $link = mysqli_connect("myhost","myuser","mypassword","mydatabase") or die("Error " . mysqli_error($link));?>
查看php页面上mysql_connect的示例。我在代码中注意到的另一件事是,为什么用户必须登录数据库?出于安全原因,数据库用户和应用程序用户必须不同。
MySQL不使用md5来存储用户密码(至少在默认情况下)。它使用MySQL PASSWORD()
函数。如果您使用密码而不通过md5()
运行它,它应该可以工作。
$_SESSION['parola']=$parola; //password