所以我在数据库mysql.user中存储了用密码加密方法存储的用户(默认情况下是我所知道的)和我的database.users,它们具有登录凭据用户和密码(密码用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));
}
答案 0 :(得分:2)
尽量不要使用md5因为它不再安全。 为什么要使用用户凭据连接到数据库?您应该有一个特定的密码和用户,并在需要数据库连接的任何地方使用它,并允许用户仅在他通过您的登录时改变数据库(您正在做的事情是不安全的),换句话说,那些用户凭据仅适用于DB和DB,仅供您使用。 执行此操作后,您可以在表格中保存用户相关的内容:传递和用户名加密您想要的方式,登录检查加密的传递和数据库传递,如果可以,然后进行查询。
编辑:
由于您希望将传递存储在cookie或会话中,因此您可以简单地存储加密密码并检查它是否与数据库中的密码相同。
答案 1 :(得分:2)
我会建议你在将用户名和密码存储在会话中之前修剪用户名和密码。至于mysqli_connect 它需要4个参数
<?php $link = mysqli_connect("myhost","myuser","mypassword","mydatabase") or die("Error " . mysqli_error($link));?>
查看mysql-_connect的php页面上的示例。我用你的代码注意到的另一件事,为什么用户必须登录数据库?出于安全原因,数据库用户和应用程序用户必须不同。
答案 2 :(得分:1)
MySQL不使用md5存储用户密码(至少默认情况下)。它使用MySQL PASSWORD()
函数。如果您使用密码而不通过md5()
运行密码,则该密码应该有效。
$_SESSION['parola']=$parola; //password