注册 | 登录 | 网址 欢迎访问八百站长

PHP学习笔记12(登录及注册验证模块3)

2015/7/28 23:08:20 作者:站长日记 来源:八百站长 浏览:2539次

一、防SQL注入技术

可使用addslashes()函数对其中的特殊字符进行自动转义,即在特殊字符前加上反斜杠,包括单引号、双引号、NULL,但是不包括%和_。

二、Ajax技术实现无刷新验证

Ajax,即异步Javascript和XML。Ajax的核心技术是xmlHttpRequest。通过xmlHttpRequest中的open()方法和send()方法,可以在不刷新当前页面的情况下向处理页的发送数据,通过xmlHttpRequest()中的responseText属性和responseXML属性,可以得到处理页的输出结果。

三、验证码技术

为了防止用户名和密码被暴力破解,在登录页面上生成一组随机数,每次刷新页面时,随机数都会改变。一般验证码是4位,也有更位的。

1.获取验证码

可通过rand()函数生成随机数的方式得到。rand()可以获取指定范围内的随机数,语法如下:int rand([int min, int max])。如果省略两个参数,那么将返回0到RAND_MAX之间的随机数。Windows系统中RAND_MAX的值是32768。本例要获取4位16进制的整数,代码如下:

<?php
  for($i=0;$i<4;$i++){
    $num .=dechex(rand(0,15));
  }
?>

2.显示随机数图片

PHP中使用GD函数来实现随机数图片,主要有以下函数:

(1)imagecreate()函数

用来创建一个基于调色板的空白图像源,这是生成图像的第一步。

resource imagecreate(int width, int height)

(2)imagecolorallocate()函数

为创建的图像分配颜色。其中参数image即为上面创建的图像源,而red、green、blue表示红、绿、蓝三色的分配值。每种颜色的取值范围在1-255之间。

resource imagecolorallocate(resource image, int red, int green, int blue)

(3)imagestring()函数

为图像添加文字。参数image为图像源,font可以设置字体,也可以设置字号,字号为1-5的数字,参数x、y表示文字相对于图像源的坐标值,s表示要显示的文字,color表示文字颜色。

bool imagestring(resource image, int font, int x, int y, string s, int color)

(4)imagesetpixel()函数

这个函数的作用是画一个像素点。通常利用这个函数通过循环向图像中添加干扰点。

bool imagesetpixel(resource image, int x, int y, int color)

(5)imagepng()函数

将创建完成的图像以png格式输出。参数image是要保存的图像源,参数filename是要保存的图像名,如果省略,则直接输出到浏览器。

bool imagepng(resource image [, string filename])

图像直接输出到浏览器时,还需添加如下语句。如果是在<img>语句中引入,则可以省略该语句。

head("Content-type: image/png");

(6)imagedestroy()函数

图像保存完毕后,使用imagedestroy()函数来释放内存。

bool imagedestroy(resource image)

四、E-mail激活技术

为防止恶意注册,很多网站采用E-mail激活技术。当用户注册成功后,不是马上就可以使用,需要登录邮箱,通过系统发出的E-mail中的链接进行激活,只有激活后,账号才能使用。对于找回密码的用户,系统会将新密码发送到邮箱中,这在一定程度上提高了安全性。

本模块使用imap函数库中的imap_mail_compose()和imap_mail()函数来发送邮件。要使用imap函数库,必须要先加载imap,否则在PHP中不支持imap函数库。加载imap的方法是:找到PHP的配置文件php.ini,找到该下面语句,将前面的分号“;”去掉,重新启动Apache服务器即可。

;extension=php_imap.dll

五、应用键盘响应事件验证信息是否合法

新用户注册时,随着信息输入,系统实时显示信息的正确性;用户登录时,无需使用鼠标来选择文本框,只要按下回车键,焦点就自动下移……这些功能,都是通过Javascript脚本中的键盘响应事件来实现的,同时还可以借助Ajax技术实现更复杂的功能。

用户通过onkeydown和onkeyup事件来触发响应事件,作用方法和onclick事件类似。onkeydown表示当键盘上的键被按下时触发,onkeyup则表示当键盘上的键被按下又抬起时触发。

在页面中加载事件的方式有多种,最常用的有以下两种:

(1)将事件直接添加到页面元素中

<script type="text/javascript">
  ...
  function refer(){
    ...
  }
</script>
<input type="text" onkeydown="refer()">

(2)通过window.onload加载

<script>
  window.onload=function(){
    document.getElementByID('lgname').onkeydown=funtcion(){
      ...
    }
  }
</script>
...
<input type="text" id="lgname">

六、应用Cookie技术实现自动登录

Cookie的作用是当用户第一次访问某服务器时,服务器将一些信息保存一用户端计算机内,在以后再次访问这个服务器时,服务器通过Cookie信息,能够识别该用户。Cookie使用起来确实很方便,自动登录、网站统计等都要比其他的实现方式要简单、快捷得多。