PHP条记!

前文索引:

我的个人PHP学习条记(一)

php根据前文回复续我的小我PHP进修笔记六SESSION画布等 Python

续~我的个人PHP学习条记(二)

续~我的个人PHP学习条记(三)

续~我的个人PHP学习条记(四)

续~我的个人PHP学习条记(五)本日的比较主要!

这一部份内容是接上篇 续~我的个人PHP学习条记(五)本日的比较主要!

// 三大特性

封装:隐蔽内部是吸纳,仅开拓接口。

继续:一个工具的成员被另一个工具所利用。
语法上表示为代码的共用。

多态:多种形态。

// 类与工具·关键字

this 代表本工具

public 公有的(继续链、本类、外部均可访问)

protected 保护的(仅继续链、本类可访问)

private 私有的(仅本类可访问)

parent:: 代表父类

self:: 代表本类(当前代码所在类)

static:: 代表本类(调用该方法的类)

static 静态成员(属性、方法),所有工具均可利用,外部也可直策应用或修正,静态方法不可访问非静态成员

final 方法用final不可被子类重载,类用final不可被继续(方法、类)

const 类常量(属性)

abstract 抽象类

interface 接口

extends 类继续(子接口继续接口、其他普通类继续)

implements 接口实现(类实现接口、抽象类实现借口)(对接口的实现和继续均可有多个)

Iterator 内置接口(迭代)

clone 克隆

instance 实例

instanceof 某工具是否属于某类

/ 【类与工具干系函数】 /

class_alias([$original [,$alias]]) 给类取别名

class_exists($class [,$autoload]) 检讨类是否已定义

interface_exists($interface [,$autoload]) 检讨接口是否已被定义

method_exists($obj, $method)检讨类的方法是否存在

property_exists($class, $property) 检讨工具或类是否具有该属性

get_declared_classes(void) 返回由已定义类的名字所组成的数组

get_declared_interfaces(void) 返回一个数组包含所有已声明的接口

get_class([$obj]) 返回工具的类名

get_parent_class([$obj]) 返回工具或类的父类名

get_class_methods($class) 返回由类的方法名组成的数组

get_object_vars($obj) 返回由工具属性组成的关联数组

get_class_vars($class) 返回由类的默认属性组成的数组

is_a($obj, $class) 如果工具属于该类或该类是此工具的父类则返回TRUE

is_subclass_of($obj, $class) 如果此工具是该类的子类,则返回TRUE

get_object_vars($obj) 返回由工具属性组成的关联数组

// 常用类

# PHP手册 -> 预定义类

Closure 闭包类,匿名函数工具的final类

stdClass 标准类,常日用于工具类保存凑集数据

__PHP_Incomplete_Class 不完全类,当只有工具而没有找到类时,则该工具被认为是该类的工具

Exception 非常类

PDO 数据工具类

// 魔术常量

__DIR__ 文件所在的目录

__LINE__ 文件中确当前行号

__FILE__ 文件的完全路径(绝对路径)和文件名

__CLASS__ 类的名称

__METHOD__ 类的方法名,包含类名和方法名

__FUNCTION__ 函数名称,用在方法内只表示方法名

// 反射机制 Reflection

浸染:1. 获取构造信息 2. 代理实行

ReflectionClass 报告一个类的有关信息

ReflectionMethod 报告一个方法的有关信息

ReflectionClass::export 输出类构造报告

# 代理实行

实例化 ReflectionFunction 类的工具

$f = new ReflectionFunction('func'); // func为函数func($p)

$f->invoke('param');

php

接下来开始本日的条记,本日的条记紧张是讲COOKIE SESSION 画布工具,文件操作,这些在日常网站中操作还是比较主要的!

/ 页面跳转 /

// PHP

header('Loacation: url')

header()实行完毕后,后面的代码也会连续实行,故需在该语句后加die结束

无法给出提示,直接跳转

// JS方法

location.href = url

// HTML

<meta http-equiv=\公众Refresh\公众 content=\"大众表示韶光的数值; url=要跳转的URI\"大众>

/ 【Cookie】 /

cookie是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。

