代码如下 | 复制代码 |
function is_email($email) { if (preg_match("/[a-za-z0-9]+@[a-za-z0-9]+.[a-z]{2,4}/",$email,$mail)) { return true; } else { return false; } } |
/**
* 验证用户名是否以字母开头
*/
代码如下 | 复制代码 |
function is_user_name($user) { if (preg_match("/^[a-za-z]{1}([a-za-z0-9]|[._]){3,19}$/",$user,$username)) { return true; } else { return false; } } |
/**
* 验证密码只能为数字和字母的组合
*/
代码如下 | 复制代码 |
function is_ps教程d($psd) { if (preg_match("/^(w){4,20}$/",$psd,$password)) { return true; } else { return false; } } |
/**
* 设置cookie
* n 名称
* c 值
* e 有效期 0 默认 一个月 1 关闭立即失效
*/
代码如下 | 复制代码 |
function w_cookie($n, $c, $e = 0,$isdes=1) { if($isdes==1){$c=endes($c,deskey);} $exp = time() + 3600 * 24 * 30; if($e == 0) { setcookie($n, $c, $exp,"/"); } else { setcookie($n, $c,0,"/"); } } |
//关闭cookie方法
代码如下 | 复制代码 |
w_cookie('bb', 'www.111cn.net', $e = 0,$isdes=1); |
//开启设置cookie方法
代码如下 | 复制代码 |
w_cookie('bb', 'www.111cn.net', $e = 1,$isdes=1); |
?>
代码如下 | 复制代码 |
function split_en_str($str,$distinct=true) return $match[1]; |
//实例应用
代码如下 | 复制代码 |
$str ='word,word,world,cup'; print_r(split_en_str($str,$distinct=true)); |
/*
array
(
[0] => cup
[1] => word
[2] => world
)
*/
代码如下 | 复制代码 |
header("content-type: text/html; charset=utf-8"); ?> <form method="post" action="./uploadaction.php" enctype="multipart/form-data" name="form"> <input type="file" name="upfile" id="myfile" /> <input type="submit" name="submit" value="上传" /> </form> |
//uploadaction.php
<?php
代码如下 | 复制代码 |
header("content-type:text/html; charset=utf-8"); if(!empty($_files)) { $date= date("ymdhis",time()); $fileinfo=$_files['upfile']; foreach($_files['upfile'] as $name=>$value) echo $name.'='.$value.'<br>'; $filesavename='./file/'.$date.$fileinfo['name']; move_uploaded_file($fileinfo['tmp_name'],$filesavename); echo $fileinfo['tmp_name'].'<br>'; echo "上传成功<br>"; echo "文件位置: $filesavename"; } |
frameset里面,也就是里面的frame是来自第三方站点(不同ip或不同域名),那么默认情况下ie会自动禁用这些站点的cookie,也就是在请求某url时在http header里不发送它们的cookie,包括session的cookie。注意,这些站点在response里面设置的cookie还是会被发送到浏览器的。
但象ie 6.0和ie 7.0有个自己的标准.要支持p3p,ie 6的缺省隐私等级设置为"中"——即"阻止没有合同隐私策略的第三方cookie"。而在用户浏览a.php教程时 a.com写入的为第一方cookie,其嵌入的iframe指向b.php.这时b.com写入的就为第三方cookie了,所以它是被ie当在了大门外。
所以,每次当用户提交的cookie提交时,就挂掉了.因为传不到真实的服务器.
好了,不多讲了,直接讲解决方案.
php的程序
可以直接在b网站中写入
<?php
header('p3p: cp="cura adma deva ps教程ao psdo our bus uni pur int dem sta pre com nav otc noi dsp cor"')
?>
这样就能接受第三方的cookie啦。
lighttpd的服务器
server.modules = ("mod_setenv")
setenv.add-response-header = ( "p3p" => "cp='cura adma deva psao psdo our bus uni pur int dem sta pre com nav otc noi dsp cor'")
apache的服务器
<virtualhost>
header set p3p 'cp="cura adma deva psao psdo our bus uni pur int dem sta pre com nav otc noi dsp cor"'
</virtualhost>
iis的服务器
增加一个网站http头来解决问题;
管理工具——〉选择一个网站——〉属性——〉http头,增加一个http头
然后输入头名:p3p
输入头内容:cp=cao psa our
如果要登陆就如下设置
setcookie('auth_member_string', 0, time()+3600,'/',$cfg['domain']);
setcookie('auth_member_name',0,time()+3600,'/',$cfg['domain']);
setcookie('auth_member_realname',0,time()+3600,'/',$cfg['domain']);
登出
setcookie('auth_member_string', 0, time()-1,'/',$cfg['domain']);
setcookie('auth_member_name',0,time()-1,'/',$cfg['domain']);
setcookie('auth_member_realname',0,time()-1,'/',$cfg['domain']);
下面来看一个测试实例
我只写一个大概,为了测试的方便,先编辑hosts文件,加入测试域名(c:windowssystem32driversetchosts)
127.0.0.1 www.a.com
127.0.0.1 www.b.com
首先:创建 a_setcookie.php 文件,内容如下:
<?php
//header('p3p: cp="cura adma deva psao psdo our bus uni pur int dem sta pre com nav otc noi dsp cor"');
setcookie("test", $_get['id'], time()+3600, "/", ".a.com");
?>
然后:创建 a_getcookie.php 文件,内容如下:
<?php
var_dump($_cookie);
?>
最后:创建 b_setcookie.php 文件,内容如下:
<script" width=100% src="http://www.a.com/a_setcookie.php?id=www.b.com"></script>
----------------------------
三个文件创建完毕后,我们通过浏览器依次访问:
http://www.b.com/b_setcookie.php
http://www.a.com/a_getcookie.php
我们会发现,在访问b.com域的时候,我们并没有在a.com域设置上cookie值。
然后我们修改一下a_setcookie.php文件,去掉注释符号,a_setcookie.php即为:
<?php
header('p3p: cp="cura adma deva psao psdo our bus uni pur int dem sta pre com nav otc noi dsp cor"');
setcookie("test", $_get['id'], time()+3600, "/", ".a.com");
?>
再次通过浏览器依次访问:
http://www.b.com/b_setcookie.php
http://www.a.com/a_getcookie.php
这次,你会发现在访问b.com域的时候,我们设置了a.com域的cookie值。
末了补充一句,似乎只有ie对跨域访问cookie限制比较严格,上述代码在firefox下测试,即使不发送p3p头信息,也能成功