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;
} }
}
php-验证码类-PDO类-缩略图类的更多相关文章
- pdo文字水印类,验证码类,缩略图类,logo类
文字水印类 image.class.php <?php /** * webrx.cn qq:7031633 * @author webrx * @copyright copyright (c) ...
- PDO和PDOStatement类常用方法
PDO — PDO 类 PDO::beginTransaction — 启动一个事务 PDO::commit — 提交一个事务 PDO::__construct — 创建一个表示数据库连接的 PDO ...
- php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;
Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...
- 【PHP缩略图类】手机照片不能生成缩略图问题以及解决方式
[本文原创,谢绝转载] 一.出现的问题 这几天做了手机上传照片并裁出缩略图的接口的測试,发现无论怎么.生成的缩略图都是一片漆黑.:-( 然后就把这个缩略图类单拿出来进行測试,发现仅仅要是手机拍出来的照 ...
- PDO数据库操作类
<?php include 'common_config.php'; /** * Class Mysql * PDO数据库操作类 */ class Mysql { protected stati ...
- PHP原生写的生成图片缩略图类
PHP原生写的生成图片缩略图类,本文以京东商品图片为例,分别生成三种不同尺寸的图片.调用方法很简单只要传参数高度和宽度,及新图片的名称. 引入缩略图类 include_once 'ImageResiz ...
- PHP数据库链接类(PDO+Access)实例分享
这篇文章主要介绍了PHP数据库链接类(PDO+Access),有需要的朋友可以参考一下 PHP PDO Access链接 复制代码代码如下: class DbHelpClass { ...
- laravel5.8笔记五:基类控制器和基类模型
建立基类的目的就是为了方便继承.比如:Admin模块访问,是否登陆.检测登陆可以写到基类里面 控制器基类 原始基类:app\Http\Controllers\Controller.php,我们下面要做 ...
- Date日期类,Canlendar日历类,Math类,Random随机数学类
Date日期类,SimpleDateFormat日期格式类 Date 表示特定的时间,精确到毫秒 常用方法 getTime() setTime() before() after() compareT ...
随机推荐
- MaxCompute问答整理之10月
本文是基于本人对MaxCompute产品的学习进度,再结合开发者社区里面的一些问题,进而整理成文.希望对大家有所帮助. 问题一.DataStudio中是否可以通过shell节点调取MaxCompute ...
- 4K超清,2500万人在线,猫晚直播技术全解读
摘要: 作为双11的必备节目,今年的猫晚通过优酷.浙江卫视.东方卫视进行了全程网络直播和电视直播,吸引了超过全球超过2.4亿人收看.猫晚期间,优酷基于阿里云最新的广播级高可靠直播方案,为近2500万的 ...
- TableStore最佳实践:GEO索引打造店铺搜索系统
摘要: 如何使用TableStore打造店铺搜索系统 一.方案背景 对于一套GEO管理系统,其核心点与瓶颈在于数据库的存储性能与查询能力:一方面,存储服务需要应对海量数据的低延迟存.读,另一方面,存储 ...
- PHP基础知识总结(四) 留言板例子 知识应用
1.留言板显示页面:note.php <?php $host = "127.0.0.1"; $user = "root"; $pwd = "zs ...
- HTML5: 目录
ylbtech-HTML5: 目录 1.返回顶部 1. http://www.runoob.com/html/html5-intro.html 2. http://www.w3school.com.c ...
- 10 面向对象(package关键字的概述及作用)
10.01_面向对象(package关键字的概述及作用) A:为什么要有包 *开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复 将字节码(.class)进行分类存放 包其实就是文件夹 B: ...
- 获取项目根目录(非tomact)
String path; public void main(String[] args) { File file=new File(""); path=file.getAbsolu ...
- Linux部署web项目
一.软件1.putty2.WinSCP 二.调试1.linux 下 apache启动.停止.重启命令基本的操作方法:本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合 ...
- pyhon if分支
在python中,最常用的就是if判断,if判断可以分为单次判断和多次判断 单次判断 if 条件 : (条件成立执行我) else:(else也可以没有,最近的else对应最近的if语句) (条件 ...
- redis demo
方法hset(String key,String field,String value),hmset(String key, Map<String,String> hash),hgetAl ...