当用户数量比较多时,用数据库储存用户名称及密码是很好的选择,但如果直接将用户的密码储存在数据库,即使数据库要密码才可以登入也有安全性的问题。例如系统管理员或者 Web Hosting 的员工便可以看到用户的密码,所以先将用户密码加密是必要的步骤。
PHP 内建了 MD5() 单向加密算法,即只可加密,而不可以反向解密,以下是利用 MD5() 函式的具体方法:
这里是将用户密码用 MD5() 加密后加插入数据库:
|
1 2 3 4 5 6 7 8 |
<?php $db_conn = mysql_connect("host", "db_user", "db_pass"); mysql_select_db("db_name", $db_conn); // 插入资料表的 $password 用了 md5 加密 mysql_query("insert into users values ('$username', '".md5($password)."')"); ?> |
检查用户名称及密码:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $db_conn = mysql_connect("host", "db_user", "db_pass"); mysql_select_db("db_name", $db_conn); $sql = mysql_query("select * from users where `username`='$username' and `password`='".md5($password)."'"); if (mysql_num_rows($sql) > 0) { // 用户名称及密码正确 } else { // 用户名称及密码错误 exit(); } ?> |
用以上方法写出来的登入系统,只用用户是知道自己的密码,系统管理员最多只能够修改密码,而不能看到源始密码是什么。