0

我在这里使用了一个教程: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 作为加密密码
  • 将加密密码转换为 MD5
  • 在用户表中输入 MD5 密码作为 uPassword

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

谢谢,克里斯 M

4

3 回答 3

0
/* Database connection info*

您没有正确关闭您的评论。/在行尾添加一个。

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

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

于 2011-01-26T10:43:11.620 回答
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]'";

这需要关闭 ' ) '

于 2011-01-26T10:58:03.847 回答
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 ...
}
?>
于 2011-01-26T10:58:53.380 回答