<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[海讯工作室，专注CMS开发]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[人因梦想而伟大]]></description>
<link>http://hi.baidu.com/hankx</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[zotop基本框架已经ok了，但是总体进展缓慢]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/6184d3c8b289701d7f3e6f0c.html]]></link>
        <description><![CDATA[
		
		zotop基本框架已经ok了，但是总体进展缓慢，继续努力中！ 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/6184d3c8b289701d7f3e6f0c.html#comment">查看评论</a>]]></description>
        <pubDate>2009年11月18日 星期三  15:01</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/6184d3c8b289701d7f3e6f0c.html</guid>
</item>

<item>
        <title><![CDATA[很久没更新，最近一直在忙zotop，今天看了kohana3，不过不知道为什么取消了event和hook]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/ea5988821019249af603a616.html]]></link>
        <description><![CDATA[
		
		<p>kohana中的event和hook 我一直认为可以媲美WordPress的action和filter，zotop中也借鉴了这一优点，但是当我看到kohana3的时候，对开发者的意图迷惑了，居然去掉了event和hook，很奇怪，我觉得kohana中最应该去掉的是 list_files 这个功能消耗巨大的io开销去找文件，速度太慢了</p>
<p>没有event和hook的kohana 感觉就像老虎没了翅膀啊</p>
<p>对比一下框架，我觉得thinkphp的真的很不错，或许对于中国人的习惯更占有优势吧</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/ea5988821019249af603a616.html#comment">查看评论</a>]]></description>
        <pubDate>2009年10月23日 星期五  11:35</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/ea5988821019249af603a616.html</guid>
</item>

<item>
        <title><![CDATA[错误处理函数set_error_handler()和异常处理函数set_exception_handler()的用法]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/5b8d7b3112b64510eac4af58.html]]></link>
        <description><![CDATA[
		
		<div class="tit">错误处理函数set_error_handler()和异常处理函数set_exception_handler()的用法</div>
<div class="date">2009-06-19 13:59</div>
<table style="table-layout: fixed; width: 100%">
    <tbody>
        <tr>
            <td>
            <div class="cnt" >
            <p>set_error_handler()函数的用法</p>
            <p>&nbsp;&nbsp;&nbsp;  set_error_handler() 函数设置用户自定义的错误处理函数。该函数用于创建运行时期间的用户自己的错误处理方法。该函数会返回旧的错误处理程序，若失败，则返回 null。</p>
            <p>&nbsp;&nbsp;&nbsp;  语法:set_error_handler(error_function,error_types)<br>
            &nbsp;&nbsp;&nbsp;  error_function 必需。规定发生错误时运行的函数。 <br>
            &nbsp;&nbsp;&nbsp;  error_types&nbsp;&nbsp;&nbsp;  可选。规定在哪个错误报告级别会显示用户定义的错误。默认是 &quot;E_ALL&quot;。 <br>
            &nbsp;&nbsp;&nbsp;  提示：如果使用了该函数，会完全绕过标准的 PHP 错误处理函数，如果必要，用户定义的错误处理程序必须终止 (die() ) 脚本。</p>
            <p>例子：<br>
            &lt;?php<br>
            //error handler function<br>
            function customError($errno, $errstr, $errfile, $errline){ <br>
            &nbsp;&nbsp;&nbsp;  echo &quot;&lt;b&gt;Custom error:&lt;/b&gt; [$errno] $errstr&lt;br /&gt;&quot;;<br>
            &nbsp;&nbsp;&nbsp;  echo &quot; Error on line $errline in $errfile&lt;br /&gt;&quot;;<br>
            &nbsp;&nbsp;&nbsp;  echo &quot;Ending Script&quot;;<br>
            &nbsp;&nbsp;&nbsp;  die();<br>
            }</p>
            <p>//set error handler<br>
            set_error_handler(&quot;customError&quot;);<br>
            $test=2;<br>
            //trigger error<br>
            if ($test&gt;1){<br>
            &nbsp;&nbsp;&nbsp;  trigger_error(&quot;A custom error has been triggered&quot;);<br>
            }<br>
            ?&gt;<br>
            输出：Custom error: [1024] A custom error has been triggered<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Error on line 19 in C:\webfolder\test.php<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Ending Script</p>
            <p><br>
            set_exception_handler() 函数<br>
            &nbsp;&nbsp;&nbsp;  set_exception_handler() 函数设置用户自定义的异常处理函数。该函数用于创建运行时期间的用户自己的异常处理方法。该函数会返回旧的异常处理程序，若失败，则返回 null。<br>
            &nbsp;&nbsp;&nbsp;  语法：set_exception_handler(exception_function)<br>
            &nbsp;&nbsp;&nbsp;  error_function 必需。规定未捕获的异常发生时调用的函数。该函数必须在调用 set_exception_handler() 函数之前定义。这个异常处理函数需要需要一个参数，即抛出的 exception 对象。 <br>
            &nbsp;&nbsp;&nbsp;  提示：在这个异常处理程序被调用后，脚本会停止执行。<br>
            例子<br>
            &lt;?php<br>
            function myException($exception){<br>
            &nbsp;&nbsp;&nbsp;  echo &quot;&lt;b&gt;Exception:&lt;/b&gt; &quot; , $exception-&gt;getMessage();<br>
            }<br>
            set_exception_handler('myException');<br>
            throw new Exception('Uncaught Exception occurred');<br>
            ?&gt;<br>
            输出：Exception: Uncaught Exception occurred</p>
            </div>
            </td>
        </tr>
    </tbody>
</table> <a href="http://hi.baidu.com/hankx/blog/item/5b8d7b3112b64510eac4af58.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/5b8d7b3112b64510eac4af58.html#comment">查看评论</a>]]></description>
        <pubDate>2009年09月07日 星期一  09:53</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/5b8d7b3112b64510eac4af58.html</guid>
</item>

<item>
        <title><![CDATA[MySQL的SHOW 语句用法归类]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/5b1ff1de032f635d94ee379d.html]]></link>
        <description><![CDATA[
		
		<span style="font-size: 13px">a. show tables或show tables from database_name; // 显示当前数据库中所有表的名称<br>
<br>
&nbsp;&nbsp;  b. show databases; // 显示mysql中所有数据库的名称<br>
<br>
&nbsp;&nbsp;  c. show columns from table_name from database_name; 或show columns from database_name.table_name;&nbsp;&nbsp;  // 显示表中列名称<br>
<br>
&nbsp;&nbsp;  d. show grants for user_name@localhost;&nbsp;&nbsp;  //&nbsp;&nbsp;  显示一个用户的权限，显示结果类似于grant 命令<br>
<br>
&nbsp;&nbsp;  e. show index from table_name;&nbsp;&nbsp;  // 显示表的索引<br>
<br>
&nbsp;&nbsp;  f. show status;&nbsp;&nbsp;  // 显示一些系统特定资源的信息，例如，正在运行的线程数量<br>
<br>
&nbsp;&nbsp;  g. show variables; // 显示系统变量的名称和值<br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp;  h. show&nbsp;&nbsp;  processlist; // 显示系统中正在运行的所有进程，也就是当前正在执行的查询。大多数用户可以查看<br>
&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  他们自己的进程，但是如果他们拥有process权限，就可以查看所有人的进程，包括密码。<br>
<br>
&nbsp;&nbsp;  i. show table status; // 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间<br>
<br>
&nbsp;&nbsp;  j. show privileges;&nbsp;&nbsp;  // 显示服务器所支持的不同权限<br>
<br>
&nbsp;&nbsp;  k. show create database database_name; // 显示create database 语句是否能够创建指定的数据库<br>
<br>
&nbsp;&nbsp;  l. show create table table_name; // 显示create database 语句是否能够创建指定的数据库<br>
<br>
&nbsp;&nbsp;  m. show engies;&nbsp;&nbsp;  // 显示安装以后可用的存储引擎和默认引擎。<br>
<br>
&nbsp;&nbsp;  n. show innodb status; // 显示innoDB存储引擎的状态<br>
<br>
&nbsp;&nbsp;  o. show logs; // 显示BDB存储引擎的日志 <br>
<br>
&nbsp;&nbsp;  p. show warnings; // 显示最后一个执行的语句所产生的错误、警告和通知<br>
<br>
&nbsp;&nbsp;  q. show errors; // 只显示最后一个执行语句所产生的错误</span> <a href="http://hi.baidu.com/hankx/blog/item/5b1ff1de032f635d94ee379d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/%CA%FD%BE%DD%BF%E2%5Bmysql%26%2338%3Bsqlite%5D">数据库[mysql&#38;sqlite]</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/5b1ff1de032f635d94ee379d.html#comment">查看评论</a>]]></description>
        <pubDate>2009年09月04日 星期五  16:01</pubDate>
        <category><![CDATA[数据库[mysql&#38;sqlite]]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/5b1ff1de032f635d94ee379d.html</guid>
</item>

<item>
        <title><![CDATA[PDO对各种数据库的连接方法]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/2db7d52a1ee2c324d52af170.html]]></link>
        <description><![CDATA[
		
		<h2><a class="anchor" name="4"><span style="background-color: rgb(255,255,153)"><strong>PDO对各种数据库的连接方法</strong></span><br>
</a></h2>
<p> </p>
<h2><a class="anchor" name="4.1"><strong> </strong><span style="background-color: rgb(255,255,153)"><strong>PgSQL</strong></span></a></h2>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><font face="NSimsun"><span style="color: rgb(0,119,0)">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$db </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;pgsql:dbname=pdo;host=localhost&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;username&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;password&quot; </span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">);<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(221,0,0)">&quot;PDO connection object created&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch(</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
</font></span></span></code></div>
<div class="codebox"> </div>
<h2><a class="anchor" name="4.2"><span style="background-color: rgb(255,255,153)">SQLite</span></a></h2>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><span style="color: rgb(0,119,0)"><font face="NSimsun">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="color: rgb(255,128,0)">/*** connect to SQLite database ***/<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbh </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;sqlite:/path/to/database.sdb&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch(</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</span><span style="color: rgb(0,0,187)">?&gt;  </span></font></span></code><br>
 </div>
<div class="codebox"><strong>PDO还能在内存中创建SQLite并使用</strong></div>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><span style="color: rgb(0,119,0)"><font face="NSimsun">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="color: rgb(255,128,0)">/*** connect to SQLite database ***/<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$db </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;sqlite::memory&quot;</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="color: rgb(255,128,0)">/*** a little message to say we did it ***/<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,119,0)">echo </span><span style="color: rgb(221,0,0)">'database created in memory'</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch(</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
<br>
</font></span></span></code></div>
<h2><a class="anchor" name="4.3"> <span style="background-color: rgb(255,255,153)">MySQL</span></a></h2>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
<br>
</font></span><font face="NSimsun"><span style="color: rgb(255,128,0)">/*** mysql hostname ***/<br>
</span><span style="color: rgb(0,0,187)">$hostname </span><span style="color: rgb(0,119,0)">= </span><span style="color: rgb(221,0,0)">'localhost'</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">;<br>
<br>
</font></span><font face="NSimsun"><span style="color: rgb(255,128,0)">/*** mysql username ***/<br>
</span><span style="color: rgb(0,0,187)">$username </span><span style="color: rgb(0,119,0)">= </span><span style="color: rgb(221,0,0)">'username'</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">;<br>
<br>
</font></span><font face="NSimsun"><span style="color: rgb(255,128,0)">/*** mysql password ***/<br>
</span><span style="color: rgb(0,0,187)">$password </span><span style="color: rgb(0,119,0)">= </span><span style="color: rgb(221,0,0)">'password'</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
<br>
try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbh </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;mysql:host=</span><span style="color: rgb(0,0,187)">$hostname</span><span style="color: rgb(221,0,0)">;dbname=mysql&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(0,0,187)">$username</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(0,0,187)">$password</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">);<br>
&nbsp;&nbsp;&nbsp;&nbsp;</font></span><font face="NSimsun"><span style="color: rgb(255,128,0)">/*** echo a message saying we have connected ***/<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,119,0)">echo </span><span style="color: rgb(221,0,0)">'Connected to database'</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch(</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
<br>
</font></span></span></code></div>
<h2><a class="anchor" name="4.4"><span style="background-color: rgb(255,255,153)">Firebird</span></a></h2>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><font face="NSimsun"><span style="color: rgb(0,119,0)">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbh </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;firebird:dbname=localhost:C:\Programs\Firebird\DATABASE.FDB&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;SYSDBA&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;masterkey&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;<br>
catch (</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
<br>
</font></span></span></code></div>
<h2><a class="anchor" name="4.5"><span style="background-color: rgb(255,255,153)">Informix</span></a></h2>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><font face="NSimsun"><span style="color: rgb(0,119,0)">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbh </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;informix:DSN=InformixDB&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;username&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;password&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch (</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
</font></span></span></code></div>
<div class="codebox"> </div>
<h2><a class="anchor" name="4.6"><span style="background-color: rgb(255,255,153)">Oracle</span></a></h2>
<p>简单连接</p>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><font face="NSimsun"><span style="color: rgb(0,119,0)">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbh </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;OCI:&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;username&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;password&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch (</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
</font></span></span></code></div>
<p>带数据库名和字符集连接</p>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><font face="NSimsun"><span style="color: rgb(0,119,0)">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbh </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;OCI:dbname=accounts;charset=UTF-8&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;username&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;password&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch (</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span><span style="color: rgb(0,119,0)">();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span></font><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
</font></span></span></code></div>
<div class="codebox"> </div>
<h2><a class="anchor" name="4.7"><span style="background-color: rgb(255,255,153)">ODBC</span></a></h2>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><font face="NSimsun"><span style="color: rgb(0,119,0)">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbh </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\accounts.mdb;Uid=Admin&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch (</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; } <br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
<br>
</font></span></span></code></div>
<h2><a class="anchor" name="4.8"> <span style="background-color: rgb(255,255,153)">DBLIB</span></a></h2>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><font face="NSimsun"><span style="color: rgb(0,119,0)">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$hostname </span><span style="color: rgb(0,119,0)">= </span><span style="color: rgb(221,0,0)">&quot;localhost&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,119,0)">= </span><span style="color: rgb(0,0,187)">10060</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbname&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,119,0)">= </span><span style="color: rgb(221,0,0)">&quot;my_database&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$username </span><span style="color: rgb(0,119,0)">= </span><span style="color: rgb(221,0,0)">&quot;username&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$password </span><span style="color: rgb(0,119,0)">= </span><span style="color: rgb(221,0,0)">&quot;password&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$dbh </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO </span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;dblib:host=</span><span style="color: rgb(0,0,187)">$hostname</span><span style="color: rgb(221,0,0)">:</span><span style="color: rgb(0,0,187)">$port</span><span style="color: rgb(221,0,0)">;dbname=</span><span style="color: rgb(0,0,187)">$dbname</span><span style="color: rgb(221,0,0)">&quot;</span><span style="color: rgb(0,119,0)">,</span><span style="color: rgb(221,0,0)">&quot;</span><span style="color: rgb(0,0,187)">$username</span><span style="color: rgb(221,0,0)">&quot;</span><span style="color: rgb(0,119,0)">,</span><span style="color: rgb(221,0,0)">&quot;</span><span style="color: rgb(0,0,187)">$password</span><span style="color: rgb(221,0,0)">&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch (</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
</font></span></span></code></div>
<div class="codebox"> </div>
<h2><a class="anchor" name="4.9"><span style="background-color: rgb(255,255,153)">IBM</span></a></h2>
<div class="codebox"><code><span style="color: rgb(0,0,0)"><span style="color: rgb(0,0,187)"><font face="NSimsun">&lt;?php<br>
</font></span><font face="NSimsun"><span style="color: rgb(0,119,0)">try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,187)">$db </span><span style="color: rgb(0,119,0)">= new </span><span style="color: rgb(0,0,187)">PDO</span><span style="color: rgb(0,119,0)">(</span><span style="color: rgb(221,0,0)">&quot;ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=accounts; HOSTNAME=1.2.3,4;PORT=56789;PROTOCOL=TCPIP;&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;username&quot;</span><span style="color: rgb(0,119,0)">, </span><span style="color: rgb(221,0,0)">&quot;password&quot;</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
catch (</span><span style="color: rgb(0,0,187)">PDOException $e</span></font><font face="NSimsun"><span style="color: rgb(0,119,0)">)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; echo </span><span style="color: rgb(0,0,187)">$e</span><span style="color: rgb(0,119,0)">-&gt;</span><span style="color: rgb(0,0,187)">getMessage</span></font><span style="color: rgb(0,119,0)"><font face="NSimsun">();<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</font></span><span style="color: rgb(0,0,187)"><font face="NSimsun">?&gt;<br>
</font></span></span></code></div>
<p> </p> <a href="http://hi.baidu.com/hankx/blog/item/2db7d52a1ee2c324d52af170.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/2db7d52a1ee2c324d52af170.html#comment">查看评论</a>]]></description>
        <pubDate>2009年08月31日 星期一  23:32</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/2db7d52a1ee2c324d52af170.html</guid>
</item>

<item>
        <title><![CDATA[HankxCMS的php版本更名为zotop，并全部重写代码]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/bf78aeaf9a5e74c57cd92ab8.html]]></link>
        <description><![CDATA[
		
		HankxCMS的php版本更名为zotop，并全部重写代码，很复杂的一项工程，主体架构已经设计的差不多了，目前正在进行数据库部分 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/bf78aeaf9a5e74c57cd92ab8.html#comment">查看评论</a>]]></description>
        <pubDate>2009年08月26日 星期三  18:14</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/bf78aeaf9a5e74c57cd92ab8.html</guid>
</item>

<item>
        <title><![CDATA[Apache服务器URL重写学习：]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/3bb21c1792c447094a90a7fa.html]]></link>
        <description><![CDATA[
		
		服务器支持URI重写功能。如果你使用Apache服务器，可以通过设置mod_rewrite模块来实现。
<p>第一步，首先安装Apache并启用mod_rewrite模块。然后把两个文件放到根目录下：.htaccess和index.php。 .htaccess文件用来让服务器读取，其中必须包含一个mod_rewrite的重写规则，使所有请求都被重定向到index.php。下面是个例子：</p>
<pre class="programlisting">RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php</pre>
<pre class="programlisting"><strong>RewriteRule !\.(js|ico|gif|bmp|jpg|png|css|xml|html|txt)$ index.php</strong><br><strong><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </strong></pre>
<p>在上例中，所有请求(除了对那几个扩展名的文件的请求)都被转向到index.php。在开发中这是很有用的，当然在程序正式运行时重写规则应该写成把某些目录排除而不是文件。</p> <a href="http://hi.baidu.com/hankx/blog/item/3bb21c1792c447094a90a7fa.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/3bb21c1792c447094a90a7fa.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月12日 星期五  11:19</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/3bb21c1792c447094a90a7fa.html</guid>
</item>

<item>
        <title><![CDATA[初级URL重写指南]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/a628d216fd3c5510972b4314.html]]></link>
        <description><![CDATA[
		
		<div >
<h1>初级URL重写指南</h1>
<p>本文是<code class="module"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html"><font face="NSimsun">mod_rewrite</font></a></code><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html">参考文档</a>的补充材料。阐述在实际应用中如何解决网管所面临的基于URL的典型问题，并详细描述了如何配置URL重写规则集以解决这些问题。</p>
<div class="warning">注意：根据你的服务器配置，有可能必须对这里的例子作些小修改，比如，在额外启用<code class="module"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_alias.html"><font face="NSimsun">mod_alias</font></a></code>和<code class="module"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_userdir.html"><font face="NSimsun">mod_userdir</font></a></code>的情况下要增加<code><font face="NSimsun">[PT]</font></code>标志，或者为了适应目录级(<code><font face="NSimsun">.htaccess</font></code>)的配置而将针对服务器级的规则集进行重写。对一个特定的规则集应该先透彻理解然后再考虑应用，这样才能避免出现问题。</div>
</div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="canonicalurl">规范化URL</a></h2>
<dl><dt>描述： </dt><dd>在有些web服务器上，一个资源会拥有多个URL。在实际应用和发布中应该使用的是规范的URL，其他的则是简写或者只在内部使用。无论用户在请求中使用什么形式的URL，最终看见的都应该是规范的URL。 </dd><dt>解决方案： </dt><dd>对所有不规范的URL执行一个外部HTTP重定向，以改变它在浏览器地址栏中的显示及其后继请求。下例中的规则集用规范的<code><font face="NSimsun">/u/user</font></code>替换<code><font face="NSimsun">/~user</font></code>，并修正了<code><font face="NSimsun">/u/user</font></code>所遗漏的后缀斜杠。
<div class="example">
<pre>RewriteRule   ^/<strong>~</strong>([^/]+)/?(.*)    /<strong>u</strong>/$1/$2  [<strong>R</strong>]
RewriteRule   ^/u/(<strong>[^/]+</strong>)$  /$1/$2<strong>/</strong>   [<strong>R</strong>]</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="canonicalhost">规范化主机名</a></h2>
<dl><dt>描述： </dt><dd>这个规则的目的是强制使用特定的主机名以代替其他名字。比如，你想强制使用<strong>www.example.com</strong>代替<strong>example.com</strong>，就可以在以下方案的基础上进行修改： </dd><dt>解决方案： </dt><dd>
<p>对运行在非80端口的站点</p>
<div class="example">
<pre>RewriteCond %{HTTP_HOST}   !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*)         http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]</pre>
</div>
<p>对运行在80端口的站点</p>
<div class="example">
<pre>RewriteCond %{HTTP_HOST}   !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/(.*)         http://fully.qualified.domain.name/$1 [L,R]</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="moveddocroot">移动过的<code><font face="NSimsun">DocumentRoot</font></code></a></h2>
<dl><dt>描述： </dt><dd>通常，web服务器的<code class="directive"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/core.html#documentroot"><font face="NSimsun">DocumentRoot</font></a></code>直接对应于URL&quot;<code><font face="NSimsun">/</font></code>&quot;，但是它常常不是处于最高的一级。比如，你希望访问者在进入网站时首先进入<code><font face="NSimsun">/about/</font></code>目录。可以使用下面给出的规则集。 </dd><dt>解决方案： </dt><dd>只需将&quot;<code><font face="NSimsun">/</font></code>&quot;重定向到&quot;<code><font face="NSimsun">/about/</font></code>&quot;即可：
<div class="example">
<pre>RewriteEngine on
RewriteRule   <strong>^/$</strong>  /about/  [<strong>R</strong>]</pre>
</div>
<p>也可以使用<code class="directive"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_alias.html#redirectmatch"><font face="NSimsun">RedirectMatch</font></a></code>指令解决问题：</p>
<div class="example">
<p><code><font face="NSimsun">RedirectMatch ^/$ http://example.com/e/www/ </font></code></p>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><font face="NSimsun"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></font></a></div>
<div class="section">
<h2><a name="trailingslash">结尾斜杠问题</a></h2>
<dl><dt>描述： </dt><dd>每个网管对引用目录的结尾斜杠问题都有一本苦经，如果遗漏了，服务器会产生一个错误，因为如果请求是&quot;/~quux/foo&quot;而不是&quot;/~quux/foo/&quot;，服务器就会去找一个叫foo的文件，而它是一个目录，所以就报错了。通常，可以使用这个<a href="http://httpd.apache.org/docs/1.3/misc/FAQ-E.html#set-servername">FAQ entry</a>里面提到的方法解决问题。但是有时候需要使用重写规则来解决问题，比如，在应用了许多复杂的重写规则之后。 </dd><dt>解决方案： </dt><dd>解决这个微妙问题的方案是让服务器自动添加后缀斜杠。为了达到目的，必须使用一个外部重定向，以使浏览器能够正确地处理后继的请求(比如对图片的请求)。如果仅仅执行一个内部重写，可能仅仅对目录页面有效，而对含有相对URL的图片的页面无效，因为浏览器有请求内嵌目标的可能。比如，如果不用外部重定向，对<code><font face="NSimsun">/~quux/foo/index.html</font></code>页面中的<code><font face="NSimsun">image.gif</font></code>的请求将变成对<code><font face="NSimsun">/~quux/image.gif</font></code>的请求！所以，应该这样写：
<div class="example">
<pre>RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo<strong>$</strong>  foo<strong>/</strong>  [<strong>R</strong>]</pre>
</div>
<p>又懒又疯狂的做法是把这些写入其宿主目录中的顶级<code><font face="NSimsun">.htaccess</font></code>中：</p>
<div class="example">
<pre>RewriteEngine  on
RewriteBase    /~quux/
RewriteCond    %{REQUEST_FILENAME}  <strong>-d</strong>
RewriteRule    ^(.+<strong>[^/]</strong>)$           $1<strong>/</strong>  [R]</pre>
</div>
<p>但是这样一来会增加处理上的开销。</p>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="movehomedirs">将用户主目录移动到不同web服务器</a></h2>
<dl><dt>描述： </dt><dd>通常，许多网管在建立一个新的web服务器时，都会有这样的要求：重定向一个web服务器上的所有用户主目录到另一个web服务器。 </dd><dt>解决方案： </dt><dd>很简单，在老的web服务器上重定向所有的&quot;<code><font face="NSimsun">/~user/anypath</font></code>&quot;到&quot;<code><font face="NSimsun">http://newserver/~user/anypath</font></code>&quot;：
<div class="example">
<pre>RewriteEngine on
RewriteRule   ^/~(.+)  http://<strong>newserver</strong>/~$1  [R,L]</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="multipledirs">在多个目录中搜索页面</a></h2>
<dl><dt>描述： </dt><dd>有时会有必要使web服务器在多个目录中搜索页面，对此，MultiViews或者其他技术无能为力。 </dd><dt>解决方案： </dt><dd>编制一个明确的规则集以搜索目录中的文件：
<div class="example">
<pre>RewriteEngine on

# 首先尝试在 <strong>dir1</strong> 中寻找，找到即停
RewriteCond         /your/docroot/<strong>dir1</strong>/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /your/docroot/<strong>dir1</strong>/$1  [L]

# 然后尝试在 <strong>dir2</strong> 中寻找，找到即停
RewriteCond         /your/docroot/<strong>dir2</strong>/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /your/docroot/<strong>dir2</strong>/$1  [L]

# 再找不到就继续寻找其他的 Alias 或 ScriptAlias 目录
RewriteRule   ^(.+)  -  [PT]</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="setenvvars">按照URL的片段设置环境变量</a></h2>
<dl><dt>描述： </dt><dd>希望保持请求之间的状态信息，又不希望使用CGI来包装所有页面，只是通过分离URL中的有用信息来做到。 </dd><dt>解决方案： </dt><dd>可以用一个规则集来分离出状态信息，并设置环境变量以备此后用于XSSI或CGI。这样，一个&quot;<code><font face="NSimsun">/foo/S=java/bar/</font></code>&quot;的URL会被解析为&quot;<code><font face="NSimsun">/foo/bar/</font></code>&quot;，而环境变量<code><font face="NSimsun">STATUS</font></code>则被设置为&quot;java&quot;。
<div class="example">
<pre>RewriteEngine on
RewriteRule   ^(.*)/<strong>S=([^/]+)</strong>/(.*)    $1/$3 [E=<strong>STATUS:$2</strong>]</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="uservhosts">虚拟用户主机</a></h2>
<dl><dt>描述： </dt><dd>如果需要为用户username支持一个<code><font face="NSimsun">www.<strong>username</strong>.host.domain.com</font></code>的主页，但不在此机器上建虚拟主机，而是仅用在此机器上增加一个DNS A记录的方法实现。 </dd><dt>解决方案： </dt><dd>仅能对包含&quot;Host: &quot;头的HTTP/1.1请求实现。可以使用以下规则集内部地将<code><font face="NSimsun">http://www.username.host.com/anypath</font></code>重写为<code><font face="NSimsun">/home/username/anypath</font></code>
<div class="example">
<pre>RewriteEngine on
RewriteCond   %{<strong>HTTP_HOST</strong>}                 ^www\.<strong>[^.]+</strong>\.host\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^www\.<strong>([^.]+)</strong>\.host\.com(.*) /home/<strong>$1</strong>$2</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="redirecthome">为外来访问者重定向用户主目录</a></h2>
<dl><dt>描述： </dt><dd>对不是来自本地域<code><font face="NSimsun">ourdomain.com</font></code>的外来访问者的请求，重定向其用户主目录URL到另一个web服务器<code><font face="NSimsun">www.somewhere.com</font></code>，有时这种做法也会用在虚拟主机的配置段中。 </dd><dt>解决方案： </dt><dd>只须一个重写条件：
<div class="example">
<pre>RewriteEngine on
RewriteCond   %{REMOTE_HOST}  <strong>!^.+\.ourdomain\.com$</strong>
RewriteRule   ^(/~.+)         http://www.somewhere.com/$1 [R,L]</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="redirectanchors">重定向锚</a></h2>
<dl><dt>描述： </dt><dd>默认情况下，重定向到一个HTML锚是不可行的，因为'<code><font face="NSimsun">#</font></code>'会被转义为'<code><font face="NSimsun">%23</font></code>'。This, in turn, breaks the redirection. </dd><dt>解决方案： </dt><dd>在<code><font face="NSimsun">RewriteRule</font></code>指令中使用<code><font face="NSimsun">[NE]</font></code>标志(不转义)。 </dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2>依赖于时间的重写</h2>
<dl><dt>描述： </dt><dd>在页面内容需要按时间的不同而变化的场合，比如重定向特定页面等，许多网管仍然采用CGI脚本的方法，如何用<code class="module"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html"><font face="NSimsun">mod_rewrite</font></a></code>来实现呢？ </dd><dt>解决方案： </dt><dd>有许多名为<code><font face="NSimsun">TIME_xxx</font></code>的变量可以用在重写条件中，联合使用词典模式的&quot;<code><font face="NSimsun">&lt;STRING</font></code>&quot;, &quot;<code><font face="NSimsun">=STRING</font></code>&quot;, &quot;<code><font face="NSimsun">&gt;STRING</font></code>&quot;比较，就可以实现依赖于时间的重写：
<p> </p>
<div class="example">
<pre>RewriteEngine on
RewriteCond   %{TIME_HOUR}%{TIME_MIN} &gt;0700
RewriteCond   %{TIME_HOUR}%{TIME_MIN} &lt;1900
RewriteRule   ^foo\.html$             foo.day.html
RewriteRule   ^foo\.html$             foo.night.html</pre>
</div>
<p>此例使<code><font face="NSimsun">foo.html</font></code>在<code><font face="NSimsun">07:00-19:00</font></code>时间内指向<code><font face="NSimsun">foo.day.html</font></code>，而在其余时间指向<code><font face="NSimsun">foo.night.html</font></code>，对主页是一个不错的功能...</p>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2>对YYYY转变为XXXX的向前兼容</h2>
<dl><dt>描述： </dt><dd>在转变了大批<code><font face="NSimsun">document.YYYY</font></code>文件为<code><font face="NSimsun">document.XXXX</font></code>后(比如<code><font face="NSimsun">.html</font></code>→<code><font face="NSimsun">.phtml</font></code>)，如何保持URL的向前兼容(仍然虚拟地存在)？ </dd><dt>解决方案： </dt><dd>只须按基准文件名重写，并测试带有新的扩展名的文件是否存在，如果存在则用新的，否则仍然用原来的。
<p> </p>
<div class="example">
<pre># 将document.html重写为document.phtml的向后兼容的规则集
# 当且仅当document.phtml存在且document.html不存在的时候
RewriteEngine on
RewriteBase   /~quux/
# 剪切并记住basename
RewriteRule   ^(.*)\.html$              $1      [C,E=WasHTML:yes]
# 如果存在的话就重写为document.phtml
RewriteCond   %{REQUEST_FILENAME}.phtml -f
RewriteRule   ^(.*)$ $1.phtml                   [S=1]
# 否则返回先前的basename
RewriteCond   %{ENV:WasHTML}            ^yes$
RewriteRule   ^(.*)$ $1.html</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="content">内容处理</a></h2>
<h3>从旧到新(内部)</h3>
<dl><dt>描述： </dt><dd>假定已经把文件<code><font face="NSimsun">foo.html</font></code>改名为<code><font face="NSimsun">bar.html</font></code>，需要对老的URL向后兼容，即让用户仍然可以使用老的URL，而感觉不到文件被改名了。 </dd><dt>解决方案： </dt><dd>通过以下规则内部地将老的URL重写为新的：
<div class="example">
<pre>RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>foo</strong>\.html$  <strong>bar</strong>.html</pre>
</div>
</dd></dl>
<h3>从旧到新(外部)</h3>
<dl><dt>描述： </dt><dd>仍然假定已经把文件<code><font face="NSimsun">foo.html</font></code>改名为<code><font face="NSimsun">bar.html</font></code>，需要对老的URL向后兼容，但是要让用户得到文件被改名的暗示，即浏览器的地址栏中显示的是新的URL。 </dd><dt>解决方案： </dt><dd>作一个HTTP的强制重定向以改变浏览器和用户界面上的显示：
<div class="example">
<pre>RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^<strong>foo</strong>\.html$  <strong>bar</strong>.html  [<strong>R</strong>]</pre>
</div>
</dd></dl>
<h3>从静态到动态</h3>
<dl><dt>描述： </dt><dd>如何无缝转换静态页面<code><font face="NSimsun">foo.html</font></code>为动态的<code><font face="NSimsun">foo.cgi</font></code>，而不为浏览器/用户所察觉。 </dd><dt>解决方案： </dt><dd>只须重写此URL为CGI-script，并强制作为CGI-script运行的MIME类型。比如对<code><font face="NSimsun">/~quux/foo.html</font></code>的请求会执行<code><font face="NSimsun">/~quux/foo.cgi</font></code> 。
<div class="example">
<pre>RewriteEngine  on
RewriteBase    /~quux/
RewriteRule    ^foo\.<strong>html</strong>$  foo.<strong>cgi</strong>  [T=<strong>application/x-httpd-cgi</strong>]</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="access">访问控制</a></h2>
<h3>阻止Robot</h3>
<dl><dt>描述： </dt><dd>如何阻止一个完全匿名的Robot取得特定网络区域的页面？<code><font face="NSimsun">/robots.txt</font></code>文件可以包含若干&quot;Robot排除协议&quot;行，但不足以阻止此类Robot。 </dd><dt>解决方案： </dt><dd>可以用一个规则集以拒绝对网络区域<code><font face="NSimsun">/~quux/foo/arc/</font></code>(对一个很深的目录区域进行列表可能会使服务器产生很大的负载)的访问。还必须确保仅阻止特定的Robot，也就是说，仅仅阻止Robot访问主机是不够的(这样会同时阻止用户访问该主机)。为此，就需要对HTTP头的User-Agent信息作匹配。
<div class="example">
<pre>RewriteCond %{HTTP_USER_AGENT}   ^<strong>NameOfBadRobot</strong>.*
RewriteCond %{REMOTE_ADDR}       ^<strong>123\.45\.67\.[8-9]</strong>$
RewriteRule ^<strong>/~quux/foo/arc/</strong>.+   -   [<strong>F</strong>]</pre>
</div>
</dd></dl>
<h3>阻止内嵌的图片</h3>
<dl><dt>描述： </dt><dd>假设<code><font face="NSimsun">http://www.quux-corp.de/~quux/</font></code>有一些内嵌GIF图片的页面，这些图片很好，所以就有人盗链到他们自己的页面中了。由于这样徒然增加了我们服务器的流量，因此，我们不愿意这种事情发生。 </dd><dt>解决方案： </dt><dd>虽然，我们不能100%地保护这些图片不被写入别人的页面，但至少可以对发出HTTP Referer头的浏览器加以限制。
<div class="example">
<pre>RewriteCond %{HTTP_REFERER} <strong>!^$</strong>
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule <strong>.*\.gif$</strong>        -                                    [F]</pre>
</div>
<div class="example">
<pre>RewriteCond %{HTTP_REFERER}         !^$
RewriteCond %{HTTP_REFERER}         !.*/foo-with-gif\.html$
RewriteRule <strong>^inlined-in-foo\.gif$</strong>   -                        [F]</pre>
</div>
</dd></dl>
<h3>拒绝代理</h3>
<dl><dt>描述： </dt><dd>如何拒绝某个主机或者来自特定主机的用户使用Apache代理？ </dd><dt>解决方案： </dt><dd>首先，要确保在配置文件中<code class="module"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html"><font face="NSimsun">mod_rewrite</font></a></code>位于<code class="module"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_proxy.html"><font face="NSimsun">mod_proxy</font></a></code>之后！使它在<code class="module"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_proxy.html"><font face="NSimsun">mod_proxy</font></a></code><em>之前</em>被调用。然后，使用如下方法拒绝某个主机：
<div class="example">
<pre>RewriteCond %{REMOTE_HOST} <strong>^badhost\.mydomain\.com$</strong>
RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]</pre>
</div>
<p>使用如下方法拒绝user@host-dependent用户：</p>
<div class="example">
<pre>RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST}  <strong>^badguy@badhost\.mydomain\.com$</strong>
RewriteRule !^http://[^/.]\.mydomain.com.*  - [F]</pre>
</div>
</dd></dl></div>
<div class="top"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html#page-header"><img alt="top" src="http://lamp.linux.gov.cn/Apache/ApacheMenu/images/up.gif"></a></div>
<div class="section">
<h2><a name="other">其它</a></h2>
<h3>外部重写引擎</h3>
<dl><dt>描述： </dt><dd>如何解决似乎无法用<code class="module"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html"><font face="NSimsun">mod_rewrite</font></a></code>解决的FOO/BAR/QUUX/之类的问题？ </dd><dt>解决方案： </dt><dd>可以使用一个与<code class="directive"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html#rewritemap"><font face="NSimsun">RewriteMap</font></a></code>功能相同的外部<code class="directive"><a href="http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html#rewritemap"><font face="NSimsun">RewriteMap</font></a></code>程序，一旦它在Apache启动时被执行，则从<code><font face="NSimsun">STDIN</font></code>接收被请求的URL ，并将处理过(通常是重写过的)的URL(以相同顺序)在<code><font face="NSimsun">STDOUT</font></code>输出。
<div class="example">
<pre>RewriteEngine on
RewriteMap    quux-map       <strong>prg:</strong>/path/to/map.quux.pl
RewriteRule   ^/~quux/(.*)$  /~quux/<strong>${quux-map:$1}</strong></pre>
</div>
<div class="example">
<pre>#!/path/to/perl

# 禁止使用会导致Apache陷入死循环的I/O缓冲
$| = 1;

# 从stdin读取URL(每行一个)，并在stdout输出替换URL
while (&lt;&gt;) {
    s|^foo/|bar/|;
    print $_;
}</pre>
</div>
这是只是一个简单的示例，只是把所有的<code><font face="NSimsun">/~quux/foo/...</font></code>重写为<code><font face="NSimsun">/~quux/bar/...</font></code>而已。但事实上，可以把它修改成任何你想要的输出。但是要注意，虽然一般用户都可以<strong>使用</strong>，可是只有系统管理员才可以<strong>定义</strong>这样的映射。 </dd></dl></div> <a href="http://hi.baidu.com/hankx/blog/item/a628d216fd3c5510972b4314.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/a628d216fd3c5510972b4314.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月12日 星期五  10:17</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/a628d216fd3c5510972b4314.html</guid>
</item>

<item>
        <title><![CDATA[新注册了一个域名：www.zotop.com，呵呵]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/0c92d30060b33319728b650e.html]]></link>
        <description><![CDATA[
		
		新注册了一个域名：<a href="http://www.zotop.com/">www.zotop.com</a>，呵呵，准备用作cms的php版本的官网，名称本身没有什么意思，只是觉得比较简短而且应该比较好记，中文名称翻译成什么?不太好想，呵呵，&ldquo;逐涛&rdquo;？更多感觉像&ldquo;猪逃跑&rdquo;，哈哈，这样的话和drupal的谐音&ldquo;猪跑了&rdquo;很有些相似！大家有什么好的意见没有？ 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/0c92d30060b33319728b650e.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月12日 星期五  10:07</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/0c92d30060b33319728b650e.html</guid>
</item>

<item>
        <title><![CDATA[慎用url重写]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/656d95dd234b533c5982dd03.html]]></link>
        <description><![CDATA[
		
		<div class="posthead">
<h2>
<div class="posthead">
<h2><a href="http://www.cnblogs.com/csky/archive/2006/08/09/urlrewrite.html">http://www.cnblogs.com/csky/archive/2006/08/09/urlrewrite.html</a></h2>
</div>
</h2>
</div>
<div class="postbody">
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  为了使url地址更加友好（当然可能有别的原因），很多站点使用了url重写，如<a href="http://www.cnblogs.com/life">http://www.cnblogs.com/life</a>，在asp.net中通常要处理这样的url重写，必须在IIS中将*.*映射到aspnet_isapi.dll（C:\WINDOWS\Microsoft.NET\Framework\v1.1.432\aspnet_isapi.dll），然后在web.config进行相应的配置，最后在写相应的处理程序，多数情况我们是那么做的，搏客园也是那么做的，这似乎没有什么问题。<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  但是搏客园很久以来一直存在性能问题，dudu和园子的很多朋友也想了很多法子去提高性能，取得了不小的成绩，但是还是不是很理想，我也很想出一份力，因为我很喜欢搏客园，我在园子学了很多东西，基本上是早中晚都要看上面的文章，直到昨天晚上一个技术群的朋友问我一个url重写的问题之后，突然醒悟搏客园的性能问题很可能是url重写造成的。</p>
<p>我朋友的问题是这样：<br>
<a href="http://www.wodecity.com/food">http://www.wodecity.com/food</a>和<a href="http://www.wodecity.com/food.html">http://www.wodecity.com/food.html</a>（该链接现在已经失效）都是通过url重写定位到同一个页面<a href="http://www.wodecity.com/page/food.aspx">http://www.wodecity.com/page/food.aspx</a> ，都是用同样的处理程序，唯一不同的是为了处理<a href="http://www.wodecity.com/food">http://www.wodecity.com/food</a>这样没有扩展名的地址他必须将*.*映射到aspnet_isapi.dll，而<a href="http://www.wodecity.com/food.html">http://www.wodecity.com/food.html</a>则是将*.html映射到aspnet_isapi.dll，结果发现<a href="http://www.wodecity.com/food.html">http://www.wodecity.com/food.html</a>的性能比<a href="http://www.wodecity.com/food">http://www.wodecity.com/food</a>好十至二十倍，他是用loadrunner进行测试的，他对这样的结果感到很郁闷。我开始的时候也感到不可思议，*.*和*.html到底什么区别呢，*.*就是该页面所有的请求，包括css文件和所有的图片文件都有用他写的url重写处理程序去处理，*.html则没有，只是一个请求，问题就出现在这里了，<a href="http://www.wodecity.com/food">http://www.wodecity.com/food</a>这个页面有超过20个图片吧，请求一个页面要同时用url重写处理程序去处理那么多图片，能不慢吗？怎么办呢？因为他们想用<a href="http://www.wodecity.com/food">http://www.wodecity.com/food</a>这样的url，这样比较友好，所以还是要用*.*，思考一会儿之后我告诉他，让你的url重写程序不处理那些图片文件就行了，怎么做呢？有两个方法：方法1，把存放图片所在的文件夹转化成一个虚拟目录，在然后移处该虚拟目录*.*的映射，这样一来他的url重写程序就不会去处理图片文件，当然存放别的不需要url重写程序的文件也要象图片文件夹做类似的处理，方法2，新建一个站点，如用<a href="http://img.wodecity.com/">http://img.wodecity.com/</a>存放图片文件，原理是一样的，都是让你的url重写处理程序不处理那些图片文件。</p>
<p>一切ok，他跟我说今天早上他到公司测试一下。<br>
<br>
为了验证我的想法，我今天自己也写了一个程序去测试，性能也是相差近20倍，good，我的想法是正确。</p>
<p><br>
或许我的想法或测试结果有错误，这里欢迎PK。</p>
<p>也希望这篇文章对搏客园的性能问题有所帮助，因为搏客园出现的问题可能和我朋友的站点很相似。</p>
<p>ps：写完这篇文章的时候我问了一下我那朋友的测试结果，他说：&ldquo;原来只能撑到50个人。现以700以上都没有问题 。&rdquo;</p>
</div> <a href="http://hi.baidu.com/hankx/blog/item/656d95dd234b533c5982dd03.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/%B3%CC%D0%F2%C8%CB%C9%FA">程序人生</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/656d95dd234b533c5982dd03.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月12日 星期五  10:02</pubDate>
        <category><![CDATA[程序人生]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/656d95dd234b533c5982dd03.html</guid>
</item>

<item>
        <title><![CDATA[商城县城关中学四班（1997级），往昔的回忆！]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/6f1e4dc27a6c6e3de5dd3b02.html]]></link>
        <description><![CDATA[
		
		<p>商城县城关中学四班（1997级）的同学们：</p>
<p>HI，大家还记得我吗，我叫陈磊，好多年过去了，大多都失去了联系，你们还记得曾经的彼此嘛，呵呵，看到了请和我联系，我的qq：56283832，邮箱：<a href="mailto:hankx_chen@qq.com">hankx_chen@qq.com</a>，或者请留言，留下你的qq或者电子邮箱，我想整理一份大家的联系方式，呵呵，大家email一张您的近照给我更好，我会分发给大家！</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/%C9%FA%BB%EE%B5%E3%B5%CE">生活点滴</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/6f1e4dc27a6c6e3de5dd3b02.html#comment">查看评论</a>]]></description>
        <pubDate>2009年06月05日 星期五  09:44</pubDate>
        <category><![CDATA[生活点滴]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/6f1e4dc27a6c6e3de5dd3b02.html</guid>
</item>

<item>
        <title><![CDATA[jquery 1.3 发布在即：Help Test jQuery 1.3 Beta 1]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/4430c88067f476d09023d946.html]]></link>
        <description><![CDATA[
		
		<p>The jQuery team has been working hard on the new release of the jQuery library and it&rsquo;s ready for some in-depth testing! jQuery 1.3 is not ready for production use yet but we need help to weed out any bugs that might&rsquo;ve snuck through.</p>
<p><strong>Download</strong></p>
<p>A copy of jQuery 1.3b1 can be found here:</p>
<ul>
    <li><a href="http://code.jquery.com/jquery-1.3b1.js">http://code.jquery.com/jquery-1.3b1.js</a></li>
</ul>
<p>Please don&rsquo;t use minified or packed versions of jQuery when testing - it makes locating bugs difficult.</p>
<p><strong>Major Areas of Change</strong></p>
<p>Here are some of the areas that have seen major changes and are most likely to cause problems in your code:</p>
<ul>
    <li>Selector Engine - The selector code has undergone a complete rewrite - it&rsquo;s likely that some edge cases still exist here.</li>
    <li>DOM Manipulation (append/prepend/before/after) - This code has also undergone a large rewrite along with some of the logic for executing inline script elements.</li>
    <li>.offset() - Another method that has been completely rewritten.</li>
    <li>Event Namespaces - The logic for handling namespaced events has been completely rewritten.</li>
    <li>Event Triggering - When triggering an event the event now bubbles up the DOM - this is likely to cause some problems.</li>
</ul>
<p>While we won&rsquo;t get into the particulars of all the new features that are in jQuery 1.3 (we&rsquo;ll do that later, when it&rsquo;s ready for final release - scheduled for January 14th) we do appreciate any/all feedback that you can provide.</p>
<p><strong>How to provide feedback:</strong></p>
<ul>
    <li>Submit a bug to the <a href="http://dev.jquery.com/">jQuery bug tracker</a> (you will need to create an account, first).</li>
    <li>Be sure to include a simple test case for any problem that you&rsquo;re experiencing (either attach the test case or provide a link).</li>
    <li>Mention that you&rsquo;re testing &ldquo;jQuery 1.3 Beta 1″ (otherwise your ticket will get confused with another release).</li>
    <li>Email a link to your test case and bug report to the <a href="http://groups.google.com/group/jquery-dev">jQuery Dev list</a> so that the dev team will be notified about your issue.</li>
</ul>
<p>Thanks to everyone, in advance, for all your help in testing this release. We&rsquo;re really excited about this release and can&rsquo;t wait to get it into your hands.</p> <a href="http://hi.baidu.com/hankx/blog/item/4430c88067f476d09023d946.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Javascript">Javascript</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/4430c88067f476d09023d946.html#comment">查看评论</a>]]></description>
        <pubDate>2008年12月26日 星期五  09:11</pubDate>
        <category><![CDATA[Javascript]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/4430c88067f476d09023d946.html</guid>
</item>

<item>
        <title><![CDATA[HankxCMS PHP版本的上传图片窗口]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/7668cdfc8071fd85b901a0d9.html]]></link>
        <description><![CDATA[
		
		<p> </p>
<div forimg="1">
<div forimg="1"><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/hankx/pic/item/55c585d660867d3206088b02.jpg"></div>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/7668cdfc8071fd85b901a0d9.html#comment">查看评论</a>]]></description>
        <pubDate>2008年12月24日 星期三  14:19</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/7668cdfc8071fd85b901a0d9.html</guid>
</item>

<item>
        <title><![CDATA[[原创]用JS或jQuery访问页面内的iframe,兼容IE/FF]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/5d4f4e08a85370920a7b82c8.html]]></link>
        <description><![CDATA[
		
		<h2 class="title">[原创]用JS或jQuery访问页面内的iframe,兼容IE/FF</h2>
<p class="postdate">js或者jQuery访问页面中的框架也就是iframe.<span style="display: none"> </span><br>
<br>
注意:框架内的页面是不能跨域的!<span style="display: none"> </span></p>
<div class="content">
<p><br>
假设有两个页面,在相同域下.<span style="display: none"> </span></p>
<p>index.html 文件内含有一个iframe:</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">html</span><span> </span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/1999/xhtml&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">http-equiv</span><span>=</span><span class="attribute-value">&quot;Content-Type&quot;</span><span> </span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;text/html; charset=gb2312&quot;</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>页面首页</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">iframe</span><span> </span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;iframe.html&quot;</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;koyoz&quot;</span><span> </span><span class="attribute">height</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span> </span><span class="attribute">width</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">iframe</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>iframe.html 内容:</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">html</span><span> </span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/1999/xhtml&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">meta</span><span> </span><span class="attribute">http-equiv</span><span>=</span><span class="attribute-value">&quot;Content-Type&quot;</span><span> </span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;text/html; charset=gb2312&quot;</span><span> </span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>iframe.html</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">div</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;test&quot;</span><span class="tag">&gt;</span><span>www.koyoz.com</span><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p> </p>
<p>1. 在index.html执行JS直接访问:</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c">
    <li class="alt"><span><span><font color="#ff0000">document</font>.<font color="#808000">getElementById</font>(</span><span class="string">'koyoz'</span><span>).<font color="#008080">contentWindow</font>.<font color="#ff0000">document</font>.<font color="#808000">getElementById</font>(</span><span class="string">'test'</span><span>).<font color="#ff0000">style</font>.color=</span><span class="string">'red'</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>通过在index.html访问ID名为'koyoz'的iframe页面,并取得此iframe页面内的ID为'test'的对象,并将其颜色设置为红色.</p>
<p>此代码已经测试通过,能支持IE/firefox .<br>
<br>
2. 在index.html里面借助jQuery访问:</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c">
    <li class="alt"><span><span>$(</span><span class="string">&quot;#koyoz&quot;</span><span>).contents().find(</span><span class="string">&quot;#test&quot;</span><span>).css(</span><span class="string">'color'</span><span>,</span><span class="string">'red'</span><span>);&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>此代码的效果和JS直接访问是一样的,由于借助于jQuery框架,代码就更短了.</p>
<p> </p>
<p>补充一下：</p>
<p>用DOM方法与jquery方法结合的方式实现了<br>
<br>
1.在父窗口中操作 选中IFRAME中的所有单选钮<br>
$(window.frames[&quot;iframe1&quot;].document).find(&quot;input[@type='radio']&quot;).attr(&quot;checked&quot;,&quot;true&quot;);<br>
<br>
2.在IFRAME中操作 选中父窗口中的所有单选钮<br>
$(window.parent.document).find(&quot;input[@type='radio']&quot;).attr(&quot;checked&quot;,&quot;true&quot;);<br>
<br>
iframe框架的：&lt;iframe src=&quot;test.html&quot; id=&quot;iframe1&quot; width=&quot;700&quot; height=&quot;300&quot; frameborder=&quot;0&quot; scrolling=&quot;auto&quot;&gt;&lt;/iframe&gt;<br>
<br>
IE7中测试通过 回去你自己试试吧</p>
</div> <a href="http://hi.baidu.com/hankx/blog/item/5d4f4e08a85370920a7b82c8.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/css%26%2338%3Bjs">css&#38;js</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/5d4f4e08a85370920a7b82c8.html#comment">查看评论</a>]]></description>
        <pubDate>2008年12月19日 星期五  16:54</pubDate>
        <category><![CDATA[css&#38;js]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/5d4f4e08a85370920a7b82c8.html</guid>
</item>

<item>
        <title><![CDATA[mysql字段类型说明与用途(转)]]></title>
        <link><![CDATA[http://hi.baidu.com/hankx/blog/item/5d393b120083da56f819b88b.html]]></link>
        <description><![CDATA[
		
		<table cellspacing="1" cellpadding="1" width="100%" border="0">
    <tbody>
        <tr>
            <th>数据类型</th>
            <th>描述</th>
            <th>字节</th>
            <th>推荐使用</th>
        </tr>
        <tr>
            <td>SMALLINT</td>
            <td>整数，从-32000到 +32000范围</td>
            <td>2</td>
            <td>存储相对比较小的整数。<br>
            比如: 年纪，数量</td>
        </tr>
        <tr>
            <td>INT</td>
            <td>整数，从-2000000000 到 +2000000000 范围</td>
            <td>4</td>
            <td>存储中等整数<br>
            例如: 距离</td>
        </tr>
        <tr>
            <td>BIGINT</td>
            <td>不能用SMALLINT 或 INT描述的超大整数。</td>
            <td>8</td>
            <td>存储超大的整数<br>
            例如: 科学/数学数据</td>
        </tr>
        <tr>
            <td>FLOAT</td>
            <td>单精度浮点型数据</td>
            <td>4</td>
            <td>存储小数数据<br>
            例如:测量，温度</td>
        </tr>
        <tr>
            <td>DOUBLE</td>
            <td>双精度浮点型数据</td>
            <td>8</td>
            <td>需要双精度存储的小数数据<br>
            例如:科学数据</td>
        </tr>
        <tr>
            <td>DECIMAL</td>
            <td>用户自定义精度的浮点型数据</td>
            <td>变量;取决于精度与长度</td>
            <td>以特别高的精度存储小数数据。<br>
            例如:货币数额，科学数据</td>
        </tr>
        <tr>
            <td>CHAR</td>
            <td>固定长度的字符串</td>
            <td>特定字符串长度(高达255字符)</td>
            <td>存储通常包含预定义字符串的变量<br>
            例如: 定期航线，国家或邮编</td>
        </tr>
        <tr>
            <td>VARCHAR</td>
            <td>具有最大限制的可变长度的字符串</td>
            <td>变量; 1 + 实际字符串长度 (高达 255 字符)</td>
            <td>存储不同长度的字符串值(高达一个特定的最大限度).<br>
            例如:名字，密码，短文标签</td>
        </tr>
        <tr>
            <td>TEXT</td>
            <td>没有最大长度限制的可变长度的字符串</td>
            <td>Variable; 2 +聽 actual string length</td>
            <td>存储大型文本数据<br>
            例如: 新闻故事，产品描述</td>
        </tr>
        <tr>
            <td>BLOB</td>
            <td>二进制字符串</td>
            <td>变量；2 + 实际字符串长度</td>
            <td>存储二进制数据<br>
            例如:图片，附件，二进制文档</td>
        </tr>
        <tr>
            <td>DATE</td>
            <td>以 yyyy-mm-dd格式的日期</td>
            <td>3</td>
            <td>存储日期<br>
            例如:生日，产品满期</td>
        </tr>
        <tr>
            <td>TIME</td>
            <td>以 hh:mm:ss格式的时间</td>
            <td>3</td>
            <td>存储时间或时间间隔<br>
            例如:报警声，两时间之间的间隔，任务开始/结束时间</td>
        </tr>
        <tr>
            <td>DATETIME</td>
            <td>以yyyy-mm-ddhh:mm:ss格式结合日期和时间</td>
            <td>8</td>
            <td>存储包含日期和时间的数据<br>
            例如:提醒的人，事件</td>
        </tr>
        <tr>
            <td>TIMESTAMP</td>
            <td>以yyyy-mm-ddhh:mm:ss格式结合日期和时间</td>
            <td>4</td>
            <td>记录即时时间<br>
            例如：事件提醒器，&ldquo;最后进入&rdquo;的时间标记</td>
        </tr>
        <tr>
            <td>YEAR</td>
            <td>以 yyyy格式的年份</td>
            <td>1</td>
            <td>存储年份<br>
            例如:毕业年，出生年</td>
        </tr>
        <tr>
            <td>ENUM</td>
            <td>一组数据，用户可从中选择其中一个</td>
            <td>1或 2个字节</td>
            <td>存储字符属性，只能从中选择之一<br>
            例如:布尔量选择，如性别</td>
        </tr>
        <tr>
            <td>SET</td>
            <td>一组数据，用户可从中选择其中0，1或更多。</td>
            <td>从1到8字节;取决于设置的大小</td>
            <td>存储字符属性，可从中选择多个字符的联合。<br>
            例如:多选项选择，比如业余爱好和兴趣。</td>
        </tr>
    </tbody>
</table> <a href="http://hi.baidu.com/hankx/blog/item/5d393b120083da56f819b88b.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/hankx/blog/category/Php">Php</a>&nbsp;<a href="http://hi.baidu.com/hankx/blog/item/5d393b120083da56f819b88b.html#comment">查看评论</a>]]></description>
        <pubDate>2008年12月18日 星期四  10:36</pubDate>
        <category><![CDATA[Php]]></category>
        <author><![CDATA[hankx_chen]]></author>
		<guid>http://hi.baidu.com/hankx/blog/item/5d393b120083da56f819b88b.html</guid>
</item>


</channel>
</rss>