前 言
直接上代码有点不厚道、于是按照天朝传统,整段描述吧。。。。(本人语言表达能力有限,大家忍着看)
功 能
在网站注册用户时使用,主要为了无刷新异步验证用户输入的用户名或者Email是否已注册。
这功能大家肯定见过,大多数网站都有的,我一直对这个功能很感兴趣,所以这几天研究了下 jQuery + Ajax
整了一个功能不算完善,但足以应付普通使用的代码 (更牛的功能大家自己去发掘)
文 件 说 明
reg.php //为注册页面
check_user.php //为用户验证页面 (GET,POST方式任选)
jquery-1.7.1.js //为jQuery文件 下载地址:http://code.jquery.com/jquery-1.7.1.js (右键另存为即可)
代码示例
reg.php 注册页面(内含2种方式,请任选一种)
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP+Ajax 异步通讯注册验证</title> <script type="text/javascript"" width=100% src="jquery-1.7.1.js"></script> <!--千万别忘记引用jQuery文件,否则无法执行--> <script type="text/javascript"> $(function(){ |
//方式一 jQuery(普通应用时推荐,简单易用)
代码如下 | 复制代码 |
$("#user").blur(function(){ //文本框鼠标焦点消失事件 $.get("check_user.php?user="+$("#user").val(),null,function(data) //此处get方式 可换为post方式按需求调整,其他无需修改使用方式一样 { $("#chk").html(data); //向ID为chk的元素内添加html代码 }); }) |
//方式二 aJax方式 (比较复杂,如无特殊需求推荐使用方式一)
代码如下 | 复制代码 |
$("#user").blur(function(){ $.ajax({ url:"check_user.php", //请求验证页面 type:"GET", //请求方式 可换为post 注意验证页面接收方式 data:"user="+$("#user").val(), //取得表文本框数据,作为提交数据 注意前面的 user 此处格式 key=value 其他方式请参考ajax手册 success: function(data) { //请求成功时执行操作 $("#chk").html(data); //向ID为chk的元素内添加html代码 } }); }) }) </script> </head> <body> <form id="reg" action="" method="post"> 用户名:<input id="user" type="text" /> <span id="chk"></span> </form> </body> </html> |
check_user.php 异步通信页面 代码如下:
代码如下 | 复制代码 |
<?php //GET方式获取数据(取决于异步提交时提交方式) //POST方式获取数据(取决于异步提交时提交方式) ?> |
上面的2种方式分别又存在 post 和 get 两种方式,所以可以说有4种方式选择,应该可以满足普通应用了。
另外关于Ajax 内其他参数例如:请求数据类型,ajax开始操作等等事件。请参考ajax手册。这里不做阐述,较为复杂推荐使用第一种方式。
本文章分享一篇关于如何利用array_map() 调用 mysql_real_escape_string 清理数组,有需要学习的朋友可以参考一下本文章。用 array_map() 调用 mysql_real_escape_string 清理数组
由于 mysql_real_escape_string 需要 MySQL 数据库连接,因此,在调用 mysql_real_escape_string 之前,必须连接上 MySQL 数据库。
代码如下 | 复制代码 |
<?php // 说明:用 array_map() 调用 mysql_real_escape_string 清理数组 // 整理:http://www.111cn.net function mysqlClean($data) { return (is_array($data))?array_map('mysqlClean', $data):mysql_real_escape_string($data); } ?> |
调用方法
代码如下 | 复制代码 |
$conn = mysql_connect('localhost', 'user', 'pass'); ?> |
经过清洁的数据可以直接插入数据库。
注意!mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:
mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。
用 mysql_real_escape_string 清洁并限制字符长度
由于 mysql_real_escape_string 需要 MySQL 数据库连接,因此,在调用 mysql_real_escape_string 之前,必须连接上 MySQL 数据库。
在知道数据类型为字符串时,我们可以在清洁数据的同时限制字符串长度。此方法来自 David Lane, Hugh E. Williams《Web Database Application with PHP and MySQL 》(O’Reilly, May 2004)
代码如下 | 复制代码 |
<?php // 说明:用 mysql_real_escape_string 清洁并限制字符长度 // 整理:http://www.111cn.net function mysqlClean($array, $index, $maxlength) { if (isset($array[$index])) { $input = substr($array["{$index}"], 0, $maxlength); $input = mysql_real_escape_string($input); return ($input); } return NULL; } ?> |
调用方法:
代码如下 | 复制代码 |
<?php $conn = mysql_connect('localhost', 'user', 'pass');
if(isset($_POST['username'])) { $_POST['username'] = mysqlClean($_POST, 'username', 20); echo $_POST['username']; } ?> |
将 $_POST 数组中的 ‘username’ 清洁并截取前20位字符。
本文章介绍了关于在php使用中我们可以利用memory_get_usage()函数可获取当前的内存消耗情况从尔对程序进行性能优化。
一,函数原型
int memory_get_usage ([ bool $real_usage = false ] )
二,版本兼容
PHP 4 >= 4.3.2, PHP 5
三,基础用法与实例
1,获取当前的内存消耗量
代码如下 | 复制代码 |
<?php |
分别输出:62328 122504 62416
说明:memory_get_usage()函数输出的数值为bytes单位
2,格式化memory_get_usage()输出
代码如下 | 复制代码 |
<?php |
输出:256 kb
3,自定义函数获取数组或变量值大小
代码如下 | 复制代码 |
<?php |
代码如下 | 复制代码 |
function format_date( $STRING1 ) function format_date_short1( $STRING1 ) function format_date_short2( $STRING1 ) function format_date_short3( $STRING1 ) function format_date_number( $STRING1 ) function get_week( $STRING ) |
日期验证 格式 2011-12-12
代码如下 | 复制代码 |
function is_date( $str ) { $YEAR = ""; $MONTH = ""; $DAY = ""; $len = strlen( $str ); $offset = 0; $i = strpos( $str, "-", $offset ); $YEAR = substr( $str, $offset, $i - $offset ); $offset = $i + 1; if ( $len < $offset ) { return FALSE; } if ( $i ) { $i = strpos( $str, "-", $offset ); $MONTH = substr( $str, $offset, $i - $offset ); $offset = $i + 1; if ( $len < $offset ) { return FALSE; } if ( $i ) { $DAY = substr( $str, $offset, $len - $offset ); } } if ( $YEAR == "" || $MONTH == "" || $DAY == "" ) { return FALSE; } if ( !checkdate( intval( $MONTH ), intval( $DAY ), intval( $YEAR ) ) ) { return FALSE; } return TRUE; } |
时间验证昭 11:12:32
代码如下 | 复制代码 |
function is_time( $str ) { $TEMP = ""; $HOUR = ""; $MIN = ""; $SEC = ""; $TEMP = strtok( $str, ":" ); $HOUR = $TEMP; if ( $HOUR == "" || 24 <= $HOUR || $HOUR < 0 || !is_number( $HOUR ) ) { return FALSE; } $TEMP = strtok( ":" ); $MIN = $TEMP; if ( $MIN == "" || 60 <= $MIN || $MIN < 0 || !is_number( $MIN ) ) { return FALSE; } $TEMP = strtok( ":" ); $SEC = $TEMP; if ( $SEC == "" || 60 <= $SEC || $SEC < 0 || !is_number( $SEC ) ) { return FALSE; } return TRUE; } |
时间日期验证:2011-12-12 12:12:12
代码如下 | 复制代码 |
function is_date_time( $DATE_TIME_STR ) |