2008年10月所有随笔

恢复汕头城内-stcnw.com

1. 先装 PHP,目前还是 php-5.2.6-Win32.zip 这个。服务器有,按以前的日志手工装就好了。

http://pcvc.net/archive/2008/8/26/90.html

按照日志来操作基本上是可以在 IIS 6 下运行 PHP 的。

2. 再装 MySQL,先到 mysql.com 看看有没新版本。

MySQL 有两种版本,一种是 MySQL Enterprise,也就是企业版,另一种是 MySQL Community Edition 社区版,社区版面对开发者,免费,大多数用的就是这个,企业版要收费,几百美金。

这两种版本分别有 6.0 和 5.1 两个版本,6.0 还是 Alpha 版,Alpha 后应该还有 Beta,算了,选择 5.1 的好了,目前是 5.1.29。选个小点的 mysql-essential-5.1.29-rc-win32.msi,20几M

安装过程还是看 Google 下吧。按照收藏的网摘 http://inghot.cn/article.asp?id=447,选择自定义安装,改变一下路径,如下图:

Next 开始安装。下来开始配置 MySQL,在第一步的配置类型选择第一个:Detailed Configuration(详细配置),在选择 MySQL 应用于何种类型,这里选择的是第二种:普通 WEB 服务器。在数据库用途一项里选择第一种:多功能。数据库存放位置选择安装时的路径。允许的最大连接数选择的是第二种:最大 500 个并发连接数;数据库监听的端口,一般默认是:3306,默认 Next;MySQL 默认编码,默认是 latin1,这里我改成 GB2312;把 MySQL 设为 Windows 服务,并添加 Path 路径;添加系统管理员密码。

3. 装 phpMyAdmin 到:http://www.phpmyadmin.net/home_page/index.php 看看有没最新版本。

更新真快,3.0.1 版了。Version 3.0.1  (2008-10-22),选择 all-languages.zip 3188 KB。

真晕,官方站居然下载不了,明天再试下,先指向原来目录的。

4. 将原 ucenter 和 ucenterhome 数据库文件 copy 数据库目录

这是我最关心的一项了,因为之前没有任何经验,MySQL 更是不懂,心里一点底都没有,不像 SQL Server 就两个文件,一个是数据文件,另一个是日志文件,如果有备份就直接把备份文件 backup 就OK 了,但是 MySQL 一点头绪都没有,其实要 google 也不知怎么 g,还是自己先试试再说,首先是看原来的数据库存放的路径。数据库是放在安装是选好的路径里的 data 目录里,一个数据库一个目录,目录里存放有四种类型的文件,.opt 应该是数据库描述之类的文件,用记事本打开一看,很简单,是数据库字符集的,.frm 是表结构的描述文件,.myd 是表的数据文件,.myi 是表的索引文件,从扩展名应该也能猜出一二,.frm 应该是 framework,框架的意思,.myd 应该是 mysql data 的缩写,.myi 应该是 mysql index 的缩写。先用 phpMyAdmin 建立一个空数据库,看看都有产生什么文件,建个一看,只有一个 .opt 文件,且内容和在 phpMyAdmin 选择的一样,很容易看得出,那就试试把其它三种类型的所有文件copy到对应的数据库目录里吧,copy 完再 phpMyAdmin 刷新一下,哈,已显示有很多表,嗯,觉得有戏,打开 url 一看,哈,还是对,接着把 ucenterhome 数据库也建了,并copy文件过去,嗯,一切正常,so good!

不过由于这次服务器故障损坏了一些文件,个用数据文件受损,最严重的一个是留言表,没办法,只能用12天前的还原了,555,12天没备份,太对不起大家了,我为以此为鉴,不再发生类似的事情。

5. 检查一下整站文件,看是否有的受损而未被发现的,这项下来有空再弄了。

日本AV片下载

摘要:日本AV片下载。  阅读全文

看 UCH 学 PHP

近来搞了个 SNS 在玩,本着学习 PHP 和准备二次开发 UCH 目的,决定认真学习 UCH 代码,原则是:不放过每个疑点,边测试边记,废话少说了开始吧(发现自己越来越不会说话了)!

 

从 index.php 开始吧,
include_once('./common.php');
包含当前目录的 common.php 文件,“./”表示当前目录,转到 common.php 吧……


include() 和 require():语句包括并运行指定文件。
include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在遇到丢失文件时停止处理页面就用 require()。include() 就不是这样,脚本会继续运行。
在使用上,require() 通常放在 PHP 程序的最前面,PHP程式在执行前,就会先读入 require 所指定引入的代码文档,使它变成 PHP 程序的一部份,一般使用这种方法将常用的函数引入网页中。
include()一般是放在流程控制的处理区段中,解析器只有在遇到执行 include 的代码文档时,才将它读进来,这种方式,可以把程式执行时的流程简单化。
不论 include() 和 require() 两者有个区别,它们都是变量函数,是特殊的语言结构,在条件语句中使用必须将其放在语句组中(花括号中)。
include_once() 和 require_once() 对应 include() 和 require(),与之对应的功能相同,不同的是只包含一次。


