自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (25)
  • 收藏
  • 关注

空空如也

java串口开发(含demo01案例)

串口通讯开发,支持windows平台和linux平台。demo01案例一个,最近公司项目用到记录一下。 Linux|Windows

2020-11-03

asp.net OA系统 源码 sqlserver数据库

asp.net OA系统 源码 sqlserver数据库

2009-04-09

BluePage通用分页类助开发者提高开发效率5

程序示例: 以下为引用的内容: <?php //这是mysql的函数,你可以加一个名为msGetCount的函数支持mssql //加到类里面,或作为外部函数 function myGetCount( $strQuery , $pDBC ) { $resResult = @mysql_query ( $strQuery , $pDBC ) ; while ( $arrRow = @mysql_fetch_row ( $resResult ) ) { $intCount = intval($arrRow[0]); } @mysql_free_result( $resResult ) ; return $intCount ; } //这是SQLserver的函数 //加到类里面,或作为外部函数 function msGetCount( $strQuery , $pDBC ) { $resResult = @mssql_query ( $strQuery , $pDBC ) ; while ( $arrRow = @mssql_fetch_row ( $resResult ) ) { $intCount = $arrRow[0]; } @mssql_free_result( $resResult ) ; return intval( $intCount ) ; } //使用例子 $dbconn = mysql_connect ( 'localhost' , 'dbname' , 'password' ) ; mysql_select_db( 'yourdb' , $dbconn ) ; $strQuery = 'SELECT COUNT(`id`) FROM TABLE WHERE 1' ; include ( "lib/BluePage.class.php" ) ; $pBP = new BluePage ; //作为外部函数时 $intCount = myGetCount( $strQuery , $dbconn ) ; //取得了记录数 //如果是SQLserver $intCount = msGetCount( $strQuery , $dbconn ) ; //取得了记录数 //作为类的方法时 $intCount = $pBP->myGetCount( $strQuery , $dbconn ) ;//取得了记录数 //如果是SQLserver $intCount = $pBP->msGetCount( $strQuery , $dbconn ) ;//取得了记录数 $pBP->get( $intCount, 10 ); //取得分页数据 ?> 当然,我们并不鼓励将数据库操作放入分页类中 。

2009-02-17

BluePage通用分页类助开发者提高开发效率4

this->_getlink默认为true,即表示取得分页的链接,为false时,有关*ln键名的变量,都不会有值它的作用在于,1 适用于手工设置链接的人 2 节省资源 以下为引用的内容: <?php $pBP->_getlink = false ; $aPDatas = $pBP->get( $intCount, $intShowNum ); ?> 8.9 $this->_encode有什么作用? : $this->_encode默认为true,即表示使用htmlspecialchars对Query String过滤 以下为引用的内容: <?php $pBP->_encode= false ;//不过滤query string $aPDatas = $pBP->get( $intCount, $intShowNum ); ?> 最后: 关于BluePage.default.inc.php配置文件 这个是默认的配置文件。你可以将面的内容拷贝一份,保存为另一个配置。比如命名为page.abc.inc.php 假设当前访问的是list.php文件,在list.php同级目录下有一目录保存config,如./config目录,而你将page.abc.inc.php保存在./config目录了。 以下为引用的内容: <?php $pBP->_encode= false ;//不过滤query string $aPDatas = $pBP->get( $intCount, $intShowNum ); $strHtml = $pBP->getHTML( $aPDatas, './config/page.abc.inc.php' ); //路径要正确 ?> 请根据你的页面输出编码,保存相应编码格式。就像你做模板一样。 如果你的页面是utf-8格式的,请保存配置文件为utf-8格式。注意,只是改page.abc.inc.php编码,类文件的编码请不要改动。 补充一点: 如果觉得没有取记录总数的函数不方便,你可以自已在类里面加上取总数的函数,或者使用外部函数 我们在实际应用中,取记录数的方法是跟随项目对象的,所以一般不加在分页类里面. 如果你没有自己取记录数的方法,你可以在分页类中加上,或者加到外部 [php]

2009-02-17

BluePage通用分页类助开发者提高开发效率2

