导航

2012年12月28日

摘要: 世界分为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 阅读(372) 评论(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 阅读(342) 评论(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 阅读(739) 评论(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 阅读(224) 评论(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 阅读(335) 评论(0) 推荐(0)

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

posted @ 2012-12-28 21:24 eastson 阅读(179) 评论(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 阅读(266) 评论(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 阅读(271) 评论(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 阅读(316) 评论(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 阅读(327) 评论(0) 推荐(0)

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

posted @ 2012-12-28 21:17 eastson 阅读(166) 评论(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 阅读(304) 评论(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 阅读(242) 评论(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 阅读(433) 评论(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 阅读(487) 评论(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 阅读(208) 评论(0) 推荐(0)

摘要: 1.安装TurboC++3.0,安装的目的是为了使用其bin目录下的make。2.安装Cygwin,当前最新版本是1.7.9-1。3.从开始菜单打开CygwinBashShell,进入Home目录,新增一个helloworld.c源文件。4.在相同目录下新增Makefile文件,将下面的内容复制到里面:helloworld.exe : helloworld.o gcc -o helloworld.exe helloworld.ohelloworld.o: gcc -c helloworld.cclean: rm -rf *.exe *.o *~5.运行make,当前目录下会多... 阅读全文

posted @ 2012-12-28 21:07 eastson 阅读(342) 评论(0) 推荐(0)

摘要: find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。看例子:find./-name"*.txt"-execls-l"{}"\;查找当前目录的.txt文件并以列表形式列出来find./-name"*.txt"-execmv"{}""{}d"\;批量修改当前目录下.txt文件的后缀名改为.txtd解释:-exec参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑 阅读全文

posted @ 2012-12-28 21:06 eastson 阅读(289) 评论(1) 推荐(0)

摘要: 以前使用的方式是将所有的文章日期读出来,然后一笔一笔处理:function _archives() { $sql = "select updatetime from tbs_articles"; $rows = $this->db->getAll($sql); $archives = array(); foreach ($rows as $row) { $month = gmdate("Ym", $row['updatetime'] + $this->_getOption('timeoffset') * 阅读全文

posted @ 2012-12-28 21:05 eastson 阅读(369) 评论(0) 推荐(0)

摘要: 1.下载最新的PHPMyAdmin版本。2.解压下载的文件到apache/htdocs目录下。3.复制config.sample.inc.php到config.inc.php。4.将下面的内容加入到config.inc.php:$cfg['Servers'][$i]['AllowNoPassword'] = true;$cfg['Servers'][$i]['host'] = '127.0.0.1';$cfg['Servers'][$i]['user'] = 'root 阅读全文

posted @ 2012-12-28 21:02 eastson 阅读(273) 评论(0) 推荐(0)