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类-缩略图类的更多相关文章

  1. pdo文字水印类,验证码类,缩略图类,logo类

    文字水印类 image.class.php <?php /** * webrx.cn qq:7031633 * @author webrx * @copyright copyright (c) ...

  2. PDO和PDOStatement类常用方法

    PDO — PDO 类 PDO::beginTransaction — 启动一个事务 PDO::commit — 提交一个事务 PDO::__construct — 创建一个表示数据库连接的 PDO ...

  3. php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;

    Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...

  4. 【PHP缩略图类】手机照片不能生成缩略图问题以及解决方式

    [本文原创,谢绝转载] 一.出现的问题 这几天做了手机上传照片并裁出缩略图的接口的測试,发现无论怎么.生成的缩略图都是一片漆黑.:-( 然后就把这个缩略图类单拿出来进行測试,发现仅仅要是手机拍出来的照 ...

  5. PDO数据库操作类

    <?php include 'common_config.php'; /** * Class Mysql * PDO数据库操作类 */ class Mysql { protected stati ...

  6. PHP原生写的生成图片缩略图类

    PHP原生写的生成图片缩略图类,本文以京东商品图片为例,分别生成三种不同尺寸的图片.调用方法很简单只要传参数高度和宽度,及新图片的名称. 引入缩略图类 include_once 'ImageResiz ...

  7. PHP数据库链接类(PDO+Access)实例分享

    这篇文章主要介绍了PHP数据库链接类(PDO+Access),有需要的朋友可以参考一下 PHP PDO Access链接 复制代码代码如下: class DbHelpClass     {       ...

  8. laravel5.8笔记五:基类控制器和基类模型

    建立基类的目的就是为了方便继承.比如:Admin模块访问,是否登陆.检测登陆可以写到基类里面 控制器基类 原始基类:app\Http\Controllers\Controller.php,我们下面要做 ...

  9. Date日期类,Canlendar日历类,Math类,Random随机数学类

    Date日期类,SimpleDateFormat日期格式类 Date  表示特定的时间,精确到毫秒 常用方法 getTime() setTime() before() after() compareT ...

随机推荐

  1. 学习java设计模式有用吗?懂这六个原则,编程更轻松

    学习java设计模式有用吗?懂这六个原则,编程更轻松 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实 ...

  2. Ubuntu备份与恢复

    在使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工具(通常都是私有软件),然后重启电脑进入备份工具提供的软 ...

  3. 【Zookeekper】分布锁Curator

    有序节点:假如当前有一个父节点为/lock,我们可以在这个父节点下面创建子节点:zookeeper提供了一个可选的有序特性,例如我们可以创建子节点“/lock/node-”并且指明有序,那么zooke ...

  4. 火狐插件火狐黑客插件将Firefox变成黑客工具的七个插件

    目前很多插件不支持 Firefox 3.5 哦1. Add N Edit Cookies 查看和修改本地的Cookie,Cookie欺骗必备. 下载:http://code.google.com/p/ ...

  5. pic16f877a的AD实验学习

    一.主函数 //采集AD值 #include <pic.h> #include "ad.h" #include "usart.h" __CONFIG ...

  6. vue登录页和主页路由配置问题

    登录页和主菜单首页是同一级的,都是用一个router-view,对于home页面里还有菜单,这里边还可以再增加一个router-view,那么在配置时候就是在home的路径增加个children路径配 ...

  7. linux之-mysql数据库约束3

    在MySQL中,通常有这几种约束: DROP DATABASE mysql_shiyan;删除数据库 主键 (PRIMARY KEY)是用于约束表中的一行,作为这一行的唯一标识符,在一张表中通过主键就 ...

  8. (转)Spring Boot干货系列:(四)开发Web应用之Thymeleaf篇

    转:http://tengj.top/2017/03/13/springboot4/ 前言 Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boot对Web开发的支持. 正文 Sp ...

  9. (转)使用OpenGL显示图像(五)添加移动

    添加移动 编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/motion.html 转:http://hukai. ...

  10. 5、java操作xml,dom4j

    . 1.首先在项目路径下引入dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar包,jaxp方式解析xml文件 <?xml version="1.0" e ...