以下为引用的内容: <?php include ( "lib/BluePage.class.php" ) ; $pBP = new BluePage ; $intCount = 1000 ; // 假设记录总数为1000 $intShowNum = 10 ; // 每页显示10 $pBP->_getlink = false ; // 取消取得链接 $pBP->_getqs = false ; // 取消取得Query String //返回分页数字(省资源) $aPDatas = $pBP->get( $intCount, $intShowNum ); //print_r($aPDatas); //打印出来看看 //只要最大页,上一页,与下一页和当前页以及offset返回(最省资源) $aPDatas = $pBP->get( $intCount, $intShowNum , 0 ); //print_r($aPDatas); //打印出来看看 ?> 取得offset 以下为引用的内容: <?php include ( "lib/BluePage.class.php" ) ; $pBP = new BluePage ; $intCount = 1000 ; // 假设记录总数为1000 $intShowNum = 10 ; // 每页显示10 $aPDatas = $pBP->get( $intCount, $intShowNum ); $offset = $aPDatas['offset'] ; ?> 非数据库分页: 比如有一篇文章长度是10000字节,要想每2000字节分为一页,那怎么办呢? 以下为引用的内容: <?php include ( "lib/BluePage.class.php" ) ; $pBP = new BluePage ; $strLen = strlen($strSubContent); //假设内容总长度,这个自己计算取得 $strSubLen = 2000 ; // 每页数据长度 $aPDatas = $pBP->get( $strLen, $strSubLen ); $offset = $aPDatas["offset"] ; //取得当前页的内容 $strSubContent = fn_substr( $strSubContent, $offset , $strSubLen ) ; //截取函数自己写 ?> 一些属性: 8.1 你使用的变量不是page,而是其他,比如是 pn : 以下为引用的内容: <?php $pBP->_var = 'pn' ; $aPDatas = $pBP->get( $intCount, $intShowNum ); ?> 8.2 $this->_prefix有什么作用? 当你的分页是类似于page=pp123这样的数字前面有字符的时候,$this->_prefix就有用了 以下为引用的内容: <?php $pBP->_prefix = 'pp' ; // 如page=pp123的 pp $aPDatas = $pBP->get( $intCount, $intShowNum ); ?> 8.3 $this->_postfix有什么作用? :

2009-02-17

BluePage通用分页类助开发者提高开发效率1

1 分页要与SQL无关。为什么分页必须与SQL无关呢?很显然,有一定开发经验的朋友,至少都在使用数据库代理类。我们不应该在分页类中global或传递数据库类,至于直接把数据库连接放进去,那更要不得。另外请看第5点。 2 分页要与html及样式分离。与html分离是显而易见的需要的,首先,就算是同一个网站,也会需要不同风格的分页,甚至有些用的还是图片。其次,可以应付不同编码格式。另外,与html和样式分离,即相当于PHP的模板技术一处道理,美工可以修改出自己想要的效果。 3 要考虑变量值问题,并非所有分页都是数字的。比如有些人分页是page=pn123,甚至是page=p123nfadfafdaf。分页类要提供这方面的处理。 4 web协议不仅仅限于http。很多分页类内部就把协议定死了http了,这是不可取的。 仅仅上面最基本的四点,现在所能看到的所谓分页类中,能做到其中两个的,基本上没有。 好吧。我们开始。 5 分页不仅限于数据库分页。有些是对内容的分页,比如把一篇长达上万字的内容进行分页,这样如果把SQL写到类里面的,就更要不得了,一点用也没有。 BluePage是一个通用的分页类,它能帮助你更快地完成分页任务。 先看使用例子: http://www.bluessoft.com/project/bluepage/example.php 使用例子1: 以下为引用的内容: <?php include ( "lib/BluePage.class.php" ) ; $pBP = new BluePage ; $intCount = 1000 ; // 假设记录总数为1000 $intShowNum = 10 ; // 每页显示10 $aPDatas = $pBP->get( $intCount , $intShowNum ) ; $strHtml = $pBP->getHTML( $aPDatas ) ; //在适当位置输出或赋值给一个模板变量 ?> 使用例子2: 以下为引用的内容: <?php include ( "lib/BluePage.class.php" ) ; $pBP = new BluePage ; $intCount = 1000 ; // 假设记录总数为1000 $intShowNum = 10 ; // 每页显示10 $aPDatas = $pBP->get( $intCount , $intShowNum ) ; //print_r($aPDatas); //如不记得返回,打印出来看看 ?> 使用例子3: 以下为引用的内容: <?php include ( "lib/BluePage.class.php" ) ; $pBP = new BluePage ; $intCount = 1000 ; // 假设记录总数为1000 $intShowNum = 10 ; // 每页显示10 $aPDatas = $pBP->get( $intCount , $intShowNum ) ; //第二个参数指定配置文件 $strHtml = $pBP->getHTML( $aPDatas , "myBPDiy.inc.php") ; ?> 输出控制: 以下为引用的内容: <?php include ( "lib/BluePage.class.php" ) ; $pBP = new BluePage ; $intCount = 1000 ; // 假设记录总数为1000 $intShowNum = 10 ; // 每页显示10 $aPDatas = $pBP->get( $intCount , $intShowNum ) ; // f 首页 // pg 上一组页码 // p 上一页 // bar 分页条 // ng 下一组页码 // n 下一页 // m 总页数 // sl 下拉选页 // i Input表单 $pBP->_order = 'm|sl' ; //只输出总页数与下拉选页 $strHtml = $pBP->getHTML( $aPDatas ) ; ?>

