【发布时间】:2015-11-20 18:52:02
【问题描述】:
已经为我的 Android 应用上的登录/注册功能设置了两个简单的 php 文件。
我想知道一种简单的方法来让它将加密密码保存/写入 mysql 数据库。目前它只写纯文本密码。
register.php 的代码是:
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO User (username, email, password) VALUES (?, ?, ?)" );
mysqli_stmt_bind_param($statement, "sss", $username, $email, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
登录代码是:
$password = $_POST["password"];
$username = $_POST["username"];
$statement = mysqli_prepare($con, "SELECT * FROM User WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($statement, "ss", $username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userID, $username, $email, $password);
$user = array();
while(mysqli_stmt_fetch($statement)) {
$user[username] = $username;
$user[email] = $email;
$user[password] = $password;
}
echo json_encode($user);
mysqli_stmt_close($statement);
mysqli_close($con);
我知道的非常简单的问题,但只是在学习自己。谢谢
编辑:
基于 Jamesking56 的链接/响应,我得出了这个结论,但现在它根本没有写入 db:
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
$statement = mysqli_prepare($con, "INSERT INTO User (username, email, password) VALUES (?, ?, ?)" );
mysqli_stmt_bind_param($statement, "sss", $username, $email, $passwordHash);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
【问题讨论】:
-
所以...使用相同的“散列”函数?只是不是 MD5 ;-)
-
PHP 完成了它的工作,因为你告诉它该做什么; “以纯文本形式存储密码”。顺便说一句,MD5 是哈希而不是加密算法。
标签: php android encryption passwords