好的,所以我正在學習php,html和mysql來學習網站開發(爲了好玩)。我還沒有得到的一件事是如何使用md5或sha1哈希。我知道如何散列純文本,但說我想做一個登錄頁面。由於密碼被散列且無法顛倒,因此mysql如何知道用戶插入的密碼與數據庫中的散列密碼相匹配?這裏是我的意思是:如何使用md5散列?
$password = md5($_POST['password']);
$query = ("INSERT INTO `users`.`data` (`password`) VALUES ('$password')");
我知道這個片斷腳本的散列密碼,但我怎麼會用這一段代碼,讓一個登錄頁面?任何工作示例都會很棒。
這裏是我的腳本:
<?php
session_start();
include("mainmenu.php");
$usrname = mysql_real_escape_string($_POST['usrname']);
$password = md5($_POST['password']);
$con = mysql_connect("localhost", "root", "[email protected]");
if (!$con) {
die(mysql_error()); }
mysql_select_db("users", $con) or die(mysql_error());
$login = "SELECT * FROM `data` WHERE (`usrname` = '$usrname' AND `password` = '$password')";
$result = mysql_query($login);
if (mysql_num_rows($result) == 1) {
$_SESSION['logged_in'] = true;
header('Location: indexlogin.php');
exit;
}
else {
echo "Wrong username or password.";
}
?>
但我仍然得到else語句,「錯誤的用戶名或密碼,有人幫助PLZ!」
看起來相關:http://stackoverflow.com/questions/4642376/trouble-making-login-page – thirtydot 2011-01-10 01:49:37
*使用sha1散列*的MD5?我猜你是指*或*? – 2011-01-10 01:54:37
@thirtydot如果沒有最小字符數,我會直接寫「lol」 – Ken 2011-01-10 02:08:07