2009-02-17

如何使用PHP中的字符串函数

1)echo,print,printf,sprintf 前两个函数是输出字符串.字符串中如果有变量名则被替换成其值. 后两个函数类似于C的同名函数. (2)strchr,strlen,strtok,strrchr,strrev,strstr,strtolower, strtoupper,substr,ucfirst 这些是常用的字符串操作函数,有些和C中的同名函数意义完全一致. strrev是把一个字符串翻转. strtolower和strtoupper的意思应该不用解释了. ucfirst是把字符串的第一个字符变成大写. substr是返回字符串的一个子串,用法是:substr(字符串,头,长度). 头位置是 从0算起的.如果是负数,则是从尾部向前数的意思. (3)Chr,Ord 类似于C的同名函数. (4)explode,implode,join 这些是和数组有关的函数. explode(字符串,分割符)返回一个将字符串在分割符处分开所产生的数组. implode(数组,分割符)返回一个将数组各元素之间插上分割符而成的字符串. join与implode意义相同. (5)Chop 去掉字符串尾部的空白. (6)htmlspecialchars 将字符串中的HTML特殊字符换成它们的名字,例如\"<\"变成\"<\". (7)nl2br 在字符串中的每一个回车前面加上\"<BR>\". (8)AddSlashes,StripSlashes 分别给字符串中需要加上\"\\"才能用于数据库查询的字符加上和去掉\"\\". (9)parse_str 将\"name1=value1&name2=value2&...\"类型的字符串分析成一些变量. 例如: parse_str(\"a=1&b=2\"); 生成a与b两个变量,值分别为1,2. 如果有两对名字/值的名字部分相同,则后一个的值覆盖前一个的. 如果这两对的名字尾部都有\"[]\",例如\"a[]=1&a[]=2\",则生成数组a,两个元素分别为1,2

2009-02-17

phpMyAdmin2.6以上版本数据乱码问题

在phpMyAdmin2.6以上版本因为支持多语言集,弄得我们使用phpMyAdmin管理数据库的时候,查询出来的中文都是乱码,但是在我们的PHP程序调用时却没有这些问题。 去phpMyAdmin2.6的根目录下,打开以下这个文件: libraries/select_lang.lib.php 1、找到有"zh-gb2312"的那一行,把'zh-gb2312' 改成 'zh-gb2312-utf-8' 为什么这样加?那是因为服务器会把没有"-utf-8"的语言过滤掉,在libraries/database_interface.lib.php 第168行,根据英文说:“为了 防止混淆”, 或者如果不把'zh-gb2312' 改成 'zh-gb2312-utf-8',可以去掉过滤吧。把那个if去掉就OK了。 2、找到"mysql_charset_map = array("那一行 把'gb2312' => 'gb2312', 改成 'gb2312' => 'latin1', 保存,OK,在进入phpMyAdmin管理,选择语言chinese simplified(zh-gb2312-utf-8) 再看看你的那些中文数据。 所以说,我的这个解决办法就只是修改libraries/select_lang.lib.php这一个文件里的两个字就行,比较方便快捷。

2009-02-17

轻松实现php代码防注入,保护代码安全