cookie是HTTP标头的一部分,因此setcookie()函数必须在其它信息被输出到浏览器前调用,这和对header()函数的限定类似。
可以利用输出缓冲函数来延迟脚本的输出,直到按须要设置好了所有的cookie或者其它HTTP标头。

// 新增

setcookie 新增一条cookie信息

setcookie($name [,$value [,$expire [,$path [,$domain [,$secure [,$httponly]]]]]])

#把稳:setcookie()函数前不能有输出!
除非开启ob缓存!

# 参数解释

$name - cookie的识别名称

利用$_COOKIE['name']抵用名为name的cookie

$value - cookie值,可以为数值或字符串,此值保存在客户端,不要用来保存敏感数据

假定$name参数的值为'name',则$_COOKIE['name']就可取得该$value值

$expire - cookie的生存期限(Unix韶光戳,秒数)

如果$expire参数的值为time()+6060247则可设定cookie在一周后失落效。
如果未设定该参数,则会话后立即失落效。

$path - cookie在做事器真个指定路径。
当设定该值时,做事器中只有指定路径下的网页或程序可以存取该cookie。

如果该参数值为'/',则cookie在全体domain内有效。

如果设为'/foo/',则cookie就在domain下的/foo/目录及其子目录内有效。

默认值为设定cookie确当前目录及其子目录。

$domain - 指定此cookie所属做事器的网址名称,预设是建立此cookie做事器的网址。

假如cookie能在如abc.com域名下的所有子域都有效,则该参赛应设为'.abc.com'。

$secure - 指明cookie是否仅通过安全的HTTPS连接传送中的cookie的安全识别常数,如果设定该值则代表只有在某种情形下才能在客户端与做事端之间通报。

当设成true时,cookie仅在安全的连接中被设置。
默认值为false。

// 读取

- 浏览器要求时会携带当前域名下的所有cookie信息到做事器。

- 任何从客户端发送的cookie都会被自动存入$_COOKIE全局数组。

- 如果希望对一个cookie变量设置多个值,则需在cookie的名称后加[]符号。
即以数组形态保存多条数据到同一变量。

//设置为$_COOKIE['user']['name'],把稳user[name]的name没有引号

setcookie('user[name]', 'shocker');

- $_COOKIE也可以为索引数组

// 删除

方法1:将其值设置为空字符串

setcookie('user[name]', '');

方法2:将目标cookie设为“已过期”状态。

//将cookie的生存韶光设置为过期,则生存期限与浏览器一样,当浏览器关闭时就会被删除。

setcookie('usr[name]', '', time()-1);

# 把稳:

1. cookie只能保存字符串数据

2. $_COOKIE只用于吸收cookie数据,不用于设置或管理cookie数据。

对$_COOKIE进行操作不会影响cookie数据。

$_COOKIE只会保存浏览器在要求时所携带的cookie数据。

3. cookie生命周期:

临时cookie:浏览器关闭时被删除

持久cookie:$expire参数为韶光戳,表示失落效韶光。

4. 有效目录

cookie只在指定的目录有效。
默认是当前目录及其子目录。

子目录的cookie在其父目录或同级目录不可获取。

5. cookie区分域名

默认是当前域名及其子域名有效。

6. js中通过document.cookie得到,类型为字符串

7. 浏览器对COOKIE总数没有限定,但对每个域名的COOKIE数量和每个COOKIE的大小有限,而且不同浏览器的限定不同。

/ 【session】 /

1. 开启session机制

session_start()

把稳:session_start()函数前不能有输出!
除非开启ob缓存。

2. 操作数据

对$_SESSION数组进行操作

3. 浏览器端保存SessionID,默认为当前域名下的所有目录及其子目录生效。
即默认设置cookie的path值为'/'

4. 做事器保存session数据

默认保存办法:每个会话都会天生一个session数据文件,文件名为:sess_加SessionID

5. session可以存储除了资源以外的任何类型数据。

数据被序列化后再保存到文件中。

6. $_SESSION的元素下标不能为整型!

由于只对元素值进行序列化。

元素内的数组下标无此哀求。

7. 生存周期

默认是浏览器关闭

由于浏览器保存的cookie变量SessionID是临时的

但是做事器真个session数据文件不一定消逝(须要等待session的垃圾回收机制来处理)

