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)
相关文章推荐
- Web编程之留言板模块(PHP+MYSQL)
- web编程之内容自动采集器模块(PHP+Mysql)
- 网络编程中(socket)用户登录验证以及注册(单用户)
- 【唯星宠物】——BootStrap/Mysql/PHP/Ajax爬坑之正则验证登录注册子页
- Titanium教程day4-php+MySQL后台做注册登录模块
- Vue+Vue Router+Axios+Webpack+Flask+MySQL实现简单的注册、登录验证功能
- web编程之日程表模块(PHP+Mysql+Ajax)
- web编程之上传下载模块(PHP+Mysql)
- php 登录mysql 验证的代码
- PHP和mysql做用户登录验证 .
- 浅析《ASP.Net Web 站点高级编程》的登录验证!
- Android网络编程之——Android登录系统模块的实现(服务器端Servlet+Mysql)
- 会员注册验证代码(php+mysql+Ajax)
- Unity3D教程:Unity3D利用PHP+Mysql实现注册激活验证登陆
- Spring Security+Struts2实现登录,注册,以及注册自动登录模块
- Nginx+php(FastCGI)+Memcached+Mysql+APC Nginx高性能web服务器安装 APC模块安装 l
- Android网络编程之——Android登录系统模块的实现(客户端+服务器端Servlet+MySQL)
- php设计之登录模块(验证码的生成及验证)
- JSP+JAVA+MYSQL编写分页功能以及登录注册功能(有小问题,尚未解决,仅供参考)
- [Windows Azure] 创建支持Apache,PHP以及MySQL的CentOS Web Virtual Machine Server