<!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>用户注册 - </title>
<link href="/css/login.css" rel="stylesheet" type="text/css" />
<link href="/css/page_bottom.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/js/jquery-1.7.1.js"></script>
<script type="text/javascript">
var flag = {
"email":false,
"nickname":false,
"password":false,
"verify":false
};
$(function(){
$("#txtEmail").blur(function () {
var email=$(this).val();
//alert(email);
if(email==""){
$("#email\\.info").html("Email地址不能为空");
return;
}
var pattern=/\b(^['_A-Za-z0-9-]+(\.['_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/;
if(!pattern.test(email)){
$("#email\\.info").html("Email格式不正确");
return;
}
$.get("check_email.php?email="+email,null,
function(data){
$("#email\\.info").html(data);
if (data=="可以注册") {
flag.email=true;
}
}
);
});
$("#txtNickName").blur(function () {
var nickname=$(this).val();
if(nickname==""){
$("#name\\.info").html("昵称不能为空");
return;
}
var pattern = /\b(^['A-Za-z0-9]{4,20}$)\b/;
if (!pattern.test(nickname)) {
$("#name\\.info").html("昵称格式不正确");
return;
}else{
$("#name\\.info").html("昵称格式正确");
flag.nickname=true;
return;
}
});
$("#txtPassword").blur(function () {
var password=$(this).val();
if (password=="") {
$("#password\\.info").html("密码不能为空");
return;
}
var pattern = /\b(^['A-Za-z0-9]{4,20}$)\b/;
if (!pattern.test(password)) {
$("#password\\.info").html("密码格式不正确");
return;
}else{
$("#password\\.info").html("密码格式正确");
//flag.password=true;
return;
}
});
$("#txtRepeatPass").blur(function () {
var password1=$(this).val();
if (password1=="") {
$("#password1\\.info").html("密码不能为空");
return;
}
var pattern = /\b(^['A-Za-z0-9]{4,20}$)\b/;
if (!pattern.test(password1)) {
$("#password1\\.info").html("密码格式不正确");
return;
}else if(password1!=$("#txtPassword").val()){
$("#password1\\.info").html("两次输入的密码不一致");
return;
}else{
$("#password1\\.info").html("重复密码正确");
flag.password=true;
return;
}
});
$("#txtVerifyCode").blur(function () {
var verify=$(this).val();
if(verify==""){
$("#number\\.info").html("验证码不能为空");
return;
}
$.post("./verify/check.php",{verify:verify},
function(data){
$("#number\\.info").html(data);
if (data=="验证成功") {
flag.verify=true;
}
}
);
})
$("#f").submit(function(){
var ok = flag.email&&flag.password&&flag.verify&&flag.nickname;
if(ok==false){
alert("表单项正在检测或存在错误");
history.back();
return false;
}
return true;
});
})
</script>
</head>
<body>
<?php include("../common/head.php"); ?>
<div >
注册步骤:<span >1.填写信息</span> > 2.验证邮箱 > 3.注册成功
</div>
<div >
<form name="ctl00" method="post" action="/blog_article/save_reg.html" id="f">
<h2>以下均为必填项</h2>
<table >
<tr>
<td valign="top" >请填写您的Email地址:</td>
<td>
<input name="email" type="text" id="txtEmail" />
<div id="emailValidMsg">
<p>请填写有效的Email地址。</p>
<span id="email.info" ></span>
</div>
</td>
</tr>
<tr>
<td valign="top" >设置您在的昵称:</td>
<td>
<input name="nickname" type="text" id="txtNickName" />
<div id="nickNameValidMsg">
<p>由小写英文字母、中文、数字组成,长度4-20个字符,一个汉字为两个字符。</p>
<span id="name.info" ></span>
</div>
</td>
</tr>
<tr>
<td valign="top" >设置密码:</td>
<td>
<input name="password" type="password" id="txtPassword" />
<div id="passwordValidMsg">
<p>您的密码可以由大小写英文字母、数字组成,长度6-20位。</p>
<span id="password.info" ></span>
</div>
</td>
</tr>
<tr>
<td valign="top" >再次输入您设置的密码:</td>
<td>
<input name="password1" type="password" id="txtRepeatPass" />
<div id="repeatPassValidMsg">
<span id="password1.info" ></span>
</div>
</td>
</tr>
<tr>
<td valign="top" >验证码:</td>
<td>
<img id='imgVcode' src='/blog_article/verify/verify.html' border='0' onclick="document.getElementById('imgVcode').src='/blog_article/verify/verify/t/.html'+Math.random()"/>
<input name="number" type="text" id="txtVerifyCode" />
<div >
<p >
<span id="vcodeValidMsg">请输入图片中的四个字母。</span>
<a href="#" onclick="document.getElementById('imgVcode').src='/blog_article/verify/verify/t/.html'+Math.random()">看不清楚?换个图片</a>
<br />
<span id="number.info" ></span>
</p>
</div>
</td>
</tr>
</table>
<div >
<input id="btnClientRegister" name="submit" type="submit" value="注 册"/>
</div>
</form>
</div>
<?php include("../common/foot.php"); ?>
</body>
</html>
1. sys_getloadavg()
sys_getloadavt()可以获得系 统负载情况。该函数返回一个包含三个元素的数组,每个元素分别代表系统再过去的1、5和15分钟内的平均负载。
与其让服务器因负 载过高而宕掉,不如在系统负载很高时主动die掉一个脚本,sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾,该函数在windows下无效。
2. pack()
Pack() 能将md5()返回的32位16进制字符串转换为16位的二进制字符串,可以节省存储空间。
3. cal_days_in_month()
cal_days_in_month()能够返回指定月份共有多少天。
4. _()
WordPress开发者经常能见到这个函数,还有 _e()。这两个函数功能相同,与gettext()函数结合使用,能实现网站的多语言化。具体可参见PHP手册的相关部分介绍。
5. get_browser()
在发送页面前先看看用户的浏览器都能做些什么是 不是挺好?get_browser()能获得用户的浏览器类型,以及浏览器支持的功能,不过首先你需要一个php_browscap.ini文件,用来给 函数做参考文件。
要注意,该函数对浏览器功能的判断是基于该类浏览器的一般特性的。例如,如果用户关闭了浏览器对 JavaScript的支持,函数无法得知这一点。但是在判断浏览器类型和OS平台方面,该函数还是很准确的。
6. debug_print_backtrace()
这是一个调试用的函数,能帮助你发现代码中的逻辑错误。要理 解这个函数,还是直接看个例子吧:
$a = 0;
function iterate() {
global $a;
if( $a < 10 )
recur();
echo $a . “, “;
}
function recur() {
global $a;
$a++;
// how did I get here?
echo “\n\n\n”;
debug_print_backtrace();
if( $a < 10 )
iterate();
}
iterate();
# OUTPUT:
#0 recur() called at [C:\htdocs\php_stuff\index.php:8]
#1 iterate() called at [C:\htdocs\php_stuff\index.php:25]
#0 recur() called at [C:\htdocs\php_stuff\index.php:8]
#1 iterate() called at [C:\htdocs\php_stuff\index.php:21]
#2 recur() called at [C:\htdocs\php_stuff\index.php:8]
#3 iterate() called at [C:\htdocs\php_stuff\index.php:25]
#0 recur() called at [C:\htdocs\php_stuff\index.php:8]
#1 iterate() called at [C:\htdocs\php_stuff\index.php:21]
#2 recur() called at [C:\htdocs\php_stuff\index.php:8]
#3 iterate() called at [C:\htdocs\php_stuff\index.php:21]
#4 recur() called at [C:\htdocs\php_stuff\index.php:8]
#5 iterate() called at [C:\htdocs\php_stuff\index.php:25]
7. metaphone()
这个函数返回单词的metaphone值,相同读音的单词具有相同的metaphone值,也就是说这个函数可以帮你判断两个单词的读音是否 相同。不过对中文就无效了。。。
8. natsort()
natsort()能将一个数组以自然排序法 进行排列,直接看个例子吧:
$items = array(
“100 apples”, “5 apples”, “110 apples”, “55 apples”
);
// normal sorting:
sort($items);
print_r($items);
# Outputs:
# Array
# (
# [0] => 100 apples
# [1] => 110 apples
# [2] => 5 apples
# [3] => 55 apples
# )
natsort($items);
print_r($items);
# Outputs:
# Array
# (
# [2] => 5 apples
# [3] => 55 apples
# [0] => 100 apples
# [1] => 110 apples
# )
9. levenshtein()
Levenshtein() 告诉你两个单词之间的“距离”。它告诉你如果想把一个单词变成另一个单词,需要插入、替换和删除多少字母。
看个例子吧:
$dictionary = array(
“php”, “javascript”, “css”
);
$word = “japhp”;
$best_match = $dictionary[0];
$match_value = levenshtein($dictionary[0], $word);
foreach($dictionary as $w) {
$value = levenshtein($word, $w);
if( $value < $match_value ) {
$best_match = $w;
$match_value = $value;
}
}
echo “Did you mean the ‘$best_match' category?”;
10. glob()
glob()会让你觉得用 opendir(), readdir()和closedir()来寻找文件非常蠢。
foreach (glob(“*.php”) as $file)
echo “$file\n”;
1.搜索关联数组键
如果在一个数组中找到一个指定的键,函数array_key_exists()返回TRUE,否则返回FALSE。其
形式如下:
boolean array_key_exists(mixed key, array array)
下面的例子将在数组键中搜索Ohio,如果找到,将输出这个州加入美国联邦政府的育关信息:
$state["Delaware"]="December 7,1787";
$state["Pennsylvania"]="December 12, 1787";
$state["Ohio"]="March l,1803";
86 第5章数 组
if (array_key_exists("Ohio", $state》
printf("Ohio joined the Union on %s", $state["Ohio"]);
结果如下:
2.搜索关联数组值
array_search()函数在一个数组中搜索一个指定的值,如果找到则返回相应的键,否则返回FALSE。
其形式如下:
下面的例子在$state中搜索一个特定的日期(December7),如果找到,则返回相应州的有关信息:
$state["Ohio"] = "March l"; .
$statef"Delaware"l = "December 7";
$state["Pennsylvania"] = "December 12u;
$founded = array_search("December 7", $state),
i+ ($founded) printf("%s was founded on %s.", $founded, $state[$founded]);
输出如下:
Delaware was十ounded on December 7.
5.4.2获取数组键
array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有键。其形式知下:
array array_keys(array array【J mixed search_value])
如果包含可选参数search value,则只会返回与该值匹配的键。下面的例子将输出$state数组中
找到的所有键值:
$state["Delaware"] = "December 7, 1787";
$state["Pennsylvania"] = "December 12, i787";
$state["New Jersey"] = "December 18, 1787";
$keys = array_keys($state);
print_r($keys);
输出如下:
5.4.3获取数组值
array_values()函数返回一个数组中的所有值,并自动为返回的数组提供数值索引。其形式如下:
array array_values(array array)
5.5遍历数组 87
下面的例子将获取$population中找到的各州人口数:
$population=array("Ohio"=>"11,421,267", "Iowa"=>"2,936,760");
print_r(array_values($population》;
这个例子的输出如下:
5.5遍历数组
通常需要遍历数组并获得各个键或值(或者同时获得键和值),所以毫不奇怪,PHP为此提供了
一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移
向下一个适当的位置。本节将介绍这些函数。
5.5.1 获取当前数组键
key()函数返回input_array中当前指针所在位置的键。其形式如下:
mixed key(array array)
下面的例子通过迭代处理数组并移动指针来输出$capitals数组的键:
$capitals=array("Ohio"=>"Columbus", "Iowa"=>"Des Moines");
echo "<p>Can you name the capitals of these states?</p>";
while($key=key($capitals》{
printf("%s <br,>“,$key);
next($capitals);
,
将返回以下结果:
Ohio