可以延长cookie中PHPSESSID变量的生命周期。
(不推举)

php.ini配置session.gc_maxlifetime

8. 删除数据

$_SESSION变量在脚本结束时依然会消逝。
开启session机制时会造出$_SESSION变量。

$_SESSION与保存session数据的文件是两个空间。

unset($_SESSION['key'])只是删除数组内的该元素,不会立即相应到保存session数据的文件上。

等到脚本结束,才会将$_SESSION的数据写入到该文件中。

session_destroy() 销毁保存session数据的文件,也不会对该文件写入内容。

并不删除$_SESSION变量,unset或脚本结束才会删除该变量。

如何完备删除一个session?需删除3部分

unset($_SESSION);

删除$_SESSION变量后,数据文件并未被改动。
如果单独利用unset,则需先置空$_SESSION = array()

session_destroy();

setcookie('PHPSESSID', '', time()-1); //保险做法是将其生命周期失落效

全体脚本周期内,只对数据文件读一次、写一次。

// 重写session的存储机制

# session存储办法

session.save_handler = user|files|memcache

# 因数据文件过多导致的问题,可通过分子目录保存进行办理

PHP配置文件下session.save_path选项,并需手动创建数据存放目录。

在该配置选项前加层级。
分布子目录的原则,利用会话ID的相应字母来分配子目录。
仍需手动创建子目录。

session.save_path = \"大众2; F:/PHPJob/Temp\"大众

# 多做事器数据共享问题

# 数据存储操作:

初始化$open、开释资源$close、读$read、写$write、销毁存储介质$destroy(调用session_destroy时触发该操作)、垃圾回收$gc

# 会话ID的长度可变。
不同的设置办法导致不同长度的会话ID。

session.hash_function 许可用户指定天生会话ID的散列算法。

'0' 表示MD5(128 位),'1' 表示SHA-1(160 位)。

session.hash_bits_per_character 许可用户定义将二进制散列数据转换为可读的格式时每个字符存放多少个比特。

