php中Ubb代码编辑器程序代码
代码如下 | 复制代码 |
<?php |
12.3 自动微缩图的生成
由于图片的数据量比较大,传递过程相对较长,所以在用户浏览图片时,常常希望先
显示一个图片的缩略图。
虽然在HTML中可以通过指定图片的宽度和高度来随意缩放图片,但是这种方法不会
减少图片的像素数目。图形文件的尺寸没有改变,当然也不会加快图片下载的速度了。当
然也可以手动通过图形软件生成图片的缩略图,但对于大量的图片展示来说,这个工作量
将十分巨大。为此微缩图的自动生成程序就被设计出来了。
PHP中提供的imagecopyresized函数就可以用来生成真正的缩赂图片。该函数的标推
语法如下:
语法:int imagecopyresized(int dst_im,int src_im,int dstX,int dstY,
int srcX,int srcY,int dstW,int dstH,int srcW,int srcH);
返回值:整数
函数种类:图形处理
内容说明:本函数可复制新图,并重新调整图片的大小尺寸。参数都是目的在前,来
源在后。参数dst im及src_im为图片的handle。参数dstX、dstY、srcX、srcY分别为目的
及来源的坐标。参数dstW、dstH、srcW、srcH分别为来源及目的的宽及高,欲调整的新图
的尺寸就在这儿配置。
下面举个例子来说明这个函数的用法,对应的程序thumb.php如程序清单12—5所示。
程序清单12—5 thumb.php
代码如下 | 复制代码 |
<? // 本函数从源文件取出图像,设定成指定大小,并输出到目的文件 // 源文件格式:gif,jpg,png // 目的文件格式:gif // $srcFile:源文件 // $dstFile: 目标文件 // $dstW:目标图片宽度 // $dstH:目标文件高度 function makethumb($srcFile,$dstFile,$dstW,$dstH) { $data = GetImageSize($srcFile,&$info); switch ($data[2]) { case 1: $imgsrc = @ImageCreateFromGIF($srcFile); break; case 2: $imgsrc = @ImageCreateFromJPEG($srcFile); break; case 3: $imgsrc = @ImageCreateFromPNG($srcFile); break; } $srcW = ImageSX($imgsrc); $srcH = ImageSY($imgsrc); $ni = ImageCreate($dstW,$dstH); ImageCopyResized($ni,$imgsrc,0,0,0,0,$dstW,$dstH,$srcW,$srcH); Imagegif($ni,$dstFile); // 如果需要输出到浏览器,那么将上一句改为 ImageJpeg($ni); // 如果需要其他格式的图片,改动最后一句就可以了 } ?> |
在这个例子中,首先通过getimagesize()函数获得源图片的情况,再用 imagecreatefromgif()、
imagecreatefromjpeg()或imagecreatefrompng()创建一个源位图$imgsrc,然后用
imagecreate()函数创建一个目标位图,其长、宽各是源位图的一半。然后调用imagecopyresized()
函数,将源位图缩小后拷贝到目标位图中,最后再用imagegif()函数生成缩略图。
这里所用到的图形处理函数就是由安装的GD库提供的,现对其分别进行说明。首先
介绍getimagesize()函数,其标准语法如下。
语法:array getimagesize(string filename,array [imageinfo]);
返回值:数组
函数种类:图形处理
内容说明:本函数可用来取得GIF、JPEG及PNG 3种WWW上图片的高与宽,不
需要安装GD library就可以便用本函数。返回的数组有4个元素,返回数组的第一个元素(索
引值0)是图片的高度,单位是像素(pixel);第二个元素(索引值1)是图片的宽度;第三个元
素(索引值2)是图片的文件格式,其值1为GIF格式、2为JPEG/JPG格式、3为PNG格式;
第四个元素(索引值3)为图片的高与宽字符串,height=xxx width=yyy。
通过getimagesize()函数的应用,能轻易获取图片的各种信息。下面给大家举一个获取
图片宽度、高度、格式、文件大小的信息的例子,来进一步领会getimagesize()函数的使用
技巧。程序imginfo如程序清单12—6所示。
程序清单12-6 imginfo.php
代码如下 | 复制代码 |
<?php $new_img_info = array (
|
在程序12-5中要创建一个缩略图,需要先创建一个用来绘图的空白的画布。
ImageCreate函数可以做到这一点。它将返回一个图像的标识符,并且需要告诉函数用像素
计算的画布有多大(x(宽度)与y(高度))。在程序12-5中用到的图形创建函数imagecreate()
的标准语法如下:
语法:int imagecreate(int x_size,int y_size);
返回值:整数
函数种类:图形处理
内容说明:本函数用来建立一张全空的图形。参数x_size、y_size为图形的尺寸,单位
为像素(pixel)。
如果要从已经存在的图片中取出图片文件代码,可以用imagecreatefromgif()、
imagecreatefromjpeg()或imagecreatefrompng(),例如函数imagecreatefromgif()就是从一个GIF
格式的图片文件中取出对应的图片源代码,其标准语法如下:
语法:int imagecreatefromgif(string filename);
返回值:整数
函数种类:图形处理
内容说明:本函数用来取出一张GIF格式图形,通常作为背景或者基本的画布样本使
用。参数filename可以是本地端的文件,也可以是网络的URL地址。返回值为GIF的文件
代码,可供其他函数使用。
在将源位图缩小后拷贝到目标位图中时,用到了imagecopyresized()函数,此函数可以
复制新图并调整大小,其标准语法如下:
语法:int imagecopyresized(int dst_im,int src_im,int dstX,int dstY,int srcX,int srcY,
int dstW,int dstH,int srcW,int srcH);
返回值:整数
函数种类:图形处理
内容说明:本函数可复制新图,并重新调整图片的大小尺寸。参数那是目的在前,来
源在后。参数ddst_im及src_im为图片的handle。参数dstX、dstY、srcX、srcY分别为目的
及来源的坐标。参数dstW、dstH、srcW、srcH分别为来源及目的的宽及高,若欲调整新图
的尺寸就在这里配置。
最后在输出图像时用到的imagegif()函数的标准语法如下:
语法:int imagegif(int im,string [filename]);
返问值:整数
函数种类:图形处理
内容说明:本函数用来建立一张GIF格式图形。参数im为使用ImageCreate()所建立
的图片代码,参数filename可省略,若无本参数filename,则会将图片直接送到浏览器端,
记得在送出图片之前要先送出使用Content-type:image/gif的标头字符串(header)到浏览器
端,以顺利传输图片。若要使用透明背景的GIF图,也就是GIF89a的格式,需要先使用
ImageColorTransparent()配置透明背景。本函数产生的GIF图,由于有版权的问题,因此
在商业上的使用还要多加考虑。
代码如下 | 复制代码 |
<?php $pic_name=date("dMYHis"); // 生成图片的宽度 // 生成图片的高度 function ResizeImage($im,$maxwidth,$maxheight,$name){ if($_FILES['image']['size']){ <img src="<? echo $pic_name.'.jpg'; ?>"><br><br> |
本文章来详细的分析一下关于
代码如下 | 复制代码 |
var reg = /^[u4e00-u9fa5]+$/; if(reg.test(str)) $action = trim($_GET['action']); |
当然如果要想字符串全是汉字的GBK2312编码匹配为:
代码如下 | 复制代码 |
$str = "小小子"; |
其实只要了解了各个编码的高位与低位的开始与结束,那么自然就可以写出正则,而且直接是十六位的,有啥困难?呵呵。不过要注意,在php里面,表示十六位是用的x。
所以如上,我们还可以用该正则表达式来判断是否是GB2312的汉字
代码如下 | 复制代码 |
<?php ?> |
在php结合了preg_match("/^[xb0-xf7][xa0-xfe]+$/",$str) 就可以快速的实现了做法,有需要的同学可以参考一下。
本文章来告诉你如何在php5中的php.ini中配置session的详细教程,包括了路径等等一些相关的操作,有需要了解的同学可参考一下。在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 <html> 标签之前:
代码如下 | 复制代码 |
<html> </body> |
面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。
存储 Session 变量
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
代码如下 | 复制代码 |
<?php <html> <?php </body> |
输出:
Pageviews=1在下面的例子中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 "views" 变量。如果已设置 "views" 变量,我们累加计数器。如果 "views" 不存在,则我们创建 "views" 变量,并把它设置为 1:
代码如下 | 复制代码 |
<?php if(isset($_SESSION['views'])) else |
Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个函数。
1、 session_start
函数功能:开始一个会话或者返回已经存在的会话。
函数原型:boolean session_start(void);
返回值:布尔值
功能说明:这个函数没有参数,且返回值均为true。最好将这个函数置于最先,而且在它之前不能有任何输出,否则会报警,如:Warning: Cannot send session cache limiter - headers already sent (output started at /usr/local/apache/htdocs/cga/member/1.php:2) in /usr/local/apache/htdocs/cga/member/1.php on line 3
2、 session_register
函数功能:登记一个新的变量为会话变量
函数原型:boolean session_register(string name);
返回值:布尔值。
功能说明:这个函数是在全局变量中增加一个变量到当前的SESSION中,参数name就是想要加入的变量名,成功则返回逻辑值true。可以用$_SESSION[name]或$HTTP_SESSION_VARS[name]的形式来取值或赋值。
3、 session_is_registered
函数功能:检查变量是否被登记为会话变量。
函数原型:boobean session_is_registered(string name);
返回值:布尔值
功能说明:这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。
4、 session_unregister
函数功能:删除已注册的变量。
函数原型:boolean session_session_unregister(string name);
返回值:布尔值
功能说明:这个函数在当前的session之中删除全局变量中的变量。参数name就是欲删除的变量名,成功则返回true.
5、 Session_destroy
函数功能:结束当前的会话,并清空会话中的所有资源。
函数原型:boolean session destroy(void);
返回值:布尔值。
功能说明:这个函数结束当前的session,此函数没有参数,且返回值均为true
上面介绍函数下文将会用到,但还有一些有关session的函数也介绍一下:
6、 session_encode
函数功能:sesssion信息编码
函数原型:string session_encode(void);
返回值:字符串
功能说明:返回的字符串中包含全局变量中各变量的名称与值,形式如:a|s:12:"it is a test";c|s:4:"lala"; a是变量名 s:12代表变量a的值"it is a test的长度是12 变量间用分号”;”分隔。
7、 session_decode
函数功能:sesssion信息解码
函数原型:boolean session_decode (string data)
返回值:布尔值
功能说明:这个函数可将session信息解码,成功则返回逻辑值true
8、 session_name
函数功能:存取当前会话名称
函数原型:boolean session_name(string [name]);
返回值:字符串
功能说明:这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name
9、 session_id
函数功能:存取当前会话标识号
函数原型:boolean session_id(string [id]);
返回值:字符串
功能说明:这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id
10、 session_unset
函数功能:删除所有已注册的变量。
函数原型:void session_unset (void)
返回值:布尔值
功能说明:这个函数和Session_destroy不同,它不结束会话。就如同用函数session_unregister逐一注销掉所有的会话变量
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据 1.SESSION信息保存在哪?
代码如下 | 复制代码 |
<?php session_start(); $_SESSION['name']='marcofly'; ?> |
session默认是保存到c:windows emp目录下,但是通过修改php.ini中的session.save_path值可以改变session的保存路径。
如:session.save_path = "d:/wamp/tmp"
--------------------------------------------------------------------------------
执行该代码后,就会在d:/wamp/tmp目录下,新增一个文件名为:sess_***的文件,打开之后,内容如下:name|s:8:"marcofly";
文件内容解释:
name:key
s:保存类型是字符串
8:字符串长度
marcofly:value
SESSION能够保存什么类型的数据呢?
如前一个例子所示,session能保存字符串,不仅如此,session还能保存整型(int),布尔型(bool),数组(array),而且,session还能保存对象
我们通过一个例子来简单的看下:
代码如下 | 复制代码 |
结果如下: name|s:8:"marcofly"; int|s:2:"10"; bool|b:1; array|a:2:{s:4:"name";s:8:"marcofly";s:3:"age";s:2:"23";} obj|O:4:"test":1:{s:3:"msg";s:11:"Hello World";} |
关于session的用法我以前有讲述过很多,大家可以仔细的看看哈。
session的垃圾回收机制
session.gc_maxlifetime
session.gc_probability
session.gc_divisor
session.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc(garbage collection 垃圾回收)进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。session.gc_divisor 默认为 100。
比如:session.gc_maxlifetime=30,session.gc_divisor=1000,session.gc_probability=1,就表示每一千个用户调用session_start()的时候,就百分百的会执行一次垃圾回收机制,将磁盘上没用的session文件删除。
注意:一般对于一些大型的门户网站,建议将session.gc_divisor调大一点,减少开销
接下来,我通过一个例子演示下,如何配置才能让调用gc(垃圾回收)进程呢!
通过配置php.ini文件,修改以下几个信息:
session.gc_maxlifetime = 60//当session文件在60s后还没有被访问的话,则该session文件将会被视为“垃圾文件”,并且等待gc(垃圾回收)进程的调用的时候被清理掉
session.gc_probability = 1000
因为gc进程被调用的概率是通过gc_probability/gc_divisor 计算得来的,这里我将session.gc_probability改成1000,而session.gc_divisor 默认情况下也是1000。则gc进程在每次执行session_start()函数的时候都会被调用到。
以下我通过截图简单的说明下:
我开启三个会话,则创建三个对应的session文件,当每个文件在30秒内都没被调用的话,就会被当成是“垃圾文件”,等到gc进程调用的时候,“垃圾文件”就会被unlink,因为之前我已经通过修改php.ini配置文件,将gc被调用的概率改成百分百,所以接下来,如果我重新使用任何一个浏览器刷新下页面的时候,三个session文件,应该只剩下一个了
session_unset()
释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session id
代码如下 | 复制代码 |
<?php session_start(); session_unset(); session_destroy(); session_write_close(); setcookie(session_name(),'',0,'/'); session_regenerate_id(true); ?> |
session_destroy()
删除当前用户对应的session文件以及释放session id,内存中的$_SESSION变量内容依然保留
因此,释放用户的session所有资源,需要顺序执行如下代码:
代码如下 | 复制代码 |
<?php |
删除session方法:
1、unset ($_SESSION['xxx']) 删除单个session,unset($_SESSION['xxx']) 用来unregister一个已注册的session变量。其作用和session_unregister()相同。session_unregister()在PHP5中不再使用,可将之打入冷宫。
unset($_SESSION) 此函数千万不可使用,它会将全局变量$_SESSION销毁,而且还没有可行的办法将其恢复。用户也不再可以注册$_session变量。
2、$_SESSION=array() 删除多个session
3、session_destroy()结束当前的会话,并清空会话中的所有资源。。该函数不会unset(释放)和当前session相关的全局变量(globalvariables),也不会删除客户端的session cookie.PHP默认的session是基于cookie的,如果要删除cookie的话,必须借助setcookie()函数。
总结:
session_destroy是注销所有的session变量,并且结束session会话;
session_unset()并不注销session变量,但把所有的session变量的值清空.
相关文章
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
c# WPF中通过双击编辑DataGrid中Cell的示例(附源码)
这篇文章主要介绍了c# WPF中通过双击编辑DataGrid中Cell的示例(附源码),帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...2021-03-03- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
php导出csv格式数据并将数字转换成文本的思路以及代码分享
php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07- ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
- 这篇文章主要介绍了vue项目,代码提交至码云,iconfont的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-30
- 这篇文章主要介绍了BootStrap和jQuery相结合实现可编辑表格的相关资料,需要的朋友可以参考下...2016-04-23