php 语句结束用分号“;”隔开(C程序员在暗喜),在文件的最后一条分号可以省略,不过建议还是加上好,养成良好习惯。


字符串常量可以用单引号和双引号来定义,单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下:
$first = 'Hello';
$second = "World";
$full1 = "$first $second"; # 产生 Hello World
$full2 = '$first $second';# 产生 $first $second


@define('IN_UCHOME', TRUE);
define 关键是定义常量,在前面加@是忽略错误提示(其它关键字亦然)。


if(!defined('IN_UCHOME')) exit('Access Denied');
defined() 返回指定常量是否被定义过,是返回 true,否返回 false


D_BUG?error_reporting(7):error_reporting(0);
配置程序在出错的时候怎么显示,有好几个选项,常用的有:
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING

各代表:

E_NOTICE 表示一般情形不记录,只有程序有错误情形时才用到,例如企图存取一个不存在的变量,或是呼叫 stat() 函数检视不存在的文件。
E_WARNING 通常都会显示出来,但不会中断程序的执行。这对除错很有效。例如:用有问题的正则表达式呼叫 ereg()。
E_ERROR 通常会显示出来,亦会中断程序执行。意即用这个遮罩无法追查到内存配置或其它的错误。
E_PARSE 从语法中解析错误。
E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。

7为1 2 4之和。(还有这种写种,呵呵)


$_SGLOBAL = $_SCONFIG = $_SBLOCK = $_TPL = $_SCOOKIE = $space = array();  // 从字面看应该是:全局变量,配置变量,块变量(暂不知做什么用),模板变量,COOKIE 变量,space 变量(不要骂我)
一下子定义这么多个数组,都是空数组,以后要用到什么随便加就行了,如:
$_SC['dbhost'] = 'localhost'; //服务器地址


程序目录
define('S_ROOT', dirname(__FILE__).DIRECTORY_SEPARATOR);
__FILE__ 是一个系统变量,返回所在文件的物理路径;如:D:\website\php\start.php
dirname 返回 path 的目录路径,如:D:\website\php
DIRECTORY_SEPARATOR 系统常量,路径的分隔符,在 win 里为“\”,在 linux 里为“/”


//基本文件  => 也就是说 config.php 是必需的,没安装之前没 config.php,安装后就有了,没 config.php 整个网站肯定没法运行的!好罗嗦!
if(!@include_once(S_ROOT.'./config.php')) {
 header("Location: install/index.php");//安装
 exit();
}
@include_once(S_ROOT.'./data/data_ad.php');//广告 => 读出你网站所设置的广告,存放在 $_SGLOBAL['ad'] 二唯数组里。
@include_once(S_ROOT.'./data/data_app.php');//系统应用 => 读出你网站一共装了多少应用,注意是官方的哦,如:个人家里,论坛,这些也许是为了各自这间相互通信用的吧。存放在:$_SGLOBAL['app'] 二维数组里。
include_once(S_ROOT.'./source/function_common.php'); // => 通用函数,不用一个个去研究,在下来的代码中调用哪个再去看就好了,不过整体先过一次也是好滴!


//获取时间
$mtime = explode(' ', microtime());
$_SGLOBAL['timestamp'] = $mtime[1]; => 时间戳(time-stamp),秒,如:1224838282,就是从 1970 年到你刷新页面时的秒数,暂时不知怎么用。
$_SGLOBAL['supe_starttime'] = $_SGLOBAL['timestamp'] + $mtime[0]; => 以浮点数的形式表示时间戳(秒),如:1224838282.0902,在 PHP 5 时可以用 microtime(true) 代替。

首先是microtime()函数,语法是:microtime(get_as_float),功能返回当前 Unix 时间戳和微秒数。如果给出了 get_as_float 参数并且其值等价于 TRUE,该函数将返回一个浮点数。
如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。

explode() 使用一个字符串分割另一个字符串,返回由字符串组成的数组。详细介绍参见:
http://www.phpchina.com/html/12/14112-29000.html


//链接数据库
dbconnect();
呵,可以来看 /source/function_common.php 里的函数了。
global $_SGLOBAL, $_SC;
global 关键字定义了之前定义过的 $_SGLOBAL, $_SC 这两个变量为全局变量,关于变量的作用域和全局变量的说明,请参见:
http://php.freehostingguru.com/3.2.3.php.php

