各位朋友大家好!
今天给大家带来的是phper最为常用的工具类库!
它包含了JS弹窗,页面跳转,系统基本参数上传图片,html过滤,数据库输入过滤,清理session,各种验证,格式化,获取ip地址,加载模板,图片水印,文件操作等等很多实用的功能工具,方便大家根据自己的需求进行使用和参考。
由于文件源码过长,需要的可以佳我的PHP交流群;每天都会分享技术知识、PHP优质类库,期待各路小白大神的惠顾!
好了,上源码!
/**
*常用工具类
*authorLee.
*/
classTool{
/**
*js弹窗并且跳转
*
paramstring_info*
paramstring_url*
returnjs*/
staticpublicfunctionalertLocation(_info,_url){
echo;
exit();
}
/**
*js弹窗返回
*
paramstring_info*
returnjs*/
staticpublicfunctionalertBack(_info){
echo;
exit();
}
/**
*页面跳转
*
paramstringurl*
returnjs*/
staticpublicfunctionheaderUrl(url){
echo;
exit();
}
/**
*弹窗关闭
*
paramstring_info*
returnjs*/
staticpublicfunctionalertClose(_info){
echo;
exit();
}
/**
*弹窗
*
paramstring_info*
returnjs*/
staticpublicfunctionalert(_info){
echo;
exit();
}
/**
*系统基本参数上传图片专用
*
paramstring_path*
returnnull*/
staticpublicfunctionsysUploadImg(_path){
echo;
echo;
echo;
echo;
}
/**
*html过滤
*
paramarrayobject_date
*
returnstring*/
staticpublicfunctionhtmlString(_date){
if(is_array(_date)){
foreach(_dateas_key=gt;_value){
_string[_key]=Tool::htmlString(_value);//递归
}
}elseif(is_object(_date)){
foreach(_dateas_key=gt;_value){
_string-gt;_key=Tool::htmlString(_value);//递归
}
}else{
_string=htmlspecialchars(_date);
}
return_string;
}
/**
*数据库输入过滤
*
paramstring_data*
returnstring*/
staticpublicfunctionmysqlString(_data){
_data=trim(_data);
return!GPC?addcslashes(_data):_data;
}
/**
*清理session
*/
staticpublicfunctionunSession(){
if(session_start()){
session_destroy();
}
}
/**
*验证是否为空
*
paramstringstr*
paramstringname*
returnbool(trueorfalse)*/
staticfunctionvalidateEmpty(str,name){
if(empty(str)){
self::alertBack(警告:.name.不能为空!);
}
}
/**
*验证是否相同
*
paramstringstr1*
paramstringstr2*
paramstringalert*
returnJS*/
staticfunctionvalidateAll(str1,str2,alert){
if(str1!=str2)self::alertBack(警告:.alert);
}
/**
*验证ID
*
paramNumberid*
returnJS*/
staticfunctionvalidateId(id){
if(empty(id)
!is_numeric(id))self::alertBack(警告:参数错误!);
}
/**
*格式化字符串
*
paramstringstr*
returnstring*/
staticpublicfunctionformatStr(str){
arr=array(,,,
,#,%,,,\,/,.,,,,^,*,(,),[,],{,},,~,`,?,!,;,:,-,_,+,=);
foreach(arrasv){
str=str_replace(v,,str);
}
returnstr;
}
/**
*格式化时间
*
paraminttime时间戳*
returnstring*/
staticpublicfunctionformatDate(time=default){
date=time==default?date(Y-m-dH:i:s,time()):date(Y-m-dH:i:s,time);
returndate;
}
/**
*获得真实IP地址
*
returnstring*/
staticpublicfunctionrealIp(){
staticrealip=NULL;
if(realip!==NULL)returnrealip;
if(isset(_SERVER)){
if(isset(_SERVER[HTTP_X_FORWARDED_FOR])){
arr=explode(,,_SERVER[HTTP_X_FORWARDED_FOR]);
foreach(arrASip){
ip=trim(ip);
if(ip!=unknown){
realip=ip;
break;
}
}
}elseif(isset(_SERVER[HTTP_CLIENT_IP])){
realip=_SERVER[HTTP_CLIENT_IP];
}else{
if(isset(_SERVER[REMOTE_ADDR])){
realip=_SERVER[REMOTE_ADDR];
}else{
realip=0.0.0.0;
}
}
}else{
if(getenv(HTTP_X_FORWARDED_FOR)){
realip=getenv(HTTP_X_FORWARDED_FOR);
}elseif(getenv(HTTP_CLIENT_IP)){
realip=getenv(HTTP_CLIENT_IP);
}else{
realip=getenv(REMOTE_ADDR);
}
}
preg_match(/[d.]{7,15}/,realip,onlineip);
realip=!empty(onlineip[0])?onlineip[0]:0.0.0.0;
returnrealip;
}
/**
*加载Smarty模板
*
paramstringhtml*
returnnull;*/
staticpublicfunctiondisplay(){
globaltpl;html=null;
htmlArr=explode(/,_SERVER[SCRIPT_NAME]);
html=str_ireplace(.php,.html,htmlArr[count(htmlArr)-1]);
dir=dirname(_SERVER[SCRIPT_NAME]);
firstStr=substr(dir,0,1);
endStr=substr(dir,strlen(dir)-1,1);
if(firstStr==/
firstStr==\)dir=substr(dir,1);
if(endStr!=/
endStr!=\)dir=dir./;
tpl-gt;display(dir.html);
}
/**
*创建目录
*
paramstringdir*/
staticpublicfunctioncreateDir(dir){
if(!is_dir(dir)){
mkdir(dir,);
}
}
/**
*创建文件(默认为空)
*
paramunknown_typefilename*/
staticpublicfunctioncreateFile(filename){
if(!is_file(filename))touch(filename);
}
/**
*正确获取变量
*
paramstringparam*
paramstringtype*
returnstring*/
staticpublicfunctiongetData(param,type=post){
type=strtolower(type);
if(type==post){
returnTool::mysqlString(trim(_POST[param]));
}elseif(type==get){
returnTool::mysqlString(trim(_GET[param]));
}
}
/**
*删除文件
*
paramstringfilename*/
staticpublicfunctiondelFile(filename){
if(file_exists(filename))unlink(filename);
}
/**
*删除目录
*
paramstringpath*/
staticpublicfunctiondelDir(path){
if(is_dir(path))rmdir(path);
}
/**
*删除目录及地下的全部文件
*
paramstringdir*
returnbool*/
staticpublicfunctiondelDirOfAll(dir){
//先删除目录下的文件:
if(is_dir(dir)){
dh=opendir(dir);
while(!!file=readdir(dh)){
if(file!=.file!=..){
fullpath=dir./.file;
if(!is_dir(fullpath)){
unlink(fullpath);
}else{
self::delDirOfAll(fullpath);
}
}
}
closedir(dh);
//删除当前文件夹:
if(rmdir(dir)){
returntrue;
}else{
returnfalse;
}
}
}
/**
*验证登陆
*/
staticpublicfunctionvalidateLogin(){
if(empty(_SESSION[admin][user]))header(Location:/admin/);
}
/**
*给已经存在的图片添加水印
*
paramstringfile_path*
returnbool*/
staticpublicfunctionaddMark(file_path){
if(file_exists(file_path)file_exists(MARK)){
//求出上传图片的名称后缀
ext_name=strtolower(substr(file_path,strrpos(file_path,.),strlen(file_path)));
//new_name=jzy_.time().rand(,).ext_name;
store_path=ROOT_PATH.UPDIR;
//求上传图片高宽
imginfo=getimagesize(file_path);
width=imginfo[0];
height=imginfo[1];
//添加图片水印
switch(ext_name){
case.gif:
dst_im=imagecreatefromgif(file_path);
break;
case.jpg:
dst_im=imagecreatefromjpeg(file_path);
break;
case.png:
dst_im=imagecreatefrompng(file_path);
break;
}
src_im=imagecreatefrompng(MARK);
//求水印图片高宽
src_imginfo=getimagesize(MARK);
src_width=src_imginfo[0];
src_height=src_imginfo[1];
//求出水印图片的实际生成位置
src_x=width-src_width-10;
src_y=height-src_height-10;
//新建一个真彩色图像
nimage=imagecreatetruecolor(width,height);
//拷贝上传图片到真彩图像
imagecopy(nimage,dst_im,0,0,0,0,width,height);
//按坐标位置拷贝水印图片到真彩图像上
imagecopy(nimage,src_im,src_x,src_y,0,0,src_width,src_height);
//分情况输出生成后的水印图片
switch(ext_name){
case.gif:
imagegif(nimage,file_path);
break;
case.jpg:
imagejpeg(nimage,file_path);
break;
case.png:
imagepng(nimage,file_path);
break;
}
//释放资源
imagedestroy(dst_im);
imagedestroy(src_im);
unset(imginfo);
unset(src_imginfo);
//移动生成后的图片
move_uploaded_file(file_path,ROOT_PATH.UPDIR.file_path);}
}
/**
*中文截取2,单字节截取模式
*
accesspublic*
paramstringstr需要截取的字符串*
paramintslen截取的长度*
paramintstartdd开始标记处*
returnstring*/
staticpublicfunctioncn_substr(str,slen,startdd=0){
cfg_soft_lang=PAGECHARSET;
if(cfg_soft_lang==utf-8){
returnself::cn_substr_utf8(str,slen,startdd);
}
restr=;
c=;
str_len=strlen(str);
if(str_len
return;
}
if(str_len
slen=str_len-startdd;
}
enddd=startdd+slen-1;
for(i=0;i
if(startdd==0){
restr.=c;
}elseif(igt;startdd){
restr.=c;
}
if(ord(str[i])gt;0x80){
if(str_lengt;i+1){
c=str[i].str[i+1];
}
i++;
}else{
c=str[i];
}
if(igt;=enddd){
if(strlen(restr)+strlen(c)gt;slen){
break;
}else{
restr.=c;
break;
}
}
}
returnrestr;
}
/**
*utf-8中文截取,单字节截取模式
*
*
accesspublic*
paramstringstr需要截取的字符串*
paramintslen截取的长度*
paramintstartdd开始标记处*
returnstring*/
staticpublicfunctioncn_substr_utf8(str,length,start=0){
if(strlen(str)
return;
}
preg_match_all(/./su,str,ar);
str=;
tstr=;
//为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取
for(i=0;isset(ar[0][i]);i++){
if(strlen(tstr)
tstr.=ar[0][i];
}else{
if(strlen(str)
str.=ar[0][i];
}else{
break;
}
}
}
returnstr;
}
/**
*删除图片,根据图片ID
*
paramintimage_id*/
staticfunctiondelPicByImageId(image_id){
db_name=PREFIX.imagesi;
m=newModel();
data=m-gt;getOne(db_name,i.id={image_id},i.pathasp,i.big_imgasb,i.small_imgass);
foreach(dataasv){
self::delFile(ROOT_PATH.v[p]);self::delFile(ROOT_PATH.v[b]);self::delFile(ROOT_PATH.v[s]);}
m-gt;del(PREFIX.images,id={image_id});
unset(m);
}
/**
*图片等比例缩放
*
paramresourceim新建图片资源(imagecreatefromjpeg/imagecreatefrompng/imagecreatefromgif)*
paramintmaxwidth生成图像宽*
paramintmaxheight生成图像高*
paramstringname生成图像名称*
paramstringfiletype文件类型(.jpg/.gif/.png)*/
staticpublicfunctionresizeImage(im,maxwidth,maxheight,name,filetype){
pic_width=imagesx(im);
pic_height=imagesy(im);
if((maxwidthpic_widthgt;maxwidth)
(maxheightpic_heightgt;maxheight)){
if(maxwidthpic_widthgt;maxwidth){
widthratio=maxwidth/pic_width;
resizewidth_tag=true;
}
if(maxheightpic_heightgt;maxheight){
heightratio=maxheight/pic_height;
resizeheight_tag=true;
}
if(resizewidth_tagresizeheight_tag){
if(widthratio
ratio=widthratio;
else
ratio=heightratio;
}
if(resizewidth_tag!resizeheight_tag)
ratio=widthratio;
if(resizeheight_tag!resizewidth_tag)
ratio=heightratio;
newwidth=pic_width*ratio;
newheight=pic_height*ratio;
if(function_exists(imagecopyresampled)){
newim=imagecreatetruecolor(newwidth,newheight);
imagecopyresampled(newim,im,0,0,0,0,newwidth,newheight,pic_width,pic_height);
}else{
newim=imagecreate(newwidth,newheight);
imagecopyresized(newim,im,0,0,0,0,newwidth,newheight,pic_width,pic_height);
}
name=name.filetype;
imagejpeg(newim,name);
imagedestroy(newim);
}else{
name=name.filetype;
imagejpeg(im,name);
}
}
/**
*下载文件
*
paramstringfile_path绝对路径*/
staticpublicfunctiondownFile(file_path){
//判断文件是否存在
file_path=iconv(utf-8,gb,file_path);//对可能出现的中文名称进行转码
if(!file_exists(file_path)){
exit(文件不存在!);
}
file_name=basename(file_path);//获取文件名称
file_size=filesize(file_path);//获取文件大小
fp=fopen(file_path,r);//以只读的方式打开文件
header(Content-type:application/octet-stream);
header(Accept-Ranges:bytes);
header(Accept-Length:{file_size});
header(Content-Disposition:attachment;filename={file_name});
buffer=;
file_count=0;
//判断文件是否结束
while(!feof(fp)(file_size-file_countgt;0)){
file_data=fread(fp,buffer);
file_count+=buffer;
echofile_data;
}
fclose(fp);//关闭文件
}
}
?gt;