PHP MD5创建用户表单

时间:2011-01-26 10:38:52

标签: php md5 user-registration

我在这里使用了一个教程:http://www.phpeasystep.com/phptu/26.html为我的网站创建一个登录表单。我已将数据库中的uPassword字段设置为md5,并且数据库中的所有密码都使用md5加密。

登录工作完美,但我对创建注册表单感到有些困惑。

表单请求用户输入所需的密码。我有点困惑的是,我将如何获取用户输入的密码,将其转换为md5,然后将md5密码输入用户表中的uPassword字段。

以下是我对processresgistration.php文件的代码:

/* Database connection info*/
mysql_select_db("dbname", $con);

$encryptedpassword = md5($_POST['uPassword']);

md5($uPassword);

$sql="INSERT INTO users (uName, uPassword, uSurname, uFirstName)
VALUES
('$_POST[uName]','$encryptedpassword','$_POST[uSurname]','$_POST[uFirstName]'";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "Account created.  You can now login";

mysql_close($con)
?>

上面的代码应该是:

  • 创建名为encryptedpassword
  • 的变量
  • 将uPassword用作encryptedpassword
  • 将加密密码转换为MD5
  • 将MD5密码作为uPassword
  • 输入到users表中

我确定我没有在某个地方使用过正确的变量,或者我的语法做了一个简单的错误;任何评论/帮助非常感谢!

谢谢, 克里斯M

3 个答案:

答案 0 :(得分:0)

/* Database connection info*

您没有在那里正确关闭您的评论。在该行的末尾添加/

哦,MD5不安全。请改用SHA1。或者甚至更好,使用盐渍SHA1。

您还需要使用mysql_real_escape_string()开始转义您放入数据库的所有用户输入,否则Little Bobby Tables将为您的数据库带来很多乐趣。

答案 1 :(得分:0)

/ *数据库连接信息* /

 mysql_select_db("dbname", $con);

$encryptedpassword = md5($_POST['uPassword']);

$sql="INSERT INTO users (uName, uPassword, uSurname, uFirstName)
VALUES
('$_POST[uName]','$encryptedpassword','$_POST[uSurname]','$_POST[uFirstName]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "Account created.  You can now login";

mysql_close($con)
?>

括号的关闭是查询中的问题

('$_POST[uName]','$encryptedpassword','$_POST[uSurname]','$_POST[uFirstName]'";

这需要结束' ) '

答案 2 :(得分:0)

您的代码需要一些验证&逃避,更像这样:

<?php

/* Database connection info */
mysql_select_db("dbname", $con);

if ($_REQUEST['METHOD'] == 'POST') {
    $uName = filter_input(INPUT_POST, 'uName');
    $uPassword = filter_input(INPUT_POST, 'uPassword');
    $uSurname = filter_input(INPUT_POST, 'uSurname');
    $uFirstName = filter_input(INPUT_POST, 'uFirstName');

    // do some validation here ...

    // if everything OK, then crypte the password
    $hashedPassword = md5($uPassword);

    // and store it

    $sql = sprintf(
        'INSERT INTO users (uName, hashedPassword, uSurname, uFirstName)
         VALUES (%s, %s, %s, %s);',
            mysql_real_escape_string($uName, $con),
            mysql_real_escape_string($hashedPassword, $con),
            mysql_real_escape_string($uSurname, $con),
            mysql_real_escape_string($uFirstName, $con)
    );

    if (!mysql_query($sql,$con)) {
        die('Error: ' . mysql_error());
    }

    mysql_close($con);
    echo "Account created.  You can now login";
}

?>

现在登录

<?php

if ($_REQUEST['METHOD'] == 'POST') {
    $uName = filter_input(INPUT_POST, 'uName');
    $uPassword = filter_input(INPUT_POST, 'uPassword');
    $hashedPassword = md5($uPassword);

    $sql = sprintf(
        'SELECT * FROM users WHERE uName = "%s" AND hashedPassword = "%s" LIMIT 1',
            mysql_real_escape_string($uName, $con),
            mysql_real_escape_string($hashedPassword, $con),
        );

    // etc etc ...
}
?>