php-验证码类-PDO类-缩略图类
Verify.class.php 验证码类
<?php class Verify{ const VERIFY_TYPE_NUM=1; const VERIFY_TYPE_EN=2; const VERIFY_TYPE_BOTH=3; /* * 作用:输出验证码图片 * 参数:$type--验证码的类型 数字-1 字母-2 数字加字母-3 * $fontSize---字体大小 * $width * $height * $charNum---字的个数 * $fontPath---字体文件路径 */ public static function showVerify($width=100,$height=35,$type=3,$fontSize=20,$charNum=4,$fontPath="./font/heiti.ttf"){ //创建空白画布 $i=imagecreatetruecolor($width,$height); $white=imagecolorallocate($i, 255, 255, 255); imagefill($i,0,0,$white); //产生字符库 $content=""; if($type==3){//数字+大小写字母 $content=join('',array_merge(range(0,9),range('a','z'),range('A',"Z"))); }else if($type==2){ $content=join('',array_merge(range('a','z'),range('A',"Z"))); }else{ $content=join('',array_merge(range(0,9))); } //随机产生$charNum位字符 $str=substr(str_shuffle($content),0,$charNum); //把字符放到session中 $_SESSION['verify']=$str; //把字符逐个写在画布上 for($j=0;$j<strlen($str);$j++){ $char=substr($str,$j,1); $color=imagecolorallocate($i, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); $y=$height-10; $x=(($width-20)/$charNum)*$j+10; imagefttext($i,$fontSize,mt_rand(-20,20),$x,$y,$color,$fontPath,$char); } //加干扰点 for($j=1;$j<=500;$j++){ $color=imagecolorallocate($i, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); imagesetpixel($i,mt_rand(0,$width),mt_rand(0,$height),$color); } //加干扰线 for($j=1;$j<=4;$j++){ $color=imagecolorallocate($i, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); imageline($i,0,mt_rand(0,$height),$width,mt_rand(0,$height),$color); } //输出 imagepng($i); } }
Model.class.php PDO类
<?php class Model{ protected $tableName;//表名 protected $DbOb;//PDO类的对象 function __construct(){ $pOb=new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USERNAME,DB_PASSWORD); $pOb->exec("set names ".DB_CHARSET); $this->DbOb=$pOb; } //添加 function add($arr){ $kStr=""; $kArr=array_keys($arr); $kStr=join(",",$kArr); $vStr=""; for($i=0;$i<count($arr);$i++){ $vStr.=",:p".$i; } $vStr=substr($vStr,1); $sql="insert into {$this->tableName}($kStr) values($vStr)"; $PS=$this->DbOb->prepare($sql); //绑定数据 $vArr=array_values($arr);//索引下标 array(0=>'ttt',1=>'ccc') foreach($vArr as $k=>$v){//$k 0 $v ttt $k 1 $v ccc $name="p".$k; $$name=$v; $PS->bindParam(":p".$k,$$name,PDO::PARAM_STR); } $re=$PS->execute(); if($re){ return $this->DbOb->lastInsertId(); }else{ return false; } } //修改 function save($arr,$where="",$bindArr=array()){ //update news set title='t',content='c' where id=5 $fvStr=""; $i=0; foreach($arr as $k=>$v){ $name="p".$i; $$name=$v; $fvStr.=",$k=:p".$i; $i++; } $fvStr=substr($fvStr,1); $where = !empty($where) ? "where ".$where : ""; $sql="update {$this->tableName} set {$fvStr} $where"; $PS=$this->DbOb->prepare($sql); //绑定数据 for($i=0;$i<count($arr);$i++){ $name="p".$i; $PS->bindParam(":p".$i,$$name,PDO::PARAM_STR); } $i=0; foreach($bindArr as $k=>$v){ $name="p".$i; $$name=$v[0]; if($v[1]=='int'){ $PS->bindParam($k,$$name,PDO::PARAM_INT); }else{ $PS->bindParam($k,$$name,PDO::PARAM_STR); } $i++; } return $PS->execute(); } //删除 delete from 表名 where 条件 function delete($where="",$bindArr=array()){ $where = !empty($where) ? "where ".$where : ""; $sql="delete from {$this->tableName} $where"; $PS=$this->DbOb->prepare($sql); //绑定数据 $i=0; foreach($bindArr as $k=>$v){ $name="p".$i; $$name=$v[0]; if($v[1]=='int'){ $PS->bindParam($k,$$name,PDO::PARAM_INT); }else{ $PS->bindParam($k,$$name,PDO::PARAM_STR); } $i++; } return $PS->execute(); } //查询 function select($fields="*",$where="",$limit="",$order="",$bindArr=array()){ $where = !empty($where) ? "where ".$where : ""; $order = !empty($order) ? "order by ".$order : ""; $limit = !empty($limit) ? "limit ".$limit : ""; $sql="select $fields from {$this->tableName} $where $order $limit"; //准备执行 $PS=$this->DbOb->prepare($sql); //绑定数据 $i=0; foreach($bindArr as $k=>$v){ $name="p".$i; $$name=$v[0]; if($v[1]=='int'){ $PS->bindParam($k,$$name,PDO::PARAM_INT); }else{ $PS->bindParam($k,$$name,PDO::PARAM_STR); } $i++; } //执行 $re=$PS->execute(); if($re){//返回二维数组 $PS->setFetchMode(PDO::FETCH_ASSOC); return $PS->fetchAll(); }else{ return array(); } } }
Thumb.class.php 缩略图类
<?php class Thumb{ /* * $sPath:被缩略的图片的路径 * $toPath:缩略图保存在哪 * $toW:小图的宽 * $toH:小图的高 * $preFix:小图名字的前缀 */ function saveThumb($sPath,$toPath,$toW,$toH,$prefix="s_"){ if(is_file($sPath)){ //产生一个空白图,放缩略图 $t=imagecreatetruecolor($toW, $toH); $white=imagecolorallocate($t, 255, 255, 255); imagefill($t,0,0,$white); //获取原图片的信息 $arr=getimagesize($sPath); $sType=$arr['mime']; $sW=$arr[0]; $sH=$arr[1]; //产生原图片资源 switch($sType){ case 'image/jpeg': case 'image/pjpeg': $s=imagecreatefromjpeg($sPath); $funName="jpeg"; break; case 'image/gif': $s=imagecreatefromgif($sPath); $funName="gif"; break; case 'image/png': $s=imagecreatefrompng($sPath); $funName="png"; break; default : return false; } //算出缩放的比例 $biliW=$sW/$toW; $biliH=$sH/$toH; if($biliW>$biliH){ $endBili=$biliW; }else{ $endBili=$biliH; } //图片被缩略后的宽 高 $tW=$sW/$endBili; $tH=$sH/$endBili; //到目标图片的位置 $tX=($toW-$tW)/2; $tY=($toH-$tH)/2; //拷贝 $re=imagecopyresized($t,$s,$tX,$tY,0,0,$tW,$tH,$sW,$sH); if($re){ //命名 $oldName=pathinfo($sPath,PATHINFO_BASENAME); $newName=$prefix.$oldName; //生成缩略图 $trueFunName="image".$funName; $re=$trueFunName($t,$toPath."/".$newName); //返回结果 return $re; }else{ return false; } }else{ return false; } } }