导航

随笔分类 -  编程开发 - PHP

摘要:面对大型的开源程序,我们如果要在此基础上修改,二次开发,或者简单的读懂代码。那是非常有难度的。非常好的是,PHPXref是一个相当好的工具,它能够使你快速读懂代码。这是因为,经过它处理后生成的文档中,你鼠标指针所到之处,它就会显示,这个函数在哪定义,哪些地方用到,包括是不是PHP函数,它都告诉你。对于变量,类也一样,并且,文件清单中,同时把文件中的注解也提取出来,让你一看就知此文件是做什么用的。当然,它也不是万能的,仍有一项不足,那就是,对于完全面向对象的程序,对象的流程,它是不能表示出来的。比不上ROSE的反向工程功能。PHPXref网站:http://phpxref.sourceforge 阅读全文

posted @ 2013-01-31 14:16 eastson 阅读(310) 评论(0) 推荐(0) 编辑

摘要:glob()函数依照libcglob()函数使用的规则寻找所有与pattern匹配的文件路径.$files=glob(‘*.php’); print_r($files); /*Array ( [0]=>phptest.php [1]=>pi.php [2]=>post_output.php [3]=>test.php ) */ $files=glob(‘*.{php,txt}’,GLOB_BRACE); print_r($files); /*Array ( [0]=>phptest.php [1]=>pi.php ... 阅读全文

posted @ 2013-01-31 14:15 eastson 阅读(308) 评论(0) 推荐(0) 编辑

摘要:前端时间主机提供商服务器发生了问题,让人郁闷的事是将数据恢复到了一星期以前,导致好些博客数据丢失。痛定思痛,想出了一个自动备份网站数据的方法。1.在服务器上实现数据转成SQL为了实现服务器上的数据转成SQL脚本,需要在服务器上放一个PHP文件,这个PHP文件的目的是连接到数据库,然后将数据读取出来,最后再转成SQL。例如,我们放一个tosql.php文件在服务器htdocs目录,内容如下:<?phperror_reporting(E_ALL & ~E_NOTICE);include_once 'application/configs/dbconfig.php';i 阅读全文

posted @ 2013-01-31 12:02 eastson 阅读(326) 评论(0) 推荐(0) 编辑

摘要:用户头衔是基于用户发帖数或者对论坛的贡献分配给用户的,通常显示在用户名的下面。例如chinaunix.net论坛就定义了白手起家,稍有继续,腰缠万贯等等这些按照财富来划分的头衔,显示为一段文字:铁血网则用户头衔对应的军衔,显示对应的简章图片:默认的Mybb论坛则显示为星星图片,不同的头衔显示不同个数的星星:Mybb的用户头衔是在admin/modules/user/titles.php管理的,对应后台表mybb_usertitles:字段类型说明uitsmallint用户头衔IDpostsint得到此头衔必需的最少发帖数titlevarchar(250)用户头衔名称starssmallint头 阅读全文

posted @ 2013-01-07 12:33 eastson 阅读(343) 评论(0) 推荐(0) 编辑

摘要:世界分为24个时区,GMT是零时区,也就是通常所说的格林尼治时间。中国位于东八区,比GMT时间多八个小时。例如,GMT现在是2011-06-2709:45:32,我们的时间就是2011-06-2701:45:32。PHP的mktime()函数返回的是GMT时间,date()函数返回的是依据date.timezone或者date_default_timezone_set()函数设置的时区对应的时间。PHP大陆内地可用的时区是:Asia/Chongqing,Asia/Shanghai,Asia/Urumqi(依次为重庆,上海,乌鲁木齐),港台地区可用:Asia/Macao,Asia/Hong_Ko 阅读全文

posted @ 2012-12-28 21:30 eastson 阅读(362) 评论(0) 推荐(0) 编辑

摘要:PHP遍历目录有两种方式,一种是使用传统的opendir()方式,另外一种是使用DirectoryIterator方式。使用opendir()遍历目录:if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; } closedir($dh); }}使用Direct... 阅读全文

posted @ 2012-12-28 21:30 eastson 阅读(328) 评论(0) 推荐(0) 编辑

摘要:网上看到一篇文件,内容是讲PHP实现更新数据库和查询数据库分开不同的连接。主要特性:1.简单的读写分离2.一个主数据库,可以添加更多的只读数据库3.读写分离但不用担心某些特性不支持4.缺点:同时连接两个数据库mysql_rw_php.class.php:<?php/******************************************* mysql-rw-php version 0.1 @ 2009-4-16*** code by hqlulu#gmail.com*** http://www.aslibra.com*** http://code.google.com/p/m 阅读全文

posted @ 2012-12-28 21:28 eastson 阅读(726) 评论(0) 推荐(0) 编辑

摘要:在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。下面通过例子,讲解这两者之间的区别。先看例子:<?php //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<br>';//14 echo mb_strlen($str,'utf8').'<br>';//6 echo mb_strlen($str,'gbk').'<br>';/ 阅读全文

posted @ 2012-12-28 21:26 eastson 阅读(219) 评论(0) 推荐(0) 编辑

摘要:昨天看UCHome源码的时候,发现有些地方用urlencode,有些地方用rawurlencode。由于对这两个方法的差异不是很清楚,特意写了一段代码来测试。请将下面的代码保存到一个PHP文件中:<?php test_encode('http://www.baidu.com?a=search&k=eclipse'); test_encode(':/?= &#'); test_encode('中文'); function test_encode($s) { echo "<b>urlencode(' 阅读全文

posted @ 2012-12-28 21:25 eastson 阅读(329) 评论(0) 推荐(0) 编辑

摘要:一个PHP系统,在开发的时候我们都是很希望能够得到非常详细的信息,用于代码的调试,比如指出问题出在哪里,在什么文件,在多少行,什么变量没有定义等。但在实际运行的时候,由于安全的考虑,我们不想给最终的使用者太多有关于服务器的信息,就很有必要屏蔽掉这些调试内容。PHP为开发者提供了很全面的关于这方面的考虑。error_reporting()函数可以指定PHP代码在运行时哪些内容可以显示,哪些内容不显示,可以在php.ini中指定,也可以在运行时指定。建立一个配置文件config.php,在配置文件定义一个常量用来控制当前是开发环境还是运行环境:define('D_BUG',  阅读全文

posted @ 2012-12-28 21:24 eastson 阅读(177) 评论(0) 推荐(0) 编辑

摘要:在查询数据库时,很多时候我们会在查询的条件中包含反斜线(/),双引号("),单引号(')。这三种符号在SQL语句中通常都有着特殊的含义,不能直接使用。mysql_escape_string()可以帮我们解决这个问题。假设这样一个例子:客户端有一个HTML表单,表单里面有一个input输入框,名称为item。当使用者在item输入框输入如下内容:Zak'sLaptop,然后点击提交按钮。服务端在收到这个请求时该如何处理呢?不正确的处理方式:<?php$item = $_REQUEST[‘item’];$sql_query = "SELECT * FROM 阅读全文

posted @ 2012-12-28 21:23 eastson 阅读(257) 评论(0) 推荐(0) 编辑

摘要:所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。上面是在百度百科中搜到的一段话,这里主要是想具体演示一下这个过程。1.准备数据库,在MySQL的test数据库中执行如下SQL语句:CREATE TABLE `test`.`admin_user` (`login` VARCHAR( 20 ) NOT NULL ,`password` VARCHAR( 20 ) NOT NULL ) ENGI 阅读全文

posted @ 2012-12-28 21:22 eastson 阅读(264) 评论(0) 推荐(0) 编辑

摘要:index.php文件第一行就是包含了include_once('./common.php');这里对common.php文件解析<?php/* [UCenter Home] (C) 2007-2008 Comsenz Inc. $Id: common.php 13032 2009-08-06 03:03:00Z liguode $*///定义一个常量,用来在其他页面中,防止被恶意用户直接调用其他PHP文件。@define('IN_UCHOME', TRUE);/*定义程序的调试模式,在我们调试程序的时候将常量值设为1,这样程序出错的时候会在页面显示错误信 阅读全文

