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 ...
随机推荐
- vue 路由动态传参 (多个)
动态传参 传值页面 客户列表clientList.vue 路由 router.js 配置路由 接收参数的页面 客户详情CustomerDetails.vue 通过this.$router.para ...
- nucleus学习
task的TCB结构: typedef struct TC_TCB_STRUCT { /* Standard thread information first. This information is ...
- Windows Xp Sp3官方简体中文版(原版) 纯净安装版 百度网盘下载
百度网盘下载: 1.链接:https://pan.baidu.com/s/1o-HcKddSG6IAz_0COKhq8Q 提取码:hkhr 2.扫码下载:
- centos6编译安装php7
https://www.cnblogs.com/wenwei-blog/p/6261637.html https://www.cnblogs.com/imzye/p/5109770.html cent ...
- [CSP-S模拟测试]:简单的区间(分治)
题目描述 给定一个长度为$n$的序列$a$以及常数$k$,序列从$1$开始编号.记$$f(l,t)=\sum \limits_{i=l}^ra_i-\max \limits_{i=l}^r\{a_i\ ...
- String、StringBuuffer、StringBuilder三者的区别
string String 字符串常量(final修饰,不可被继承,线程不安全),String是常量,当创建之后即不能更改,可以给多个引用共享,在做大量字符串拼接的时候效率低.(可以通过StringB ...
- python中匿名函数lambda如何用
python中经常用到的一个函数:匿名函数lambda ,什么是匿名函数?匿名函数的意义是什么?匿名函数怎么样用?(疑问三连,what,why,how) 一,什么是匿名函数? python中没有名字的 ...
- centos7 rm -rf 删除文件的找回
今天手贱一不小心把我正个项目目录删除了,没办法只能找回啦 文件系统是ext4的,只能使用extundelete df -hT 文件名 查看 下删除的文件夹所在的硬盘 1. 安装依赖 ...
- LInux终端中Ctrl+S卡死
因为初学Linux,在vim中写东西是总是喜欢按Ctrl+s来保存内容导致终端突然卡主,然后上网查资料发现了Ctrl+s 暂停屏幕输出[锁住终端]而对应的按键是Ctrl+q 恢复屏幕输出[解锁终端]
- Linux中的特殊权限s、t、i、a
文件权限除了r.w.x外还有s.t.i.a权限:s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行.在设置s权限时文件属主.属组必须先设置相应的x权限,否则s权限并不能 ...