今天写代码的时候猛然想到是不能能够通过一个文件来处理整个网站中所有可能出现注入的地方进行防范呢?这样就能够不用在每个程序里对每个变量进行过滤,节省了时间和代码。 我们主要是从两点出发,因为我们的获取的变量一般都是通过GET或者POST方式提交过来的,那么我们只要对GET和POST过来的变量进行过滤,那么就能够达到防止注入的效果。而且我们的PHP真是非常好,已经内置了$_GET和$_POST两个数组来存储所有变量,我们要做的工作就是过滤每个变量就可以了。 下面看具体的代码: php代码: 以下为引用的内容: /* PHP118= 全球最大的PHP中文社群 = PHPer的网上家园 */ /* Author: heiyeluren */ /* 过滤所有GET过来变量 */ foreach ($_GET as $get_key=%26gt;$get_var) { if (is_numeric($get_var)) if (is_numeric($get_var)) { $get[strtolower($get_key)] = get_int($get_var); } else { $get[strtolower($get_key)] = get_str($get_var); } } /* 过滤所有POST过来的变量 */ foreach ($_POST as $post_key=%26gt;$post_var) { if (is_numeric($post_var)) { $post[strtolower($post_key)] = get_int($post_var); } else { $post[strtolower($post_key)] = get_str($post_var); } } /* 过滤函数 */ //整型过滤函数 function get_int($number) { return intval($number); } //字符串型过滤函数 function get_str($string) { if (!get_magic_quotes_gpc()) { return addslashes($string); } return $string; } 那么我们把以上代码放到一个公共的文件里,比如security.inc.php里面,每个文件里都include一下这个文件,那么就能够给任何一个程序进行提交的所有变量进行过滤了,就达到了我们一劳永逸的效果。

2009-02-17

PHP中的代码安全和SQL Injection防范4

