php类

PHP压缩与解压Zip(PHPZip类)

≯℡__Kan透↙ 提交于 2019-12-24 07:00:06
<?php class PHPZip { private $ctrl_dir = array (); private $datasec = array (); /********************************************************** * 压缩部分 **********************************************************/ // ------------------------------------------------------ // // #遍历指定文件夹 // // $archive = new PHPZip(); // $filelist = $archive->visitFile(文件夹路径); // print "当前文件夹的文件:<p>\r\n"; // foreach($filelist as $file) // printf("%s<br>\r\n", $file); // ------------------------------------------------------ // var $fileList = array (); public function visitFile( $path ) { global $fileList ; $path = str

无聊写的一个PHP Socket类

大憨熊 提交于 2019-12-24 02:58:53
无聊写的一个PHP Socket类,功能还比较简单,不完善. <? php /** */ /** * * @project:socket类 * @license:GPL * @author : 8th@live.cn-星期八 * @description:PHP Socket协议异步通信 * @file:socket.class.php * @created date:Fri Apr 25 12:22:33 CST 2008 * @last modified : ** */ class sockets { public $host; // 通信地址 public $port; // 通信端口 public $limitTime = 0 ; // 连接超时时间 public $backlog = 3 ; // 请求队列中允许的最大请求数 private $socket = null ; private $result = null ; private $spawn = null ; private $input = null ; // 构造函数 public function __construct() { set_time_limit($ this -> limitTime); $ this -> socket = socket_create(AF_INET, SOCK

PHP封装一个文件上传类(支持单文件多文件上传)

橙三吉。 提交于 2019-12-23 04:11:20
class Upload { //添加一个智能操作: 可以自动判断当前是多文件还是单文件, 来自动选择正确的方法进行处理 public static function save ( $dir ) { if ( ! file_exists ( $dir ) ) { // a/b/c 中间目录不存在,会自动创建! mkdir ( $dir , 0777 , true ) ; } //判断当前是多文件 还是 单文件上传 //单文件上传的数组 是 二维数组, 多文件上传的数组是三维数组 //做法: 判断是否为三维数组即可 //reset()用于读取数组中的首个值 $tmp = reset ( $_FILES ) ; $tmp = reset ( $tmp ) ; if ( is_array ( $tmp ) ) { //是3维 return self : : saveMultiple ( $dir ) ; } else { return self : : saveSingle ( $dir ) ; } } //多文件上传 protected static function saveMultiple ( $dir ) { //1.转换格式 foreach ( $_FILES as $key = > $value ) { foreach ( $value as $kk = > $vv ) {

php封装mysql类

限于喜欢 提交于 2019-12-23 02:43:23
php封装myslq类(仅供参考) <?php namespace common; use PDO; class DB { // public $config; public $mysql; public $table; public $where; public $pdo; public $getresult; /** * @content mysqli 数据库链接方式 */ public function connect() { $config = config()['db']; $this->mysql = mysqli_connect($config['host'],$config['user'],$config['pwd'],$config['databasename']); return $this->mysql; } /** * @param $param * @return $this * 设置表名 */ public function table($param) { $this->table = $param; return $this; } /** * @param $where * @return $this * @content 查询条件 mysqli */ public function where($key,$where,$val) { $this-

php curl封装类

元气小坏坏 提交于 2019-12-22 00:47:29
一个php curl封装的类,减少代码量,简化采集工作。这个类也是我工作的最常用的类之一。这里分享给大家。配合上phpquery,十分好用。 <?php namespace iphp\core; use iphp\App; /** * 封装了的curl http请求类 * @author xuen */ class MyCurl { public $ch; // 当前链接对象 public $str = ''; // 当前串 public $match; // 正则表达式 /** * 将curl常量属性转变成一个数组,便于使用 * @var string */ public $defaultOpt = array( CURLOPT_URL => '', // 请求的URL CURLOPT_RETURNTRANSFER => 1, // 设置有返回信息,以流的形式返回,非不是直接输出 CURLOPT_HTTPGET => 1, // 设定为GET请求。 // 定义默认的回调函数,这样exec()将在成功后返回1 CURLOPT_CONNECTTIMEOUT => 30, // 设置默认链接超时间为30秒 CURLOPT_TIMEOUT=>30,//设置下载时间最多30秒。 // 自动跟踪重定向。 CURLOPT_FOLLOWLOCATION => true, //

关于PHP内部类的一些总结学习

一笑奈何 提交于 2019-12-21 03:41:48
前言:   这篇文章主要对一些可以进行反序列化的php内置类的分析总结(膜lemon师傅之前的总结),当然不是所有的php内置类在存在反序列化漏洞时都能够直接利用,有些类不一定能够进行反序列化,php中使用了 zend_class_unserialize_deny 来禁止一些类的反序列化,比如序列化DirectoryIterator的时候,DirectoryIterator主要用来输出目录,用法如下图 1.Soapclient soapclient有两种工作模式,wsdl和非wsdl模式,WSDL 用来描述如何访问具体的接口,soap协议的具体格式可以参考这篇文章,soap采用http或者https协议发送数据,并且在http header头中通过soap action来标示自己是一个soap请求 https://www.cnblogs.com/JeffreySun/archive/2009/12/14/1623766.html 如果是在非wsdl模式下,将可以通过指定配置选项location和url来进行网络请求的发送,那就意味着我们可以通过该内置类来进行ssrf,当然需要有反序化条件为基础,通过触发其__call方法来发送网络请求,为啥要调用call方法来触发,我看了看php的源码,在ext/soap扩展里面发现了如下: 首先定位到定义__call方法的函数处

PHP框架类加载器

 ̄綄美尐妖づ 提交于 2019-12-19 07:09:12
今天跟着教程一块走了一个 加载各种类的加载器,基于面向消息的思路,向队列添加任务消息;具体跟着代码走一遍 就可以了.感觉不是很难 < ? php class A { public static function testA ( $a ) { echo 'A' . $a ; return false ; } } //静态方法 class B { public static function testB ( $b ) { echo 'B' . $b ; return false ; } } //对象方法 class C { public function testC ( $c ) { echo 'C' . $c ; return false ; } } //单例方法 /*程序执行完成有0个或者1个实例*/ class D { private static $d = Null ; private function __construct ( ) { echo 123 ; } public static function newInstance ( ) { if ( self : : $d == Null ) { self : : $d = new D ( ) ; } return self : : $d ; } public function testD ( $d ) { echo "D

PHP上传图片类

半城伤御伤魂 提交于 2019-12-19 01:07:54
php上传图片类 ? <?php class ieb_upload { var $FormName ; //文件域名称 var $Directroy ; //上传至目录 var $MaxSize ; //最大上传大小 var $CanUpload ; //是否可以上传 var $doUpFile ; //上传的文件名 var $sm_File ; //缩略图名称 var $Error ; //错误参数 function ieb_upload( $formName = '' , $dirPath = '' , $maxSize = 2097152) // (1024*2)*1024=2097152 就是 2M { global $FormName , $Directroy , $MaxSize , $CanUpload , $Error , $doUpFile , $sm_File ; // 初始化各种参数 $FormName = $formName ; $MaxSize = $maxSize ; $CanUpload = true; $doUpFile = '' ; $sm_File = '' ; $Error = 0; if ( $formName == '' ) { $CanUpload = false; $Error = 1; break ; } if ( $dirPath

一个漂亮的php验证码类(分享)

狂风中的少年 提交于 2019-12-17 17:22:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子 private $code;//验证码 private $codelen = 4;//验证码长度 private $width = 130;//宽度 private $height = 50;//高度 private $img;//图形资源句柄 private $font;//指定的字体 private $fontsize = 20;//指定字体大小 private $fontcolor;//指定字体颜色 //构造方法初始化 public function __construct() { $this->font = dirname(__FILE__).'/font/elephant.ttf';//注意字体路径要写对,否则显示不了图片 } //生成随机码 private function createCode() { $_len = strlen($this->charset)-1; for ($i=0;$i<$this->codelen;$i++) { $this->code .= $this-

PHP 方法整合类

℡╲_俬逩灬. 提交于 2019-12-11 11:40:27
本文主要记载一些自己使用的方法,会随时更新。 主要是自己的东西存放太乱,这里做一个整理。 1.PHP根据概率产生随机数 本方法借鉴: 壁虎漫步。 大大的博客。 原文链接: https://www.cnblogs.com/phpfensi/p/4242293.html 代码如下: $data = array( 'a' => 10 , 'b' => 20 , 'c' => 30 , 'd' => 40 ); echo randomSelect( $data ); function randomSelect( &$array ){ $datas = $array ; if( !is_array($datas) || count($datas) == 0 ) return ; asort($datas); //按照大小排序 $random = rand(1,100); $sum = 0 ; $flag = ''; foreach($datas as $key => $data ){ $sum += $data ; if( $random <= $sum ){ $flag = $key; break ; } } if( $flag == '' ){ // 如果传递进来的值的和小于100 ,则取概率最大的。 $keys = array_keys($datas); $flag = $keys