posted @ 2012-12-28 21:19 eastson 阅读(310) 评论(0) 推荐(0) 编辑

摘要:UCHome针对MySQL数据库实现了一个封装类,没有使用ADODB或者PEAR这样的开源数据库框架,这样做的好处是文件非常少,空间非常小。1.数据库配置和很多的PHP项目一样,UCHome的数据库配置放在了配置文件config.php中,从第9行到16行:$_SC['dbhost'] = 'localhost'; //督????$_SC['dbuser'] = 'root';$_SC['dbpw'] = ''; $_SC['dbcharset'] = 'utf8'; 阅读全文

posted @ 2012-12-28 21:18 eastson 阅读(320) 评论(0) 推荐(0) 编辑

摘要:http://www.nextphp.com/upload/uchome2.0_datadict.html 阅读全文

posted @ 2012-12-28 21:17 eastson 阅读(158) 评论(0) 推荐(0) 编辑

摘要:UCHome可以通过设置允许某些IP地址访问,也可以禁止某些IP地址访问。IP控制的设置可以在管理后台通过“访问IP设置”完成。1.设置数据的保存IP控制的数据保存在UCHome的配置表config中,ipaccess代表允许访问的IP,ipbanned代表禁止访问的IP。可以设置多个,每个IP以\r\n分隔,既可输入完整地址,也可只输入IP开头。例如:"192.168."(不含引号)可匹配192.168.0.0~192.168.255.255范围内的所有地址,留空为所有IP均可访问。2.checkclose()函数function checkclose() { globa 阅读全文

posted @ 2012-12-28 21:15 eastson 阅读(283) 评论(0) 推荐(0) 编辑

摘要:UCHome进行表单提交时做了有效性检查,保证所有的提交都来源于本站。1.表单实现UCHome的所有表单都有一个隐藏的栏位formhash,用来保存由本地服务器产生一个Hash值。formhash的值由函数formhash()产生。<form method="post" action="admincp.php?ac=ip"> ...... <div class="footactions"> <input type="submit" name="thevaluesubmit&q 阅读全文

posted @ 2012-12-28 21:13 eastson 阅读(233) 评论(0) 推荐(0) 编辑

摘要:UCHome的权限是通过用户组实现的。UCHome的用户组分为三类:普通用户组,特殊用户组,系统用户组。普通用户组的用户根据经验值的变化自动升级或降级到另外一个普通用户组,特殊用户组和系统用户组的用户不受经验值的变化而改变用户组。普通用户组只能管理用户自己的空间,特殊用户组和系统用户组不仅能管理自己的空间,还能管理站点。所有的用户组信息都存放在usergroup表(http://www.nextphp.com/upload/uchome2.0_datadict.html#usergroup)中,栏位system表示组的类型:0代表普通用户组,-1代表系统用户组,1代表特殊用户组。用户组的每一个 阅读全文

posted @ 2012-12-28 21:13 eastson 阅读(420) 评论(0) 推荐(0) 编辑

摘要:PHP+MYSQL做网站开发通常都会碰到浏览器输出中文字符时乱码,这个问题的原因主要是因为HTML内容编码,PHP文件编码和MySQL数据库编码这三者不一致造成的。下面我们以UTF-8为例简述一下如何统一这三者之间的关系。新增一个PHP文件,命名为test_charset.php,将下面的代码保存到该文件中:<?php $charset = "utf8"; $con = mysql_connect("localhost", "root", ""); mysql_query("SET characte 阅读全文

posted @ 2012-12-28 21:09 eastson 阅读(480) 评论(0) 推荐(0) 编辑

摘要:序列化是将系统对象转换成字符串的过程,反序列化则是将字符串再转换成系统对象的过程。序列化后的字符串可以很方便的保存到操作系统文件,数据库,或者通过网络传输到其它电脑。PHP提供了实现序列化的方法serialize和unserialize。请将下面的代码保存到一个PHP文件中:<?php $a = array( "name" => "amonest", "age" => 30, "married" => true, "attributes" => array( &qu 阅读全文

posted @ 2012-12-28 21:08 eastson 阅读(199) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示