需要对表单提供一些帮助。我创建了一个需要登录的表单。一旦有人登录,他们就会填写表单,然后其他人检查表单并在提交表单之前输入密码。
我已经设置了一些规则来检查字段是否正确完成,我想编写一些代码来检查密码字段是否已完成,然后根据数据库中存储的密码进行检查。
到目前为止,我已经得到了这个。
if (!empty($_POST['password']))
{
/*connect to database to check password is valid*/
$user_name = "contains username for database";
$pass_word = "contains password";
$database = "name of database";
$server = "localhost";
$db_handle = mysql_connect($server, $user_name, $pass_word);
$db_found = mysql_select_db($database, $db_handle);
if ($db_found) {
$uname = quote_smart($uname, $db_handle);
$pword = quote_smart($pword, $db_handle);
$SQL = "SELECT * FROM masterpass WHERE password = $password";
$result = mysql_query($SQL);
$num_rows = mysql_num_rows($result);
if ($result) {
if ($num_rows > 0) {
continue;
}
else {
$error = true;
}
不确定我是否正确行事,所以任何帮助都会很棒。
提前致谢 马特
答案 0 :(得分:2)
对于初学者,首先要创建$pword
:
$pword = quote_smart($pword, $db_handle);
并在您的查询中使用$password
。
$SQL = "SELECT * FROM masterpass WHERE password = $password";
这不起作用。
其次,您应该在查询中询问用户名 AND 密码。
最后但并非最不重要:永远不会在数据库中以明文保存密码。生成 MD5 hash !
答案 1 :(得分:1)
我已经设置了一些规则来检查字段是否正确完成,我想编写一些代码来检查密码字段是否已完成,然后根据数据库中存储的密码进行检查。
不,你没有。检查密码是否已存在于数据库中并不是一件非常聪明的事情,因为这会使您的应用程序打开暴力攻击。我可以使用您的表单来确定使用哪些密码,如果我可以获得您的用户列表,我可以尝试每个密码给每个用户并获取访问权限。
其次,quote_smart可能并不比mysql_real_escape_string更聪明。请改用它。
第三,正如Sascha已经提到的那样,请生成一个哈希值。我不会使用MD5,而是使用sha1,但即使使用不含盐的MD5也会大大提高表单的安全性。
我验证密码的咒语是:确保密码超过7个字符,就是这样。不要假设人们应该使用什么密码。我讨厌它,如果我输入密码,一些验证程序告诉我,我不能在我的密码中使用{^。