最后,再考虑提交一些大批量数据的情况,比如发贴,或者写文章、新闻,我们需要一些函数来帮我们过滤和进行转换,再上面函数的基础上,我们构建如下函数: 以下为引用的内容: /* 函数名称:post_check() 函数作用:对提交的编辑内容进行处理 参 数:$post: 要提交的内容 返 回 值:$post: 返回过滤后的内容 函数作者:heiyeluren */ function post_check($post) { if (!get_magic_quotes_gpc()) // 判断magic_quotes_gpc是否为打开 { $post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤 } $post = str_replace("_", "\_", $post); // 把 '_'过滤掉 $post = str_replace("%", "\%", $post); // 把' % '过滤掉 $post = nl2br($post); // 回车转换 $post= htmlspecialchars($post); // html标记转换 return $post; } 呵呵,基本到这里,我们把一些情况都说了一遍,其实我觉得自己讲的东西还很少,至少我才只讲了两方面,再整个安全中是很少的内容了,考虑下一次讲更多,包括php安全配置,apache安全等等,让我们的安全正的是一个整体,作到最安全。 最后在告诉你上面表达的:1. 初始化你的变量 2. 一定记得要过滤你的变量

2009-02-17

PHP中的代码安全和SQL Injection防范3

呵呵,那么我们就能够进行校验了,于是我们上面的程序代码就变成了下面的: 以下为引用的内容: <?php if (inject_check($_GET['id'])) { exit('你提交的数据非法,请检查后重新提交!'); } else { $id = verify_id($_GET['id']); // 这里引用了我们的过滤函数,对$id进行过滤 echo '提交的数据合法,请继续!'; } ?> 好,问题到这里似乎都解决了,但是我们有没有考虑过post提交的数据,大批量的数据呢? 比如一些字符可能会对数据库造成危害,比如 ' _ ', ' % ',这些字符都有特殊意义,那么我们如果进行控制呢?还有一点,就是当我们的php.ini里面的magic_quotes_gpc = off 的时候,那么提交的不符合数据库规则的数据都是不会自动在前面加' \ '的,那么我们要控制这些问题,于是构建如下函数: 以下为引用的内容: /* 函数名称:str_check() 函数作用:对提交的字符串进行过滤 参 数:$var: 要处理的字符串 返 回 值:返回过滤后的字符串 函数作者:heiyeluren */ function str_check( $str ) { if (!get_magic_quotes_gpc()) // 判断magic_quotes_gpc是否打开 { $str = addslashes($str); // 进行过滤 } $str = str_replace("_", "\_", $str); // 把 '_'过滤掉 $str = str_replace("%", "\%", $str); // 把' % '过滤掉 return $str; } OK,我们又一次的避免了服务器被沦陷的危险。

2009-02-17

PHP中的代码安全和SQL Injection防范2

我们知道Web上提交数据有两种方式,一种是get、一种是post,那么很多常见的sql注射就是从get方式入手的,而且注射的语句里面一定是包含一些sql语句的,因为没有sql语句,那么如何进行,sql语句有四大句: select 、update、delete、insert,那么我们如果在我们提交的数据中进行过滤是不是能够避免这些问题呢? 于是我们使用正则就构建如下函数: 以下为引用的内容: /* 函数名称:inject_check() 函数作用:检测提交的值是不是含有SQL注射的字符,防止注射,保护服务器安全 参 数:$sql_str: 提交的变量 返 回 值:返回检测结果,ture or false 函数作者:heiyeluren */ function inject_check($sql_str) { return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); // 进行过滤 } 我们函数里把 select,insert,update,delete, union, into, load_file, outfile /*, ./ , ../ , ' 等等危险的参数字符串全部过滤掉,那么就能够控制提交的参数了,程序可以这么构建: 以下为引用的内容: <?php if (inject_check($_GET['id'])) { exit('你提交的数据非法,请检查后重新提交!'); } else { $id = $_GET['id']; echo '提交的数据合法,请继续!'; } ?> 假设我们提交URL为:http://www.target.com/a.php?id=1,那么就会提示: "提交的数据合法,请继续!" 如果我们提交 http://www.target.com/a.php?id=1' select * from tb_name 就会出现提示:"你提交的数据非法,请检查后重新提交!" 那么就达到了我们的要求。 但是,问题还没有解决,假如我们提交的是 http://www.target.com/a.php?id=1asdfasdfasdf 呢,我们这个是符合上面的规则的,但是呢,它是不符合要求的,于是我们为了可能其他的情况,我们再构建一个函数来进行检查: 以下为引用的内容: /* 函数名称:verify_id() 函数作用:校验提交的ID类值是否合法 参 数:$id: 提交的ID值 返 回 值:返回处理后的ID 函数作者:heiyeluren */ function verify_id($id=null) { if (!$id) { exit('没有提交参数!'); } // 是否为空判断 elseif (inject_check($id)) { exit('提交的参数非法!'); } // 注射判断 elseif (!is_numeric($id)) { exit('提交的参数非法!'); } // 数字判断 $id = intval($id); // 整型化 return $id; }

2009-02-17

PHP中的代码安全和SQL Injection防范1

在PHP编码的时候,如果考虑到一些比较基本的安全问题,首先一点: 1. 初始化你的变量 为什么这么说呢?我们看下面的代码: 以下为引用的内容: if ($admin) { echo '登陆成功!'; include('admin.php'); } else { echo '你不是管理员,无法进行管理!'; } 好,我们看上面的代码好像是能正常运行,没有问题,那么加入我提交一个非法的参数过去呢,那么效果会如何呢?比如我们的这个页是 http://www.traget.com/login.php,那么我们提交:http://www.target.com/login.php?admin=1,呵呵,你想一些,我们是不是直接就是管理员了,直接进行管理。 当然,可能我们不会犯这么简单错的错误,那么一些很隐秘的错误也可能导致这个问题,比如最近暴出来的phpwind 1.3.6论坛有个漏洞,导致能够直接拿到管理员权限,就是因为有个$skin变量没有初始化,导致了后面一系列问题。 那么我们如何避免上面的问题呢?首先,从php.ini入手,把php.ini里面的register_global = off,就是不是所有的注册变量为全局,那么就能避免了。但是,我们不是服务器管理员,只能从代码上改进了,那么我们如何改进上面的代码呢?我们改写如下: 以下为引用的内容: $admin = 0; // 初始化变量 if ($_POST['admin_user'] && $_POST['admin_pass']) { // 判断提交的管理员用户名和密码是不是对的相应的处理代码 // ... $admin = 1; } else { $admin = 0; } if ($admin) { echo '登陆成功!'; include('admin.php'); } else { echo '你不是管理员,无法进行管理!'; } 那么这时候你再提交 http://www.target.com/login.php?admin=1 就不好使了,因为我们在一开始就把变量初始化为 $admin = 0 了,那么你就无法通过这个漏洞获取管理员权限。 2. 防止SQL Injection (sql注射) SQL 注射应该是目前程序危害最大的了,包括最早从asp到php,基本上都是国内这两年流行的技术,基本原理就是通过对提交变量的不过滤形成注入点然后使恶意用户能够提交一些sql查询语句,导致重要数据被窃取、数据丢失或者损坏,或者被入侵到后台管理。 基本原理我就不说了,我们看看下面两篇文章就很明白了: http://www.4ngel.net/article/36.htm http://www.4ngel.net/article/30.htm 那么我们既然了解了基本的注射入侵的方式,那么我们如何去防范呢?这个就应该我们从代码去入手了。

2009-02-17

升级PHP5的理由:PHP4和PHP5性能大对比

PHP 4到今年年底PHP Group将不再对其进行支持了,所以为了让大家更有信心的转移到PHP 5平台上,我特别做了这个测试,看看我们PHP 4.x 是否真的性能比我们的PHP 5.x要好捏,测试结果很明显,那就是PHP 5.x 比php 4.x不论是面向对象还是面向过程,都要比PHP 4.x 要快,所以大家完全有必要转移到PHP 5.x 平台上,去体验PHP 5.x 平台的各种功能和性能。 因为PHP 5 包括新的对象模型,更多新特点,更快的处理速度,特别是处理面向对象代码的速度,虽然在php 4中面向对象代码的速度比较一般,但是在PHP5.x中面向对象代码的速度都超过了面向过程的速度,所以不要对面向对象的性能持有怀疑,下面的测试结果将说明这一切。 【测试环境】 * CPU: Intel Pentium4 2.66GHz * Memory: 1GB * Disk: 73GB/SCSI * OS: FreeBSD 4.11 * Web: Apache 1.3.37 测试工具:ab (也可以选用http_load) 名词RPS: Requests per second (每秒的请求数量) 【PHP 4.4.2 测试结果】 [ 函数 Function ] 测试结果:ab -n 10000 -c 50 的结果是1047.23/rps [ 类 Class ] 不实例化类 测试结果:ab -n 10000 -c 50 的结果是 1034.98/rps 实例化类 测试结果:ab -n 10000 -c 50 的结果是 1006.14/rps 类的继承 测试结果:ab -n 10000 -c 50 的结果是 992.95/rps 【PHP 5.2.1测试结果】 [ 函数 Function ] 测试结果:ab -n 10000 -c 50 的结果是 1176.06/rps [ 类 Class ] 不实例化类 测试结果:ab -n 10000 -c 50 的结果是 1197.17/rps 实例化类 测试结果:ab -n 10000 -c 50 的结果是 1187.93/rps 类的继承和抽象 测试结果:ab -n 10000 -c 50 的结果是 1128.54/rps 【测试结果和分析】 [ 测试结果数据 ] 版本 函数测试 不实例化类 实例化类 类的继ā承 PHP 4.4.2 1047.23/rps 1034.98/rps 1006.14/rps 992.95/rps PHP 5.2.1 1176.06/rps 1197.17/rps 1187.93/rps 1128.54/rps [ 结果分析 ] 1. 总体来说,可以明显刚看到PHP5.2 的性能要比 PHP4.4略高一点,所以不要怀疑PHP5.2的性能会差,明显比 PHP4要快 2. PHP4.4中的类的解析性能明显要比函数的要慢,特别是当使用了继承以后,更是下降的厉害,所以在PHP4.4中更适宜使用面向过程和没有继承的类操作 3. PHP5.2中结果是类的执行速度比函数还要快,可以看出PHP5.2的引擎对面向对象处理花费了很大的功夫,同时他们不论是函数还是类,性能都不错 4. 通过这个测试,我们完全有理由在代码变更不大的情况下,把PHP4升级到PHP5,而且PHP5基本向下兼容PHP4的代码,除了一些特殊的代码。另外上面提到今年年底之后PHP Group将不再继续对PHP4进行维护了,所以早升级,早安心。

2009-02-17

PHP上传文件涉及到的参数

PHP默认的上传限定是最大2M,想上传超过此设定的文件,需要调整PHP、apache等的一些参数. 下面,我们简要介绍一下PHP文件上传涉及到的一些参数: file_uploads 是否允许通过HTTP上传文件的开关,默认为ON即是开 upload_tmp_dir upload_tmp_dir用来说明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件和有对文件夹的写权限,如果未指定则PHP使用系统默认值 upload_max_filesize 允许上传文件大小的最大值,默认为2M post_max_size 控制在采用POST方法进行一次表单提交中PHP所能够接收的最大数据量。如果希望使用PHP文件上传功能,则需要将此值改为比upload_max_filesize要大 max_input_time 以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间 memory_limit 为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量变量memory_limit的值应当适当大于post_max_size的值 max_execution_time max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增加,以避免PHP在脚本正在执行某些重要过程的时候将脚本关闭 对于linux主机,可能在/etc/httpd/conf.d/access.conf/下面里面还有php.conf 文件,这个文件可能会解决一些系统的文件大小限制问题。

2009-02-17

十天学会php之第十天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第九天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第八天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第七天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第六天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第五天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第四天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第三天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第二天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

十天学会php之第一天

系统学习PHP前,想看看十天学会php,虽然不会让你立刻上手,但是能系统的掌握PHP学习的方向... ...

2009-02-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除