PHP最全笔记(值得收藏,不时翻看一下)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP最全笔记(值得收藏,不时翻看一下)相关的知识,希望对你有一定的参考价值。
// 删除
方法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_加SessionID5. session可以存储除了资源以外的任何类型数据。
数据被序列化后再保存到文件中。6. $_SESSION的元素下标不能为整型!
因为只对元素值进行序列化。
元素内的数组下标无此要求。7. 生存周期
默认是浏览器关闭
因为浏览器保存的cookie变量SessionID是临时的
但是服务器端的session数据文件不一定消失(需要等待session的垃圾回收机制来处理)
可以延长cookie中phpSESSID变量的生命周期。(不推荐)
php.ini配置session.gc_maxlifetime8. 删除数据
$_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 获取或设置当前会话
IDsession_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.iniini_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:[email protected]/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);
以上是关于PHP最全笔记(值得收藏,不时翻看一下)的主要内容,如果未能解决你的问题,请参考以下文章