可能值为 '4'(0-9,a-f),'5'(0-9,a-v),以及 '6'(0-9,a-z,A-Z,\"大众-\"大众,\"大众,\公众)。

总hash长度为128bit,会话ID长度为128/可能值,4->32, 5->26, 6->22

# 自定义数据存储操作方法

# 把稳:不用关心PHP如何序列化、反序列化、如何得到数据和写入数据,只做与数据存储干系的操作

session_set_save_handler 设置用户自定义的会话数据存储函数

bool session_set_save_handler(callable $open, callable $close, callable $read, callable $write, callable $destroy, callable $gc)

实行顺序:open, close, read, write, destroy, gc

# 先设置处理器,再开启会话

# 常用函数

session_start 开启或规复会话机制

session_id 获取或设置当前会话ID

session_destroy 销毁当前会话的所有数据(销毁数据文件)

session_name 获取或设置当前会话名称(cookie变量名,默认为PHPSESSID)

session_save_path 获取或设置当前会话数据文件保存路径

session_set_save_handler 设置用户自定义的会话数据存储函数

session_unset 开释所有会话变量(清空$_SESSION数组元素)

session_encode 将当前会话数据编码为一个字符串

session_decode 将字符串解译为会话数据

session_write_close 写入会话数据并关闭会话

session_register_shutdown 关闭会话

session_set_cookie_params 设置会话cookie变量,必须在session_start()前利用。

session_set_cookie_params(0,\"大众/webapp/\公众); //设置session生存韶光

session_get_cookie_params 获取会话cookie变量。
返回包含当前会话cookie信息的数组

# 配置php.ini

ini_set($varname, $newvalue);

//该函数的配置只对当前脚本生效

//并非所有php.ini设置均可用该函数设置

ini_get($varname) //获取某配置项信息

ini_get_all([str $extension]) //返回所有配置项信息的数组

# session扩展配置

session.name 指定会话名以用作cookie的名字。
只能由字母数字组成,默认为PHPSESSID。

session.save_path 定义了通报给存储处理器的参数。

如果选择了默认的files文件处理器,则此值是创建文件的路径。
默认为/tmp。

可选的N参数来决定会话文件分布的目录深度。

要利用N参数,必须在利用前先创建好这些目录。
在ext/session目录下有个小的shell脚本名叫mod_files.sh可以用来做这件事。

如果利用了N参数并且N大于0,那么将不会实行自动垃圾回收。

session.save_handler 定义了来存储和获取与会话关联的数据的处理器的名字。
默认为files。

如果用户自定义存储器,则该值改为user。

ini_set('session.save_handler', 'user');//此设置只针对当前脚本生效。

session.auto_start 指定会话模块是否在要求开始时自动启动一个会话。
默认为 0(不启动)。

session.gc_probability与session.gc_divisor合起来定义了在每个会话初始化时启动gc(garbage collection 垃圾回收)进程的概率。
此概率用 gc_probability/gc_divisor 打算得来。
例如 1/100 意味着在每个要求中有 1% 的概率启动gc进程。
session.gc_divisor默认为100。
session.gc_probability默认为1。

/ 【图片天生与处理】 /GD库

// 画布天生

# 新建画布

imagecreate 新建一个基于调色板的图像

resource imagecreate(int $x_size, int $y_size)

imagecreatetruecolor 新建一个真彩色图像

# 基于已有文件或URL创建画布

imagecreatefromgd2 从GD2文件或URL新建一图像

imagecreatefromgd2part 从给定的GD2文件或URL中的部分新建一图像

imagecreatefromgd 从GD文件或URL新建一图像

imagecreatefromgif 由文件或URL创建一个新图象

imagecreatefromjpeg 由文件或URL创建一个新图象

imagecreatefrompng 由文件或URL创建一个新图象

imagecreatefromstring 从字符串中的图像流新建一图像

imagecreatefromwbmp 由文件或URL创建一个新图象

imagecreatefromxbm 由文件或URL创建一个新图象

imagecreatefromxpm 由文件或URL创建一个新图象

// 颜色分配

imagecolorallocate 为一幅图像分配颜色

int imagecolorallocate(resource $image, int $red, int $green, int $blue)

imagecolorallocatealpha 为一幅图像分配颜色 + alpha

imagecolordeallocate 取消图像颜色的分配

imagecolortransparent 将某个颜色定义为透明色

imagecolorat 取得某像素的颜色索引值

imagecolorclosest 取得与指定的颜色最靠近的颜色的索引值

imagecolorclosestalpha 取得与指定的颜色加透明度最靠近的颜色

imagecolorclosesthwb 取得与给定颜色最靠近的色度的黑白色的索引

imagecolorexact 取得指定颜色的索引值

imagecolorexactalpha 取得指定的颜色加透明度的索引值

imagecolormatch 使一个图像中调色板版本的颜色与真彩色版本更能匹配

imagecolorresolve 取得指定颜色的索引值或有可能得到的最靠近的替代值

imagecolorresolvealpha 取得指定颜色 + alpha 的索引值或有可能得到的最靠近的替代值

imagecolorset 给指定调色板索引设定颜色

imagecolorsforindex 取得某索引的颜色

imagecolorstotal 取得一幅图像的调色板中颜色的数目

// 区域添补

imagefill 区域添补

bool imagefill(resource $image, int $x, int $y, int $color)

imagefilledarc 画一椭圆弧且添补

imagefilledellipse 画一椭圆并添补

imagefilledpolygon 画一多边形并添补

imagefilledrectangle 画一矩形并添补

imagefilltoborder 区域添补到指定颜色的边界为止

imagesettile 设定用于添补的贴图

// 图形创建

imagearc 画椭圆弧

imagechar 水平地画一个字符

imagecharup 垂直地画一个字符

imagedashedline 画一虚线

imageellipse 画一个椭圆

imageline 画一条线段

imagepolygon 画一个多边形

imagerectangle 画一个矩形

imagesetpixel 画一个单一像素

imagesx 取得图像宽度

imagesy 取得图像高度

// 画笔设置

imagesetbrush 设定画线用的画笔图像

imagesetstyle 设定画线的风格

imagesetthickness 设定画线的宽度

// 图形拷贝

imagecopy 拷贝图像的一部分

imagecopymerge 拷贝并合并图像的一部分

imagecopymergegray 用灰度拷贝并合并图像的一部分

imagecopyresampled 重采样拷贝部分图像并调度大小

imagecopyresized 拷贝部分图像并调度大小

// 字符创建

imagestring 水平地画一行字符串

imagestringup 垂直地画一行字符串

imagepsslantfont 倾斜某字体

imagefontheight 取得字体高度

imagefontwidth 取得字体宽度

imagettfbbox 取得利用 TrueType 字体的文本的范围

imageloadfont 载入一新字体

imagepsencodefont 改变字体中的字符编码矢量

imagepsextendfont 扩充或精简字体

// 导出画布为图片

imagegif 以GIF格式将图像输出到浏览器或文件

imagepng 以PNG格式将图像输出到浏览器或文件

imagejpeg 以JPEG格式将图像输出到浏览器或文件

imagewbmp 以WBMP格式将图像输出到浏览器或文件

通过header()发送 \"大众Content-type: image/图片格式\公众 可以使PHP脚本直接输出图像。

header(\"大众Content-type: image/gif\"大众); imagegif($im);

imagegd 将 GD 图像输出到浏览器或文件

imagegd2 将 GD2 图像输出到浏览器或文件

// 开释画布资源

imagedestroy 销毁图像

// 图像信息

image_type_to_extension 取得图像类型的文件后缀

getimagesize 取得图像大小

imagesx 取得图像宽度

imagesy 取得图像高度

imageistruecolor 检讨图像是否为真彩色图像

imagetypes 返回当前 PHP 版本所支持的图像类型

// 图像设置

imagerotate 用给定角度旋转图像

imagealphablending 设定图像的混色模式

imageantialias 是否利用抗锯齿(antialias)功能

imagefilter 对图像利用过滤器

imagegammacorrect 对 GD 图像运用 gamma 改动

imageinterlace 激活或禁止隔行扫描

/ 【缩略图】【水印】 /

imagecopyresampled 重采样拷贝部分图像并调度大小

bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

imagecopymerge 拷贝并合并图像的一部分

bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )

getimagesize 取得图像大小

array getimagesize ( string $filename [, array &$imageinfo ] )

/ 【URL函数】 /

get_headers — 取得做事器相应一个 HTTP 要求所发送的所有标头

get_meta_tags — 从一个文件中提取所有的 meta 标签 content 属性,返回一个数组

http_build_query — 天生 URL-encode 之后的要求字符串

urldecode — 解码已编码的URL字符串

urlencode — 编码URL字符串

parse_url — 解析URL,返回其组成部分

'http://username:password@hostname/path?arg=value#anchor'

scheme(如http), host, port, user, pass, path, query(在问号?之后), fragment(在散列符号#之后)

//编码可用于交流多个变量

$a = '中国';

$b = '四川';

$a = urlencode($a);

$b = urlencode($b);

$a = $a.'&'.$b;

$b = explode('&', $a);

$a = urldecode($b[1]);

$b = urldecode($b[0]);

echo $a, $b;

//list()函数用于交流变量

list($a, $b) = array($b, $a);

/ 【文件、目录】 /

dirname($path) 返回路径中的目录部分

basename($path [,$suffix]) 返回路径中的文件名部分

pathinfo($path [,$options]) 返回文件路径的信息(数组元素:dirname,basename,extension)

realpath($path) 返回规范化的绝对路径名

copy($source, $dest) 拷贝文件

unlink($file) 删除文件

rename($old, $new) 重命名或移动一个文件或目录

mkdir($path [,$mode [,$recursive]]) 新建目录

$mode表示权限,默认0777

$recursive表示可创建多级目录,默认false

rmdir($dir) 删除目录(目录必须为空,且具有权限)

file_exists($file) 检讨文件或目录是否存在

is_file($file) 判断文件是否存在且为正常的文件

is_dir($file) 判断文件名是否存在且为目录

is_readable($file) 判断文件或目录是否可读

is_writable($file) 判断文件或目录是否可写

is_executable($file) 判断给定文件名是否可实行

is_link($file) 判断给定文件名是否为一个符号连接

tmpfile(void) 建立一个临时文件

tempnam($dir, $prefix) 在指定目录中建立一个具有唯一文件名的文件

file($file) 把全体文件读入一个数组中

fopen($filename, $mode [,$use_include_path])

$mode参数:(加入'b'标记办理移植性)

'r' 只读办法打开,将文件指针指向文件头。

'r+' 读写办法打开,将文件指针指向文件头。

'w' 写入办法打开,将文件指针指向文件头并将文件大小截为零。
如果文件不存在则考试测验创建之。

'w+' 读写办法打开,将文件指针指向文件头并将文件大小截为零。
如果文件不存在则考试测验创建之。

'a' 写入办法打开,将文件指针指向文件末端。
如果文件不存在则考试测验创建之。

'a+' 读写办法打开,将文件指针指向文件末端。
如果文件不存在则考试测验创建之。

'x' 创建并以写入办法打开,将文件指针指向文件头。

'x+' 创建并以读写办法打开,将文件指针指向文件头。

fclose($handle) 关闭一个已打开的文件指针

fread($handle, $length) 读取文件(可安全用于二进制文件)

fwrite($handle, $string [,$length]) 写入文件(可安全用于二进制文件)

rewind($handle) 倒回文件指针的位置

ftell($handle) 返回文件指针读/写的位置

fseek($handle, $offset [,$whence]) 在文件指针中定位

feof($handle) 测试文件指针是否到了文件结束的位置

fgets 从文件指针中读取一行

fgetss 从文件指针中读取一行并过滤掉HTML标记

flock($handle, $opt) 轻便的咨询文件锁定

$opt:LOCK_SH 取得共享锁定(读取的程序);LOCK_EX 取得独占锁定(写入的程序);LOCK_UN 开释锁定(无论共享或独占)

readfile($file) 读入一个文件并写入到输出缓冲

fflush($handle) 将缓冲内容输出到文件

touch($file [,$time [,$atime]]) 设定文件的访问和修正韶光

fileatime 取得文件的上次访问韶光

filectime 取得文件的inode修正韶光

filegroup 取得文件的组

fileinode 取得文件的inode

filemtime 取得文件修正韶光

fileowner 取得文件的所有者

fileperms 取得文件的权限

filesize 取得文件大小

filetype 取得文件类型

/ fileinfo / 获取/设置文件信息

#扩展Fileinfo,配置php.ini

#extension=php_fileinfo.dll

finfo_open([$opt]) //创建一个文件信息资源

finfo_file($finfo, $file [,$opt]) //获取文件信息

finfo_set_flags($finfo, $opt) //设置文件信息项

finfo_close($finfo) //关闭文件信息资源

mime_content_type($file) //获取文件的MIME类型

$opt参数选项:

FILEINFO_MIME_ENCODING 文件编码类型

FILEINFO_MIME_TYPE 文件MIME类型

//目录

chdir($dir) 改变当前目录

chroot($dir) 将当前目录改变为当提高程的根目录

closedir($handle) 关闭目录句柄

dir($dir) 返回一个目录的实例工具

getcwd() 取得当前事情目录

opendir($path) 打开目录句柄

readdir($handle) 从目录句柄中读取条款

rewinddir($handle) 倒回目录句柄

scandir($dir [,$order]) 列出指定路径中的文件和目录

glob($pattern [,$flags]) 探求与模式匹配的文件路径

$flags:

GLOB_MARK - 在每个返回的项目中加一个斜线

GLOB_NOSORT - 按照文件在目录中涌现的原始顺序返回(不排序)

GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式

GLOB_NOESCAPE - 反斜线不转义元字符

GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'

GLOB_ONLYDIR - 仅返回与模式匹配的目录项

查找多种后缀名文件:glob('.{php,txt}', GLOB_BRACE);

/ 解压缩 /

//新建ZipArchive工具

$zip = new ZipArchive;

//打开ZIP文件

$zip->open($file [,$flags]);

$flags:

ZIPARCHIVE::OVERWRITE 覆盖(不存在会自动创建)

ZIPARCHIVE::CREATE 添加(不存在会自动创建)

ZIPARCHIVE::EXCL

ZIPARCHIVE::CHECKCONS

//关闭正在处理的ZIP文件

//解压缩ZIP文件

$zip->extractTo($dest, [$entries]);

$dest:解压到的文件夹,$entries:解压的条款

//添加文件到ZIP文件

$zip->addFile($file, [$newname]);

$newname可以为\公众dir/file\公众,这样可以将文件添加到压缩文件中的某个目录下。
其他函数也如此。

//添加文件到ZIP文件,而内容来自字符串

$zip->addFromString($file, $str);

//添加空文件夹到ZIP文件

$zip->addEmptyDir($dir);

//通过索引删除ZIP中的文件或文件夹

$zip->deleteIndex($index);

//通过名称删除ZIP中的文件或文件夹

$zip->deleteName($name);

//设置ZIP文件注释

$zip->setArchiveComment($str);

//获取ZIP文件注释

$zip->getArchiveComment();

//通过索引获取文件内容

$zip->getFromIndex($index);

//通过名称获取文件内容

$zip->getFromName($name);

//获取索引文件的文件名称

$zip->getNameIndex($index);

//通过索引重命名文件

$zip->renameIndex($index, $newname);

//通过名称重命名文件

$zip->renameName($name, $newname);

//若将文件夹内容打包成ZIP文件,需循环文件夹的所有目录及文件

function addFileToZip($path, $zip) {

//打开当前文件夹$path

$handle = opendir($path);

//循环读取子文件夹及文件

//为防止文件名本身可被转换为false的情形(比如为\"大众0\"大众),则需用不全等!==

while ($file = readdir($handle) !== false) {

//过滤假文件夹

if ($file != '.' && $file != '..') {

//对付子文件夹则递归调用本函数

if (is_dir($path . '/' . $file)) {

addFileToZip($path.'/'.$file, $zip);

} else {

//将文件添加到ZIP工具

$zip->addFile($path . '/' . $file);

}

}

}

//关闭文件夹$path

closedir($path);

}

// ----- END 解压缩 ----- //

/ 【文件上传】 /

enctype=\"大众multipart/form-data\公众 //FORM标签必须的属性

$_FILES 上传文件信息数组变量

error 上传缺点信息

无缺点

文件大小超过php.ini配置

1) upload_max_filesize 许可上传的最大文件大小

2) post_max_size 最大的POST数据大小

3) memory_limit 每个脚本能够利用的最大内存数量(默认128MB)

