前言:MD5是在web应用程序中最常用的加密算法,在大多数数据库管理系统中,用户的密码都是以MD5值的
方式保存观察家数据库中的,目的是提高用户登录的安全性
1. MD5()
作用:计算字符串的MD5 hash值
格式:string md5(string $str [, bool $row_output=false])
参数:$row_output=TRUE, 如果row_output被设置为TRUE,则MD5摘要以原始的二进制格式输出(16bit长)
返回值:返回32字符的16进制hash值
例:<?php $str='apple';
if (md5($str)==='1f3870be274f6c49b3e31a0c6728957f') { echo "Would you like a greenor red apple?";
}
?>
2.示例程序:
1). Index.php
<html>
<head>
<meta http-equiv="Content-Type"content="text/html; charset=gb2312">
<title>安全登录</title>
</head>
<body>
<div align="center">
<scriptlanguage="javascript">
function login(){
if(myform.name.value=="")
{alert("用户名称不能为空!!");myform.name.focus();return false;}
if(myform.pwd.value=="")
{alert("用户密码不能为空!!");myform.pwd.focus();return false;}
}
</script>
<form name="myform" method="post"action="chkadmin.php">
<table width="778" height="314"border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="31"> </td>
<td align="center">管理员</td>
<td><input name="name" type="text"id="name" size="16"></td>
<td> </td>
</tr>
<tr>
<td height="35"> </td>
<td align="center">密 码</td>
<td><input name="pwd" type="password"id="pwd" size="16"></td>
<td> </td>
</tr>
<tr>
<td height="34"> </td>
<td> </td>
<td align="right">
<input name="imageField" type="image"src="images/btn_dl.jpg" width="87" height="24"border="0" onClick="return login();">
</a> </td>
<td> </td>
</tr>
<tr>
<td height="87"> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</form>
</div>
</body>
</html>
2).chkadmin.php
<?php
session_start();
classchkinput{
var$name;
var$pwd;
function chkinput($x,$y){
$this->name=$x;
$this->pwd=$y;
}
function checkinput(){
include "conn/conn.php";
$sql=mysql_query("select * from tb_admin wherename='".$this->name."'");
$info=mysql_fetch_array($sql);
if($info==false){
echo "<script language='javascript'>alert('不存在此管理员!');history.back();</script>";
exit;
}
else{
if($info[pwd]==$this->pwd){
$_SESSION[admin_name]=$info[name];
echo "<script language='javascript'>alert('恭喜您,登录成功!');window.location.href='index.php';</script>";
}
else{
echo "<script language='javascript'>alert('密码输入错误!');history.back();</script>";
exit;
}
}
}
}
$obj=new chkinput(trim($_POST[name]),trim(md5($_POST[pwd])));
$obj->checkinput();
?>
3). Conn.php
<?php
$link=mysql_connect("localhost","root","root")or die("数据库连接失败".mysql_error());
mysql_select_db("db_database18",$link);
mysql_query("setnames gb2312");
?>
4).mysql数据库中插入md5(‘string’)
mysql> insert into tb_admin(name,pwd)values ("test",md5('test'));
Query OK, 1 row affected (0.00 sec)
2.trim()
作用:去除字符串首尾处的空白字符(或其它字符)
格式:stringtrim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )
返回值:返回字符串str去除首尾空白字符后的结构
参数说明:如果不指定第二个参数,trim()将去除这些字符
" " (ASCII 32 (0x20)),普通空格符。 "\t" (ASCII 9 (0x09)),制表符。
"\n" (ASCII 10 (0x0A)),换行符。 "\r" (ASCII 13 (0x0D)),回车符。
"\0" (ASCII 0 (0x00)),空字节符。 "\x0B" (ASCII 11 (0x0B)),垂直制表符。
3.session_start()
作用:创建新会话或者重用现有会话,如果通过GET或POST方式或使用cookie提交了会话ID,则会重用现有会话
格式:bool session_start(void)
说明:当会话通过session_start()开始时,PHP内部会调用会话管理器的open()和read()回调函数,会话管理器可能
SQLite或memcached。通过read回调函数返回现有会话数据,PHP会填 充$_SESSION全局变量
返回值:成功开始会话返回TRUE,反之返回FLASE
例:
Page1.php
<?php
Session_start();
$_SESSION[‘animal’]=’cat’;
$_SESSION[‘time’]=time();
//使用cookie方式传送会话ID
echo ‘<br /> <a href=”page2.php”>page2</a>’;
//请求page1.php页面之后,第二个页面
//page2.php会包含会话数据
?>
Page2.php
<?php
Session_start();
echo $_SESSION[‘animal’]; //cat
echo date(‘Y m d H:i:s’,$_SESSION[‘time’]);
?>