接着:include_once(S_ROOT.'./source/class_mysql.php');
包含 class_mysql.php 文件,从名称就可以看出是 mysql 操作类(看到 class 倍加亲切!)。两个任务:熟悉一下 PHP 类的写法和操作数据库。

 

 

未完待续……

转:过滤 FCKeditor 不安全 HTML

目前我们所总结的不安全的 HTML 代码包括:
1.脚本:<script *>*</script>
2.事件 : <element on* >
3.样式 :<style *></style> <link * />
4.框架 : <iframe *></iframe>
5.表单 : <form *></form> <input */> <select */> <texterea * />
6.其他html标记:<html> <body> ,如果输入HTML标记造成页面的DOM结构不完整,会破坏原有页面的显示及script 的运行。
7.样式:url,expression等,目前很多网站都未针对此类隐患进行过滤
例如:可执行script 的样式定义 <DIV STYLE="background-image: url(javascript:alert(1))"></div>
8.Flash 标签,比如 加载一个flash 就立刻跳转到黄色网页。
其中 3,7, 8  是很容易忽略的,包括新浪博客。CSS注入可以修改整个博客版面,打开页面后执行代码。

前端 FCKeditor 在配置文件 fckconfig.js 里已可以设置过滤:

FCKConfig.ProtectedSource.Add( /<\s*iframe[\s\S]*?>/gi ) ;        // <iframe> tags.
FCKConfig.ProtectedSource.Add( /<\s*frameset[\s\S]*?>/gi ) ;        // <frameset> tags.
FCKConfig.ProtectedSource.Add( /<\s*frame[\s\S]*?>/gi ) ;        // <frame> tags.
FCKConfig.ProtectedSource.Add( /<\s*script[\s\S]*?\/script\s*>/gi ) ;        // <SCRIPT> tags.
FCKConfig.ProtectedSource.Add( /<%[\s\S]*?%>/g ) ;        // ASP style server side code
FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;        // PHP style server side code
FCKConfig.ProtectedSource.Add( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ) ;        // ASP.Net style tags <asp:control>

转:Google 十年之人才篇

  转眼google十年了,从98年车库开始到2008年市值到达1500亿美金。google走过了最辉煌的十年。google为什么可以持续十年高速发展?我认为是他们的人才战略决定了他们的高速发展。

  我本人有幸去过google中国的办公室,确实很好,有很多超一流的福利。比如免费正餐、零食、饮料,免费健身房和KTV,完全个性化的办公环境。不固定时间的工作时间。正因为这样google可以吸引来自世界各地的高素质人才。

  那google的人才秘诀是什么?

  王英雄的总结是:高门槛、重素质、高待遇、高福利、压力大、重创新

  我分别来解释一下:

  高门槛:如果想进入google工作可是不容易的,通常都需要几个月的时间,而且应聘者需要是真材实料,想混进google几乎是不可能的。Google对面试者出的题目都是极端难解答的,并且从来不会告诉他们为什么他们不能获得相关职位。

  重素质:google有自己的取材之道,他们不重视学历,但是他们对应聘者相应的技能最为看中。应聘者必须是在某个技能上面却有独到之处。

  高待遇:google对员工的待遇很好。中国区的新入职程序员至少可以拿到20w每年。

  高福利:不用解释了,google的福利是最好的,google就是把这些后勤工作做的非常完美,所以才吸引到这么多高级人才的。

  压力大:不要以为在google工作就真的高枕无忧了,不要以为在google工作就可以每天都去健身房,每天都可以去娱乐,其实这都是外界的误解,google为什么有健身房,他实际上是在节省员工去外部健身房的时间和精力,而把这种精力贡献给google。google内部有一套相当严格的考核标准。如果连续几个月没有创造对google的有用的价值,小心被开掉。

  重创新:google是家喜欢创新的公司,很多程序员的天赋在google的环境中获得了激发,他们创造很多很优秀的产品。创新也正是google这么多年高速成长的动因。(文:王英雄)

与国同生的手机

  研究了好几天,终于锁定诺基亚 N82 并在淘宝上下了订单并在线付款,十月一日下午便收到货,速度还真快:

成交时间: 2008-09-30 00:03:58
付款时间: 2008-09-30 00:11:03
发货时间: 2008-10-01 16点
确认时间: 2008-10-02 21:05:29(隔天才确认)

   买的是 N82 香港行货,比国行在实体店问到的价格便宜多了,经过研究对比,所配配件和网上说的正宗港行基本吻合,问过汕头诺基亚客服和网上查询过均属于保修范围内,港行还有正港行和后港行之分。还装了 ROUTE 66 Mobile7 ,ROUTE 66 Mobile7 将使您的手机演变为高级导航系统。无论您是在乘坐汽车、骑自行车还是徒步旅行,ROUTE 66 Mobile 都能引导您到达目的地。……