文件大小超过浏览器表单配置

MAX_FILE_SIZE 表示表单数据最大文件大小,该元素需在文件上传域之前。
(默认2M)

<input type=\公众hidden\"大众 name=\"大众MAX_FILE_SIZE\公众 value=\"大众102400\"大众>

文件只有部分被上传

文件没有被上传

6,7 临时文件写入时失落败

找不到临时文件

文件写入失落败

name 文件名

type 文件类型

tmp_name 上传文件临时路径

size 文件大小

move_uploaded_file($path, $newpath); //将上传的文件移动到新位置

is_uploaded_file($file) //判断是否为POST上传的文件

//多文件上传

<input type=\"大众file\公众 name=\公众updfile[]\"大众 /> //HTML中以数组提交

$_FILES['updfile']['tmp_name'][0] //做事器端可访问第一个文件的临时路径,其他属性类似

//php.ini配置

file_uploads = On 是否许可HTTP上传文件

upload_max_filesize 上传文件大小限定,默认为2M

post_max_size post办法表单数据总大小限定,默认为8M

upload_tmp_dir 上传文件临时目录,默认是系统临时目录

需设置上传文件临时目录,给其最小权限

GET办法的最大传输量为2K

/ 【批量提交】 /

FORM表单中的name值可用名称加中括号的形式,在$_POST获取表单数据时,可多项提交形成数组。

比如多文件上传file,复选框提交checkbox等。

<input type=\公众checkbox\"大众 name=\"大众id[]\"大众 value=\"大众值1\公众 />

<input type=\"大众checkbox\"大众 name=\公众id[]\"大众 value=\公众值2\"大众 />

$id = $_POST['id']; //则可得到全部当选中的复选框值,形成索引数组

如果name值为:

<input type=\"大众checkbox\公众 name=\"大众id[one]\"大众 value=\"大众值1\公众 />

<input type=\"大众checkbox\"大众 name=\公众id[two]\"大众 value=\"大众值2\公众 />

$id = $_POST['id']; //则可获取所有name为id[...]的值,形成管理数组