您的位置:首页 > 数据库 > MySQL

web编程之注册以及登录验证模块(PHP+mysql)

2014-06-22 20:06 671 查看

</pre>                                              注册以及登录验证模块</h1><h2>一,用户信息表的设计</h2><div>1,设计用户表user表如下:</div><div></div><div><img src="http://img.blog.csdn.net/20140622201650296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjMyNzEwMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" align="top" alt="" /></div><div></div><div></div><div>2, 此处注册页面有一个form表单,用JS函数做一个有效性的检验。</div><div></div><div></div><div><pre name="code" class="html"><form  name="send" method="post" action="register.php"  onSubmit="check()">
..............
<script language="JavaScript">
function check()
{
if (document.getElementByName(username).value=="")
{
alert("请输入用户名");
return false;
}
if(document.getElementByName(email).value.indexOf("@")==-1)
{
alert("请输入有效地Email");
return false;
}
}
</script>


3,用户登录页面同上,一个form 表单,再用js做有效性检验。

简略代码如下:

<html>
<body>
<form name = "send"  onSubmit="check()">
<input name="pwd" type="password" >
<input name="submit" type="submit" >
</form>
</body>

</html>

<script language="javascript">
function check()
{
if(document.send.pwd.value=="")
{
alert("密码为空");
return false;
}
}
</script>


4,对表单提交信息做验证有两种方式,一种是在服务器端验证,一种是客户端验证。由于服务器端验证需要往返于服务器与客户端之间,所以大都是在浏览器端排除很多输入错误,减轻服务器负担。而,很多页面基本都有表单的输入,所以可以写一个通用的JS过滤函数文件,需要时只需加载该文件即可。
代码如下(去掉字符串头部和尾部的空格):
<script language="javascript">
class MyString(str)
{
this .str=str;
//去掉串头部空格
function ltrim(str)
{
var i=0;
while(str.charAt(i)==" ")
{
i++;
}
return str.substring(i,str.length);
}
//去掉串尾部空格
function  rtrim(str)
{
var i=str.length;
while(str.charAt(i)==" ")
{
i--;
}
return str.substring(0,i+1)
}
//去掉串头尾部空格
function trim(str)
{
return ltrim(rtrim(str));
}
}

</script>


5,服务端的数据有效性验证:包括:正则表达式判断,用户名排重检测,SQL注入验证
1)正则表达式判断(PHP)
PHP中常用的正则表达式判断函数有以下几个:
1,规则匹配 int preg_match('/ hello/', $string) 当有符合的匹配时返回1,否则返回0
2,规则替换 preg_replace() 详见http://www.php100.com/cover/php/1927.html
<?php

$string = 'April 15, 2003';

$pattern = '/(w+) (d+), (d+)/i';

$replacement = '${1}1,$3';

echo preg_replace($pattern, $replacement, $string);

?>


以上例程会输出:

April1,2003


3,规则分割 preg_split()可以将整段字符串按匹配的正则表达式分割成一两个或更多字符的多段,该函数返回一个子串数组。注意与explode(),str_split()区分

<?php

//使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语

$keywords = preg_split("/[\s,]+/", "hypertext language, programming");

print_r($keywords);

?>


以上例程会输出:

Array
(
[0] => hypertext
[1] => language
[2] => programming
)


2) SQL注入验证,需要注意以下两点:1,遵循最小权限原则,即赋予连接数据库的用户尽可能小的权限。2,尽可能的过滤有客户端提交的可疑的非法数据。要防范SQL注入,实际上只要屏蔽一些SQL命令以及关键字即可。
<?php>
function checkIlleagalWord()
{

//定义不允许提交的SQL命令以及关键字
$words=array() ;
$words[]="add";
$words[]="count";
$words[]="create";
$words[]="delete";
$words[]="drop";
$words[]="from";
$words[]="grant";
$words[]="insert";
$words[]="select";
$words[]="update";
//判断提交的数据中是否存在以上关键字,$_REQUEST中含有所有提交数据
foreach($_REQUEST as $strGot)
{
$strGot=strtolower($strGot); //专为小写
foreach($words as $word)
{
if(strstr($strGot,$word))
{
echo "您输入的内容含有非法字符";
exit();
}
}

}
}

checkIlleagalWord();  //在本文件被包含时即自动调用

</php>


3)标记登录状态:用户登录成功后,利用session设置一个全局变量,如:
$_SESSION['login']="true";$_SESSION['user']=$username;
这样判断用户是否登录只需判断$_SESSION['login']是否存在。
if(empty($_SESSION['login']))
{echo "您还没有登陆。";exit();}

6,常用正则表达式 (摘自http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html)













内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: