PHP出现的错误类型
1、Notice 通知
2、Warning 提醒
3、Fatal error 致命错误,导致程序挂掉
4、Notice和warning 都是针对变量未定义
5、undefined variables 普通变量
6、undefined index 数组
PHP强制类型转换:
$str='123'; //字符串
$arr=(array) $str; //数组
禁止请求同一动态文件浏览器生成缓存
1、header头设置
2、地址后面加随机数
无缝滚动案例
图片放在li,ul设置绝对定位。计时器让ul的offsetLeft增加,当left负值大于ul的负的一半宽度时。left=0;(ul里图片要复制成两份)
城市级联
1、顶级id=0
2、pathinfo:0-1(0=顶级,1为id)
带颜色随机验证码
$code='ABCDEFG.......';
$str="<span style='color:rgb(".mt_rand(0,255).",".mt_rand(0,255).",".mt_rand(0,255).")'>".$code{mt_rand(0,strlen($code)-1)}."</span>";
遮罩层案例
1、两个div隐藏
2、两个div=position:absolute //脱离文本流
3、z-index(101) //层叠显示,值越大,越靠上
4、大div:宽高=100%,left:0;top:0;z-index:100;
5、小div:top:30%;left:30%;heigth:40%;width:40%;z-index:101;
6、opacity=最大1||filter:Alpha(opacity=最大100) //不透明度
百度UM编辑器
1、下载下来插件
2、把文本域样式都去掉,命名对应id
3、把需要的js文件在header头引入过来。
4、只需要把对应设置id的那两句代码复制过来就可以
5、过滤xss攻击,保留编辑器中的一些安全html代码可以用Htmlpurifier软件(性能差,少用)
Cookie加密
存储cookie先把数据序列化一下,然后再用base64_encode()数据加密再存储。
为了防止自制cookie误入,可在七天免登陆后判断session的时候重新利用数据查下数据库。
递归分父子级
function getSon($cate,$pid=0){
$arr=array(); //定义一个空数组
foreach($cate as $k=>$v){ //遍历数组
if($v['pid']==$pid){ //如果是父级
$son=getSon($cate,$v['son_id']); //把此父级下面的子级筛选出来
if(!empty($son)){ //并且子级不为空,放入这条数据中
$v['son']=$son;
}
$arr[$k]=$v; //把分好父子级的数据放入空数组
}
}
return $arr; //闭合数组,并返回。
}
递归归类排序
function getDesc($arr,$pid=0,$lever=0){
static $loo=array(); //可以是静态或全局,因为函数执行完一次变量就释放
foreach($arr as $k=>$v){
if($v['pid']==$pid){
$v['lever']=$lever;
}
$loo[]=$v
getDesc($arr,$v['pid'],$lever+1);
}
return $loo;
}
引用返回:
function &test(){
static $b=6; //必须是静态
return $b; //静态变量必须return
}
$a=&test(); //执行函数
$a=??; //修改a的值,b也随着改;再执行就是获取修改后的值
解决TP雪崩问题:
当静态文件消失一瞬间,如果有多个用户同时访问网站,服务器性能差,有可能会崩。
解决:在ThinkPHP源包 -> Behavior -> ReadHtmlCacheBehvior.class.php判断静态文件存在位置后面加文件排他锁。
复制一份判断静态文件是否存在的代码写在文件锁后面(因为同时访问时,都通过了第一个判断,第一个执行文件锁的用户去生成静态文件,其他用户堵在锁的位置。第一个用户程序走完,锁消失。其他用户执行第二段判断,静态文件存在。防止堵塞用户也去生成静态文件。)
注:文件锁的变量要声明全局变量,因为不是全局变量,方法执行完变量就释放了。
屏蔽php错误信息:
http://www.jb51.net/article/27560.htm
dos运行php文件:
把 php.exe拖进dos;空格;把执行文件拖进dos,回车执行;
switch选择结构:
switch($str){
case "":{} ;break; //如果是这个值,做一些操作
default:{} ;break; //如果是默认值。
}
冒泡排序:
利用循环。把要比较数组循环两遍
先定义空变量,临时存放值,交换比较的两个值。
$tmp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$tmp;