Sfoglia il codice sorgente

最初版来自
https://github.com/ycrao/codeigniter_user_guide_chs

Signed-off-by: 837454876 <837454876@qq.com>

837454876 10 anni fa
parent
commit
df08f18205
100 ha cambiato i file con 15961 aggiunte e 1 eliminazioni
  1. BIN
      CodeIgniter用户指南v2.2.0.chm
  2. 29 1
      README.md
  3. BIN
      bin/hha.dll
  4. BIN
      bin/hhc.exe
  5. 1550 0
      changelog.html
  6. 19 0
      ci_chm.ahk
  7. BIN
      ci_chm.exe
  8. 599 0
      ci_chm.hhc
  9. 595 0
      ci_chm.hhk
  10. 18 0
      ci_chm.hhp
  11. 853 0
      database/active_record.html
  12. 201 0
      database/caching.html
  13. 101 0
      database/call_function.html
  14. 159 0
      database/configuration.html
  15. 185 0
      database/connecting.html
  16. 213 0
      database/examples.html
  17. 173 0
      database/fields.html
  18. 232 0
      database/forge.html
  19. 171 0
      database/helpers.html
  20. 93 0
      database/index.html
  21. 149 0
      database/queries.html
  22. 259 0
      database/results.html
  23. 103 0
      database/table_data.html
  24. 182 0
      database/transactions.html
  25. 299 0
      database/utilities.html
  26. 201 0
      drivers/caching.html
  27. 112 0
      general/alternative_php.html
  28. 87 0
      general/autoloader.html
  29. 108 0
      general/caching.html
  30. 149 0
      general/cli.html
  31. 130 0
      general/common_functions.html
  32. 290 0
      general/controllers.html
  33. 179 0
      general/core_classes.html
  34. 99 0
      general/creating_drivers.html
  35. 266 0
      general/creating_libraries.html
  36. 83 0
      general/credits.html
  37. 101 0
      general/drivers.html
  38. 120 0
      general/environments.html
  39. 126 0
      general/errors.html
  40. 176 0
      general/helpers.html
  41. 136 0
      general/hooks.html
  42. 89 0
      general/libraries.html
  43. 122 0
      general/managing_apps.html
  44. 251 0
      general/models.html
  45. 175 0
      general/profiling.html
  46. 80 0
      general/quick_reference.html
  47. 80 0
      general/requirements.html
  48. 131 0
      general/reserved_names.html
  49. 166 0
      general/routing.html
  50. 152 0
      general/security.html
  51. 644 0
      general/styleguide.html
  52. 118 0
      general/urls.html
  53. 254 0
      general/views.html
  54. 167 0
      helpers/array_helper.html
  55. 195 0
      helpers/captcha_helper.html
  56. 105 0
      helpers/cookie_helper.html
  57. 374 0
      helpers/date_helper.html
  58. 125 0
      helpers/directory_helper.html
  59. 110 0
      helpers/download_helper.html
  60. 102 0
      helpers/email_helper.html
  61. 178 0
      helpers/file_helper.html
  62. 457 0
      helpers/form_helper.html
  63. 399 0
      helpers/html_helper.html
  64. 104 0
      helpers/inflector_helper.html
  65. 94 0
      helpers/language_helper.html
  66. 112 0
      helpers/number_helper.html
  67. 104 0
      helpers/path_helper.html
  68. 124 0
      helpers/security_helper.html
  69. 206 0
      helpers/smiley_helper.html
  70. 186 0
      helpers/string_helper.html
  71. 203 0
      helpers/text_helper.html
  72. 107 0
      helpers/typography_helper.html
  73. 296 0
      helpers/url_helper.html
  74. 96 0
      helpers/xml_helper.html
  75. BIN
      images/appflowchart.gif
  76. BIN
      images/ci_logo_flame.jpg
  77. BIN
      images/ci_quick_ref.png
  78. BIN
      images/codeigniter_1.7.1_helper_reference.pdf
  79. BIN
      images/codeigniter_1.7.1_helper_reference.png
  80. BIN
      images/codeigniter_1.7.1_library_reference.pdf
  81. BIN
      images/codeigniter_1.7.1_library_reference.png
  82. BIN
      images/nav_toggle_darker.jpg
  83. BIN
      images/reactor-bullet.png
  84. BIN
      images/smile.gif
  85. BIN
      images/timezone_menu.gif
  86. BIN
      images/user_guide/arrow.gif
  87. BIN
      images/user_guide/nav_bg_darker.jpg
  88. BIN
      images/user_guide/nav_separator_darker.jpg
  89. BIN
      images/user_guide/reactor-bullet.png
  90. 93 0
      index.html
  91. 119 0
      installation/downloads.html
  92. 100 0
      installation/index.html
  93. 84 0
      installation/troubleshooting.html
  94. 93 0
      installation/upgrade_120.html
  95. 206 0
      installation/upgrade_130.html
  96. 103 0
      installation/upgrade_131.html
  97. 101 0
      installation/upgrade_132.html
  98. 113 0
      installation/upgrade_133.html
  99. 146 0
      installation/upgrade_140.html
  100. 151 0
      installation/upgrade_141.html

BIN
CodeIgniter用户指南v2.2.0.chm


+ 29 - 1
README.md

@@ -1 +1,29 @@
-#codeigniter_user_guide_chs
+CodeIgniter用户指南v2.2.0
+----
+
+编者只是网络搬运工,帮助制作成离线CHM文档,以便PHP开发者线下参考使用。
+
+原始帮助文档来自[CodeIgniter 中国](http://codeigniter.org.cn/user_guide/index.html "CodeIgniter 中g国 "),内容版权归原始持有者所有,如有侵权,请来发email告知。
+
+感谢CodeIgniter中国,感谢EllisLab,感谢所有中文文档翻译志愿者。
+
+#脚本说明
+
+①使用Teleport离线下载CodeIgniter 中国帮助文档;
+
+②replace_htmls.exe,replace_subdir_htmls.exe是用Autohotkey写的,用来清理被Teleport离线下来的html文档(删除其中垃圾js代码段)。
+
+    注意,帮助文档子目录下的html文档(如database,general,helper目录等),    
+    请往replace_subdir_htmls.exe拖动;
+    帮助文档根目录下的html文档(如index.html,changelog.html,toc.html等),
+    请往replace_htmls.exe拖动。
+
+③CHM文档是使用微软的MS HTML Help Workshop工具来生成的,相关dll和exe位于bin目录下。ci_chm.exe是用于生成CHM帮助文档的脚本,同样也是使用Autohotkey编写。
+
+
+#联系编者
+
+email: 
+
+    837454876#qq&com 
+请将**#**换成**@**,**&**换成**.**。

BIN
bin/hha.dll


BIN
bin/hhc.exe


+ 1550 - 0
changelog.html

@@ -0,0 +1,1550 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>变更记录 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/changelog.html" />
+<script type="text/javascript" src="nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('null');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;变更记录    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>变更记录</h1>
+
+<p>带<img src="images/reactor-bullet.png" width="16" height="16" alt="Reactor Marker" />标识的为社区贡献。</p>
+
+
+<h2>版本 2.2.0</h2>
+<p>发版日期: 2014年6月5日</p>
+
+<ul>
+ <li>一般性更改
+  <ul>
+   <li><b>安全:</b> <samp>xor_encode()</samp> 方法从加密类中移除。加密类现在必须安装Mcrypt扩展。</li>
+      <li><b>安全:</b> <a href="libraries/sessions.html">Session 类</a> 使用HMAC认证来代替简单的MD5校验和.<p class="critical">HMAC参考:<a href="#" target="_blank">http://en.wikipedia.org/wiki/Hash-based_message_authentication_code</a></p></li>
+  </ul>
+ </li>
+</ul>
+
+<h3>2.2.0 修正缺陷:</h3>
+<ul>
+ <li>修复了 - (#2583) - <a href="#">Suhosin</a>会导致<a href="libraries/email.html">邮件类</a>在header尾部加入了新的条目而阻止通过<samp>mail()</samp>方法发送邮件的特殊情况。</li>
+ <li>修复了 - (#696)  - make <samp>oci_execute()</samp> calls inside <samp>num_rows()</samp> non-committing, since they are only there to reset which row is next in line for oci_fetch calls and thus don't need to be committed.</li>
+ <li>修复了 - (#2689) - <a href="database/forge.html">数据库维护类</a> 中的 <samp>create_table()</samp>, <samp>drop_table()</samp> 以及 <samp>rename_table()</samp> 等方法会在'sqlsrv'驱动中产生有问题的SQL语句。</li>
+ <li>修复了 - (#2427) - <a href="database/index.html">数据库类</a>中的PDO驱动没有检查是否查询失败的问题。</li>
+ <li>修复了 <a href="libraries/sessions.html">Session 类</a>中没经过加密的cookies验证的问题。</li>
+</ul>
+
+
+<h2>版本 2.1.4</h2>
+<p>发布日期:2013年7月8日</p>
+
+<ul>
+ <li>General Changes
+  <ul>
+   <li>Improved security in <kbd>xss_clean()</kbd>.</li>
+  </ul>
+ </li>
+</ul>
+
+<h3>Bug fixes for 2.1.4:</h3>
+<ul>
+ <li>Fixed a bug (#1936) - <a href="libraries/migration.html">Migrations Library</a> method <samp>latest()</samp> had a typo when retrieving language values.</li>
+ <li>Fixed a bug (#2021) - <a href="libraries/migration.html">Migrations Library</a> configuration file was mistakenly using Windows style line feeds.</li>
+ <li>Fixed a bug (#1273) - <a href="database/active_record.html">Active Record</a> method <samp>set_update_batch()</samp> was using the incorrect variables and would cause an error.</li>
+ <li>Fixed a bug (#2337) - <a href="libraries/email.html">Email Library</a> method <samp>print_debugger()</samp> was not using <samp>htmlspecialchars()</samp> when being shown in the browser.</li>
+</ul>
+
+
+<h2>版本 2.1.3</h2>
+<p>发布日期: 2012年10月8日</p>
+<h3>2.1.3的缺陷修复</h3>
+<ul>
+  <li>修正了一个错误 (#1543) - <a href="drivers/caching.html#file">基于文件的缓存</a> 中 <samp>get_metadata()</samp>方法使用不存在的数组键名寻找TTL(生存时间)值</li>
+  <li>修正了一个错误 (#1314) - <a href="libraries/sessions.html">Session类</a> 中的 <samp>sess_destroy()</samp> 方法无法销毁userdata数组.</li>
+  <li>修正了一个错误 如果Session数据包含对象,那么<a href="index.html">Profiler类</a>会释出E_WARNING错误</li>
+  <li>修正了一个错误 (#1699) - <a href="libraries/migration.html">Migration类</a>会忽略<samp>$config['migration_path']</samp>设置.</li>
+  <li>修正了一个错误 (#227) - <a href="libraries/input.html">输入类</a>无条件允许通过HTTP_CLIENT_IP头,使之进行IP地址欺骗</li>
+  <li>修正了一个错误 (#907) - <a href="libraries/input.html">输入类</a>检查代理类型时会忽略HTTP_X_CLUSTER_CLIENT_IP和HTTP_X_CLIENT_IP头.</li>
+  <li>修正了一个错误 (#940) - 当处理POST请求没有实际数据时,<samp>csrf_verify()</samp>仍然去设置CSRF cookie,应该使该验证请求视为无效。</li>
+  <li>修正了一个错误 即使<samp>$config['csrf_protection']</samp>已经设置为FALSE,但在<a href="libraries/security.html">安全类</a>中的CSRF cookie仍然会被创建.</li>
+  <li>修正了一个错误 (#1715) - CLI向<a href="libraries/input.html">输入库</a>发出请求触发<samp>csrf_verify()</samp>.</li>
+</ul>
+
+<h2>版本 2.1.2</h2>
+<p>发布日期: 2012年6月29日</p>
+<ul>
+  <li>总体变化
+    <ul>
+      <li>增加XSS_clean()安全性</li>
+    </ul>
+  </li>
+</ul> 
+
+<h2>版本 2.1.1</h2>
+<p>发布日期: 2012年6月12日</p>
+
+<ul>
+  <li>总体变化
+    <ul>
+      <li>修正mimes.php中对docx,xlsx文件的支持</li>
+    </ul>
+  </li>
+  <li>类库
+    <ul>
+      <li>进一步提升在<a href="libraries/file_uploading.html">文件上传类</a>中的MIME类型检测</li>
+      <li>在<a href="libraries/input.html">输入类</a>增加对IPv6的支持</li>
+      <li>在<a href="libraries/form_validation.html">表单验证类</a>中增加对IP格式参数验证的支持。</li>
+    </ul>
+  </li>
+  <li>辅助函数
+    <ul>
+      <li>提高<samp>url_title()</samp>的性能和输出,可以使用任何字符串作为单词分隔符,并向后兼容“破折号”或“下划线”作为单词分隔符。</li>
+    </ul>
+  </li>
+</ul>
+
+<h3>2.1.1的缺陷修复</h3>
+<ul>
+  <li>修复了上传类在检查MIME类型时,错误的使用数组KEY的问题。 (#697) </li>
+  <li>修复了form_open()所使用的$action是针对site_url()而不是base_url()的问题。</li>
+  <li>修复了CI_Upload::_file_mime_type() 如果它用来检测mime_content_type()可能返回FALSE的问题。</li>
+  <li>修复了使用<a href="libraries/image_lib.html">图像处理类</a>来创建一个新的文件,Windows路径会被忽略的问题。(#538)</li>
+  <li>修复了当开启数据库缓存,使用$this-&gt;db-&gt;query()检查缓存的结果不被获取的问题。</li>
+  <li>修复了CSRF的cookie值允许任何(非空)字符串被写入到输出之前,使代码存在注入风险</li>
+  <li>修复了PDO将’dbname’作为连接字符串参数的时候,其不顾及数据库是否在使用中就进行连接的行为所造成SQLITE无法使用的问题(#726)</li>
+  <li>修复了CI_DB_pdo_result::num_rows()返回不正确的SELECT查询值,因它使用PDOStatement::rowCount().</li>
+  <li>修复了CI_Image_lib::clear()不正确地清除所有必要的对象属性,包括宽度和高度(#1059)</li>
+</ul>
+
+<h2>Version 2.1.0</h2>
+<p>Release Date: November 14, 2011</p>
+
+<ul>
+  <li>General Changes
+    <ul>
+      <li>Fixed a potential parameter injection flaw in the <a href="libraries/security.html">Security Library</a> and strengthened the XSS filter for HTML5 vulnerabilites.</li>
+      <li>Callback validation rules can now accept parameters like any other validation rule.</li>
+      <li>Added html_escape() to the <a href="general/common_functions.html">Common functions</a> to escape HTML output for preventing XSS easliy.</li>
+    </ul>
+  </li>
+  <li>Helpers
+    <ul>
+      <li>Added <samp>increment_string()</samp> to <a href="helpers/string_helper.html">String Helper</a> to turn "foo" into "foo-1" or "foo-1" into "foo-2".</li>
+      <li>Altered form helper - made action on form_open_multipart helper function call optional. Fixes (#65)</li>
+      <li><samp>url_title()</samp> will now trim extra dashes from beginning and end.</li>
+      <li>Improved speed of <a href="helpers/string_helper.html">String Helper</a>'s <b>random_string()</b> method</li>
+    </ul>
+  </li>
+  <li>Database
+    <ul>
+      <li>Added a <a href="#" target="_blank">CUBRID</a> driver to the <a href="index.html">Database driver</a>. Thanks to the CUBRID team for supplying this patch.</li>
+      <li>Added a <a href="#" target="_blank">PDO</a> driver to the <a href="index.html">Database driver</a>.</li>
+      <li>Typecast limit and offset in the <a href="database/queries.html">Database driver</a> to integers to avoid possible injection.</li>
+      <li>Added additional option 'none' for the optional third argument for <kbd>$this-&gt;db-&gt;like()</kbd> in the <a href="database/active_record.html">Database driver</a>.
+      </li>
+      <li>Added <kbd>$this-&gt;db-&gt;insert_batch()</kbd> support to the OCI8 (Oracle) driver.</li>
+    </ul>
+  </li>
+  <li>Libraries
+    <ul>
+      <li>Changed <kbd>$this-&gt;cart-&gt;insert()</kbd> in the <a href="libraries/cart.html">Cart library</a> to return the Row ID if a single item was inserted successfully.</li>
+      <li>Added support to set an optional parameter in your callback rules of validation using the <a href="libraries/form_validation.html">Form Validation library</a>.</li>
+      <li>Added a <a href="libraries/migration.html">Migration library</a> to assist with applying incremental updates to your database schema.</li>
+      <li>Driver children can be located in any package path.</li>
+      <li>Added <samp>is_unique</samp> to the <a href="libraries/form_validation.html">Form Validation library</a>.</li>
+      <li>Added <kbd>$config['use_page_numbers']</kbd> to the <a href="libraries/pagination.html">Pagination library</a>, which enables real page numbers in the URI.</li>
+      <li>Added TLS and SSL Encryption for SMTP.</li>
+    </ul>
+  </li>
+  <li>Core
+    <ul>
+      <li>Changed private functions in <a href="libraries/cart.html">URI library</a> to protected so <kdb>MY_URI</kdb> can override them.</li>
+      <li>Removed <samp>CI_CORE</samp> boolean constant from CodeIgniter.php (there are no longer different Reactor and Core versions).</li>
+    </ul>
+  </li>
+</ul>
+
+<h3>Bug fixes for 2.1.0</h3>
+<ul>
+  <li>Fixed #378 Robots identified as regular browsers by the <a href="libraries/user_agent.html">User Agent class</a>.</li>
+  <li>If a config class was loaded first then a library with the same name is loaded, the config would be ignored.</li>
+  <li>Fixed a bug (Reactor #19) where 1) the 404_override route was being ignored in some cases, and 2) auto-loaded libraries were not available to the 404_override controller when a controller existed but the requested method did not.</li>
+  <li>Fixed a bug (Reactor #89) where MySQL export would fail if the table had hyphens or other non alphanumeric/underscore characters.</li>
+  <li>Fixed a bug (#200) where MySQL queries would be malformed after calling <kbd>$this-&gt;db-&gt;count_all()</kbd> then <kdb>$this-&gt;db-&gt;get()</kdb></li>
+  <li>Fixed bug #105 that stopped query errors from being logged unless database debugging was enabled</li>
+  <li>Fixed a bug (#160) - Removed unneeded array copy in the file cache driver.</li>
+  <li>Fixed a bug (#150) - <samp>field_data()</samp> now correctly returns column length.</li>
+  <li>Fixed a bug (#8) - <samp>load_class()</samp> now looks for core classes in <samp>APPPATH</samp> first, allowing them to be replaced.</li>
+  <li>Fixed a bug (#24) - ODBC database driver called incorrect parent in __construct().</li>
+  <li>Fixed a bug (#85) - OCI8 (Oracle) database <kbd>escape_str()</kbd> function did not escape correct.</li>
+  <li>Fixed a bug (#344) - Using schema found in <a href="libraries/sessions.html">Saving Session Data to a Database</a>, system would throw error "user_data does not have a default value" when deleting then creating a session.</li>
+  <li>Fixed a bug (#112) - OCI8 (Oracle) driver didn't pass the configured database character set when connecting.</li>
+  <li>Fixed a bug (#182) - OCI8 (Oracle) driver used to re-execute the statement whenever num_rows() is called.</li>
+  <li>Fixed a bug (#82) - WHERE clause field names in the DB <kbd>update_string()</kbd> method were not escaped, resulting in failed queries in some cases.</li>
+  <li>Fixed a bug (#89) - Fix a variable type mismatch in DB <kbd>display_error()</kbd> where an array is expected, but a string could be set instead.</li>
+  <li>Fixed a bug (#467) - Suppress warnings generated from <kbd>get_magic_quotes_gpc()</kbd> (deprecated in PHP 5.4)</li>
+  <li>Fixed a bug (#484) - First time <kbd>_csrf_set_hash()</kbd> is called, hash is never set to the cookie (in Security.php).</li>
+  <li>Fixed a bug (#60) - Added <kbd>_file_mime_type()</kbd> method to the <a href="libraries/file_uploading.html">File Uploading Library</a> in order to fix a possible MIME-type injection (also fixes bug #394).</li>
+  <li>Fixed a bug (#537) - Support for all wav type in browser.</li>
+  <li>Fixed a bug (#576) - Using <kbd>ini_get()</kbd> function to detect if apc is enabled or not.</li>
+  <li>Fixed invalid date time format in <a href="helpers/date_helper.html">Date helper</a> and <a href="libraries/xmlrpc.html">XMLRPC library</a>.</li>
+</ul>
+
+
+<h2>版本号 2.0.3</h2>
+<p>发布时间: 2011年8月20号<br>
+Hg标签: v2.0.3</p>
+<ul>
+  <li>安全方面
+    <ul>
+      <li>改进了MySQL和MySQLi的驱动以防止通过在数据库连接时使用多字节的字符集来进行SQL注入。</li>
+      <p>在PHP版本低于5.2.3和MySQL版本低于5.0.7环境下使用<em>mysql_set_charset()</em>方法的不兼容将会导致一种危险状况,在此环境下使用多字节字符集可能会暴露出SQL注入攻击的漏洞。Latin-1,UTF-8,和其他“低ASCII”字符集在所有环境下使用都是没问题的。</p>
+       <p class="critical">如果你在为你的数据库连接使用或者考虑使用多字符集的话,请密切关注你部署的服务器环境,以确保服务器的安全。</p>
+      </li>
+    </ul>
+  </li>
+<li>总体变化
+    <ul>
+      <li>修复了在index.php中一个注释的拼写错误。</li>
+      <li>将Session类的用户数据添加到了output分析器中。并在HTTP消息头,Session数据和配置参数中增加了一个切换显示和隐藏状态的开关。</li>
+      <li>移除内部使用的<samp>EXT</samp>常量。</li>
+      <li>更新了welcome_message视图和default error模版文件. 感谢<a href="#">danijelb</a> 所提供的建议。</li>
+      <li class="reactor">为PostgreSQL数据库驱动增加了<samp>insert_batch()</samp>方法。感谢epallerols所提供的建议。</li>
+      <li class="reactor">为mimes.php.增加"application/x-csv"。</li>
+      <li>修复了一个 <a href="libraries/email.html">Email库</a>的bug(当Email名字上附带“.”的时候将使用无效的MIME类型)。</li>
+    </ul>
+</li>
+<li>辅助函数的变化
+    <ul>
+      <li>为<samp>heading()</samp>方法增加了一个可选的第三个参数,这个参数将允许为渲染标题标签增加html属性。</li>
+    </ul>
+</li>
+<li>类库变化
+    <ul>
+      <li>修改了Session类来使用一个更长的与用户代理字符串的匹配。如果使用数据库sessions请查看更新日志。</li>
+      <li class="reactor">为<a href="database/queries.html">数据库驱动</a>增加了<kbd>$this-&gt;db-&gt;set_dbprefix()</kbd>方法。</li>
+      <li class="reactor">改变了<a href="libraries/cart.html">Cart库</a>中的<kbd>$this-&gt;cart-&gt;insert()</kbd>方法,如果只有一个数据被成功插入,这个方法将返回插入行的id。</li>
+      <li class="reactor">为<a href="libraries/loader.html">Loader库</a>增加了<kbd>$this-&gt;load-&gt;get_var()</kbd>方法,这个方法将检索通过<kbd>$this-&gt;load-&gt;view()</kbd>和<kbd>$this-&gt;load-&gt;vars()</kbd>方法所设置的全局变量是否存在。</li>
+      <li>修改了<kbd>$this-&gt;db-&gt;having()</kbd>方法,插入引号将使用escape()方法而不是escape_str()方法。</li>
+    </ul>
+</li>
+</ul>
+<h3>2.0.3的Bug修复</h3>
+  <ul>
+  <li class="reactor">增加ENVIRONMENT为保留字(Reactor #196)</li>
+  <li class="reactor">修改服务器检查以确保SCRIPT_NAME被定义(Reactor #57)</li>
+  <li class="reactor">从autoloader包里移除<samp>APPPATH.'third_party'</samp>,从而取消了不必要的文件属性(在不存在包或者开发者默认没有加载任何包情况下)</li>
+  <li>修复了(Reactor #231)Session库中的数据库表SQL示例不包含最近一次更改索引的bug,详情请见<a href="installation/upgrade_203.html">更新日志</a>.</li>
+  <li>修复了(Reactor #229)Sessions库文档SQL示例中的错误语句。</li>
+  <li>修复了(Core #340)当向$this-&gt;db-&gt;select()传第二个参数时,在之后的查询中列名称可能不会正确去除的bug。</li>
+  <li class="reactor">修复了一个问题#199 -当作字符串传递的属性在开始标记和它自己之间不包含空格 。</li>
+  <li class="reactor">修复了<a href="libraries/cart.html">Cart库</a>中的<kbd>$this-&gt;cart-&gt;total_items()</kbd>方法,现在它将返回cart中所有条目的总数量而不是你自己的总数。</li>
+  <li class="reactor">修复了当为mysql和mysqli驱动的db_forge增加字段时不设置为“null”的bug,现在将把字段默认设置为Null。</li>
+  <li class="reactor">修复了当使用 <kbd>$this-&gt;db-&gt;select_max(), <kbd>$this-&gt;db-&gt;select_min()</kbd></kbd>等方法时可能抛出的提示,感谢w431的修补。</li>
+  <li class="reactor">用php_sapi_name() == 'cli'替换了标准输入(STDIN )的检查,以使得整体更加的可靠。它将在定时工作时获取参数。</li>
+</ul>
+<h2>版本号 2.0.1</h2>
+<p>发表时间: 2011年3月15号<br>
+Hg标签: v2.0.1</p>
+
+<ul>
+  <li>总体变化
+    <ul>
+      <li>config文件添加了 <kbd>$config['cookie_secure']</kbd> 用来允许安全链接(HTTPS) 设置cookie.</li>
+
+      <li class="reactor">添加了常量 <kbd>CI_CORE</kbd> 以用于区分核心代码: TRUE 和社区贡献代码: FALSE.</li>
+      <li class="reactor">index.php添加了常量<kbd>ENVIRONMENT</kbd>, 可以改变PHP的error reporting设置, 可选的,
+                which configuration files are loaded (如下). 更多请见于 <a href="general/environments.html">环境控制</a> .</li>
+      <li class="reactor">添加了支持 <a href="libraries/config.html#environments">定制环境</a>的配置文件.</li>
+
+    </ul>
+  </li>
+  <li>类库
+    <ul>
+      <li class="reactor"><a href="libraries/form_validation.html">Form validation Class</a>添加了<kbd>decimal</kbd>, <kbd>less_than</kbd>和<kbd>greater_than</kbd>规则.</li>
+
+      <li class="reactor">如果未提供第一个参数,<a href="libraries/input.html">Input Class</a> 的<kbd>post()</kbd>和<kbd>get()</kbd>方法将返回包含全部结果的数组.</li>
+      <li class="reactor"><kbd>set_cookie()</kbd> helper和<a href="libraries/input.html">Input Class</a>的方法可以生成Secure cookies.</li>
+
+      <li class="reactor"><a href="libraries/output.html">Output Class</a>添加了<kbd>set_content_type()</kbd>方法,用于设置HTTP的头:<kbd>Content-Type</kbd>的 MIME Type或者是config/mimes.php的数组.(Added set_content_type() to Output Class to set the output Content-Type HTTP header based on a MIME Type or a config/mimes.php array key.)</li>
+      <li class="reactor"><a href="libraries/output.html">Output Class</a>现在支持链式调用.</li>
+
+    </ul>
+  </li>
+  <li>辅助类
+    <ul>
+      <li class="reactor">改变了<a href="helpers/form_helper.html">Form helper</a>的<kbd>form_open()</kbd>处理逻辑. 如果没有值传递过来,那么将会提交当前的URL.</li>
+    </ul>
+
+  </li>
+</ul>
+
+<h3>2.0.1的Bug修正</h3>
+<ul>
+  <li class="reactor">可以在任意文件夹下面运行CLI的请求, 不再只限于index.php所在目录.</li>
+  <li class="reactor">Fixed issue #41: 为mp3添加了audio/mp3 mime头.</li>
+  <li class="reactor">Fixed a bug (核心代码#329) 文件缓存驱动引用了错误的缓存目录.</li>
+  <li class="reactor">Fixed a bug (社区代码#69) SHA1类库命名错误.</li>
+</ul>
+
+
+<h2>版本号:2.0.0</h2>
+<p>编译时间:2011年1月28日<br />
+Hg标签:v2.0.0</p>
+
+<ul>
+  <li>总体变化
+    <ul>
+      <li>已不支持PHP4。 CodeIgniter现在最低需要PHP5.1.6。</li>
+      <li>脚手架前一版本已被弃用,2.0已删除。</li>
+      <li>Plugins已被删除,鼓励使用Helpers。验证码图片plugin已经转为一个Helper,并<a href="helpers/captcha_helper.html">归入文档</a>。 由于可以使用其他更成熟的JavaScript日历类库,特别是jQuery,自带的JavaScript的日历插件已删除。</li>
+      <li>增加了新的特殊的库类型:<a href="general/drivers.html">Drivers</a>。</li>
+      <li class="reactor">新增对query-string的完整支持,详见配置文件。</li>
+      <li>将application从system文件夹中移出。</li>
+      <li>将system/cache和system/logs文件夹从system移到application里。</li>
+      <li>对主index.php文件添加路由重载,使普通的路由指向能够在每个单个的"index"文件的里重写。</li>
+      <li>在主index.php文件增加直接从数据集设置配置值(或重写配置值)的能力,这可以使一个单独的应用程序被多个前端Controller使用,而每个Controller之间又有自己的配置。</li>
+      <li>添加配置<kbd>$config['directory_trigger']</kbd>,使访问一个Controller子目录时可以用指定的URI,而不是_GET字符串。  </li>
+      <li>新增设置“Package”路径功能 - 每次访问加载时,Loader和config总是首先从这里查找。这使分布的每个子应用都可以在一个单独的"package"目录里拥有它们自己的libraries, models, config等等。详见<a href="libraries/loader.html">Loader class</a>文档。</li>
+      <li>开发中的代码现在托管在<a href="#">BitBucket</a>。</li>
+      <li>删除了过时Validation类。</li>
+      <li>在所有核心类名上添加了CI_前缀。</li>
+      <li class="reactor">现在可以在自动加载文件application/config/autoload.php里设置"Package"的路径。</li>
+      <li class="reactor">现在可以不带扩展名设置<a href="libraries/file_uploading.html">Upload</a>库的file_name,扩展名将由实际上传的文件扩展名取代给定的。</li>
+      <li class="reactor">在<a href="database/forge.html">Database Forge</a>中如果你不改变名称,$this-&gt; dbforge -&gt; modify_column()第二个参数可以省略。</li>
+      <li class="reactor">配置<kbd>$config['base_url']</kbd>现在默认为空,会判断它应该是什么。</li>
+      <li class="reactor">启用完整的命令行界面兼容配置<kbd>config['uri_protocol'] = 'CLI';</kbd>。</li>
+    </ul>
+  </li>
+  <li>类库
+    <ul>
+      <li class="reactor">增加了一个<a href="drivers/caching.html">Cache driver</a>,支持APC,memcached,和基于文件的缓存。</li>
+      <li>在<a href="libraries/pagination.html">Pagination library</a>里新增了<var>$prefix</var>, <var>$suffix</var> 和 <var>$first_url</var>属性。</li>
+      <li>在<a href="libraries/pagination.html">Pagination library</a>里新增了可以设置值为false来禁用首页,上一页,下一页,和翻页跳转的链接。</li>
+      <li>增加<a href="libraries/security.html">Security library<a/>,它现在包含<dfn>xss_clean</dfn>方法,<dfn>filename_security</dfn>方法和其他安全相关的方法。
+    </li>
+      <li>在<a href="libraries/security.html">Security library</a>添加CSRF(跨站点的参考伪造)的保护。</li>
+      <li>在Output library新增<var>$parse_exec_vars</var>属性。</li>
+      <li> <a href="general/profiling.html">Profiler</a>新增能开启/禁用个别路径的访问权限。</li>
+      <li>在<a href="libraries/file_uploading.html">File Uploading Class</a>增加了一个通配符配置选项<kbd>$config['allowed_types'] = '*'</kbd>。
+    </li>
+      <li>在XML-RPC Server library中增加了一个'object'配置变量,这样就可以指定对象寻找要调用的方法,而不是在$CI superobject中假设它。
+    </li>
+      <li>在单元测试运行的开头加入了“is_object”。</li>
+      <li>Table library将生成一个空字段,赋值为一个空字符串或NULL值。</li>
+      <li>在Table library新增了功能:新增字段,设置标记属性。</li>
+      <li>在<a href="libraries/parser.html">Parser Class</a>增加了一个<kbd>parse_string()</kbd>。</li>
+      <li>在<a href="general/profiling.html">Profiler</a>输出中曾加HTTP头和配置信息。</li>
+      <li>在<a href="libraries/user_agent.html">User Agent Class</a>中增加通过<kbd>browser()</kbd>对浏览器Chrome和Flock的检测。</li>
+      <li>在<a href="libraries/unit_testing.html">Unit Test Class</a>中现在有一个可选的“notes”设置,允许使用<kbd>$this-&gt;unit-&gt;set_test_items()</kbd>分离显示测试结果。
+    </li>
+      <li>在XMLRPC library增加了一个成员变量<kbd>$xss_clean</kbd>,使控制可以使用Security library的xss_clean()方法。
+    </li>
+      <li>在<a href="libraries/ftp.html">FTP library</a>增加了一个<kbd>download()</kbd>方法。</li>
+      <li>更改如果上传文件XSS检查失败,<kbd>do_xss_clean()</kbd>返回false。
+    </li>
+      <li>在Upload library添加stripslashes() 和trim(),对$_FILES的双引号规范输入。</li>
+      <li>在<kbd>$this-&gt;zip-&gt;read_dir('/path/to/directory', FALSE)</kbd>添加了第二个参数(bool)来消除创建ZIP档案时前面的空文件夹。好比一个压缩文件应该包含一个文件夹和所有内容。
+    </li>
+      <li>在Image Library添加使用GD库的调整尺寸和调整PNG透明度。</li>
+      <li>修改了Session类,如果没有在配置文件里设置“encryption key”的值,则不能使用Session。</li>
+      <li>在Session class增加了一个新的配置项<kbd>sess_expire_on_close</kbd>,允许浏览器窗口关闭时,会话自动到期。
+    </li>
+      <li>改进Encryption library的性能,当服务器上Mcrypt可用时。</li>
+      <li>改变了Encryption library默认的加密模式为CBC。</li>
+      <li>新增一个<kbd>encode_from_legacy()用来转换在CI1.x中加密的数据到2.0。详见<a href="installation/upgrade_200.html">升级说明</a> 。
+    </li>
+      <li>修改Form_Validation library,允许在<kbd>set_rules()</kbd>, <kbd>set_message()</kbd>()和<kbd>set_error_delimiters()</kbd>使用方法链接。
+    </li>
+      <li>修改Email Library允许使用方法链接。</li>
+      <li>在input class新增<kbd>request_headers()</kbd>, <kbd>get_request_header()</kbd> 和 <kbd>is_ajax_request()</kbd>。
+    </li>
+      <li class="reactor">修改<a href="libraries/user_agent.html">User agent library</a>,使<kbd>is_browser()</kbd>, <kbd>is_mobile()</kbd> 和 <kbd>is_robot()</kbd>可以选择检查特定的浏览器或移动设备。
+    </li>
+    </ul>
+  </li>
+  <li>数据库
+    <ul>
+      <li><a href="database/configuration.html">数据库配置</a>.</li>
+      <li>在<a href="database/configuration.html">database configuration</a>新增<kbd>autoinit</kbd>值。
+    </li>
+      <li>在<a href="database/configuration.html">database configuration</a>新增<kbd>stricton</kbd>值。
+    </li>
+      <li>在<a href="database/utilities.html">Database Utilities Class</a>新增<kbd>database_exists()</kbd>。
+    </li>
+      <li>db-&gt;version()发生语义变化,允许对数据库的异常列表和函数返回版本字符串,代替特殊格式的SQL查询。目前,这份名单只包括Oracle和SQLite。
+    </li>
+      <li>修正了一个当在有标识保护的特定表执行函数<kbd>field_data()</kbd>发生异常。
+    </li>
+      <li>修正了一个未定义的类变量在数据库驱动中引用的一个错误。</li>
+      <li>修改了有数据库错误时,标识出有问题的文件名和行。</li>
+      <li>删除了已过时的函数:orwhere, orlike, groupby, orhaving, orderby, getwhere。</li>
+      <li>从db utility drivers中删除过时的_drop_database() and _create_database()。</li>
+      <li>改进Postgres数据库驱动的dbforge create_table()。</li>
+    </ul>
+  </li>
+  <li>Helpers
+    <ul>
+      <li>Added <kbd>convert_accented_characters()</kbd> function to <a href="helpers/text_helper.html">text helper</a>.</li>
+      <li>Added accept-charset to the list of inserted attributes of <kbd>form_open()</kbd> in the <a href="helpers/form_helper.html">Form Helper</a>.</li>
+      <li>Deprecated the <kbd>dohash()</kbd> function in favour of <kbd>do_hash()</kbd> for naming consistency.</li>
+      <li>Non-backwards compatible change made to <kbd>get_dir_file_info()</kbd> in the <a href="helpers/file_helper.html">File Helper</a>.  No longer recurses
+        by default so as to encourage responsible use (this function can cause server performance issues when used without caution).</li>
+      <li>Modified the second parameter of <kbd>directory_map()</kbd> in the <a href="helpers/directory_helper.html">Directory Helper</a> to accept an integer to specify recursion depth.</li>
+      <li>Modified <kbd>delete_files()</kbd> in the <a href="helpers/file_helper.html">File Helper</a> to return FALSE on failure.</li>
+      <li>Added an optional second parameter to <kbd>byte_format()</kbd> in the <a href="helpers/number_helper.html">Number Helper</a> to allow for decimal precision.</li>
+      <li>Added alpha, and sha1 string types to <kbd>random_string()</kbd> in the <a href="helpers/string_helper.html">String Helper</a>.</li>
+      <li>Modified <kbd>prep_url()</kbd> so as to not prepend http:// if the supplied string already has a scheme.</li>
+      <li>Modified <kbd>get_file_info</kbd> in the file helper, changing filectime() to filemtime() for dates.</li>
+      <li>Modified <kbd>smiley_js()</kbd> to add optional third parameter to return only the javascript with no script tags.</li>
+      <li>The <kbd>img()</kbd> function of the <a href="helpers/html_helper.html">HTML helper</a> will now generate an empty string as an alt attribute if one is not provided.</li>
+      <li>If CSRF is enabled in the application config file, <kbd>form_open()</kbd> will automatically insert it as a hidden field.</li>
+      <li>Added <kbd>sanitize_filename()</kbd> into the <a href="helpers/security_helper.html">Security helper</a>.</li>
+      <li>Added <kbd>ellipsize()</kbd> to the <a href="helpers/text_helper.html">Text Helper</a></li>
+      <li>Added <kbd>elements()</kbd> to the <a href="helpers/array_helper.html">Array Helper</a></li>
+    </ul>
+  </li>
+  <li>Other Changes
+    <ul>
+      <li>Added an optional second parameter to <kbd>show_404()</kbd> to disable logging.</li>
+      <li>Updated loader to automatically apply the sub-class prefix as an option when loading classes.  Class names can be prefixed with the standard "CI_" or the same prefix as the subclass prefix, or no prefix at all.</li>
+      <li>Increased randomness with <kbd>is_really_writable()</kbd> to avoid file collisions when hundreds or thousands of requests occur at once.</li>
+      <li>Switched some DIR_WRITE_MODE constant uses to FILE_WRITE_MODE where files and not directories are being operated on.</li>
+      <li><kbd>get_mime_by_extension()</kbd> is now case insensitive.</li>
+      <li>Added "default" to the list <a href="general/reserved_names.html">Reserved Names</a>.</li>
+      <li>Added 'application/x-msdownload' for .exe files and ''application/x-gzip-compressed' for .tgz files to config/mimes.php.</li>
+      <li>Updated the output library to no longer compress output or send content-length headers if the server runs with zlib.output_compression enabled.</li>
+      <li>Eliminated a call to is_really_writable() on each request unless it is really needed (Output caching)</li>
+      <li>Documented <kbd>append_output()</kbd> in the <a href="libraries/output.html">Output Class</a>.</li>
+      <li>Documented a second argument in the <kbd>decode()</kbd> function for the <a href="libraries/encryption.html">Encryption Class</a>.</li>
+      <li>Documented db-&gt;close().</li>
+      <li>Updated the router to support a default route with any number of segments.</li>
+      <li>Moved _remove_invisible_characters() function from the <a href="libraries/security.html">Security Library</a> to <a href="general/common_functions.html">common functions.</a></li>
+      <li>Added audio/mpeg3 as a valid mime type for MP3.</li>
+    </ul>
+  </li>
+  </ul>
+
+<h3>Bug fixes for 2.0.0</h3>
+<ul>
+  <li class="reactor">Fixed a bug where you could not change the User-Agent when sending email.</li>
+  <li>Fixed a bug where the Output class would send incorrect cached output for controllers implementing their own <dfn>_output()</dfn> method.</li>
+  <li>Fixed a bug where a failed query would not have a saved query execution time causing errors in the Profiler</li>
+  <li>Fixed a bug that was writing log entries when multiple identical helpers and plugins were loaded.</li>
+  <li>Fixed assorted user guide typos or examples (#10693, #8951, #7825, #8660, #7883, #6771, #10656).</li>
+  <li>Fixed a language key in the profiler: "profiler_no_memory_usage" to "profiler_no_memory".</li>
+  <li>Fixed an error in the Zip library that didn't allow downloading on PHP 4 servers.</li>
+  <li>Fixed a bug in the Form Validation library where fields passed as rule parameters were not being translated (#9132)</li>
+  <li>Modified inflector helper to properly pluralize words that end in 'ch' or 'sh'</li>
+  <li>Fixed a bug in xss_clean() that was not allowing hyphens in query strings of submitted URLs.</li>
+  <li>Fixed bugs in get_dir_file_info() and get_file_info() in the File Helper with recursion, and file paths on Windows.</li>
+  <li>Fixed a bug where Active Record override parameter would not let you disable Active Record if it was enabled in your database config file.</li>
+  <li>Fixed a bug in reduce_double_slashes() in the String Helper to properly remove duplicate leading slashes (#7585)</li>
+  <li>Fixed a bug in values_parsing() of the XML-RPC library which prevented NULL variables typed as 'string' from being handled properly.</li>
+  <li>Fixed a bug were form_open_multipart() didn't accept string attribute arguments (#10930).</li>
+  <li>Fixed a bug (#10470) where <kdb>get_mime_by_extension()</kdb> was case sensitive.</li>
+  <li>Fixed a bug where some error messages for the SQLite and Oracle drivers would not display.</li>
+  <li>Fixed a bug where files created with the Zip Library would result in file creation dates of 1980.</li>
+  <li>Fixed a bug in the Session library that would result in PHP error when attempting to store values with objects.</li>
+  <li>Fixed a bug where extending the Controller class would result in a fatal PHP error.</li>
+  <li>Fixed a PHP Strict Standards Error in the index.php file.</li>
+  <li>Fixed a bug where getimagesize() was being needlessly checked on non-image files in is_allowed_type().</li>
+  <li>Fixed a bug in the Encryption library where an empty key was not triggering an error.</li>
+  <li>Fixed a bug in the Email library where CC and BCC recipients were not reset when using the clear() method (#109).</li>
+  <li>Fixed a bug in the URL Helper where prep_url() could cause a PHP error on PHP versions &lt; 5.1.2.</li>
+  <li>Added a log message in core/output if the cache directory config value was not found.</li>
+  <li>Fixed a bug where multiple libraries could not be loaded by passing an array to load-&gt;library()</li>
+  <li>Fixed a bug in the html helper where too much white space was rendered between the src and alt tags in the img() function.</li>
+  <li>Fixed a bug in the profilers _compile_queries() function.</li>
+  <li>Fixed a bug in the date helper where the DATE_ISO8601 variable was returning an incorrectly formatted date string.</li>
+</ul>
+
+<h2>版本 1.7.2</h2>
+<p>发布日期:2009年9月11日<br />
+Hg Tag: v1.7.2</p>
+
+<ul>
+ <li>Libraries
+  <ul>
+   <li>Added a new <a href="libraries/cart.html">Cart Class</a>.</li>
+   <li>Added the ability to pass $config['file_name'] for the <a href="libraries/file_uploading.html">File Uploading Class</a> and rename the uploaded file.</li>
+   <li>Changed order of listed user-agents so Safari would more accurately report itself. (#6844)</li>
+  </ul>
+ </li>
+ <li>Database
+  <ul>
+   <li>Switched from using gettype() in escape() to is_* methods, since future PHP versions might change its output.</li>
+   <li>Updated all database drivers to handle arrays in escape_str()</li>
+   <li>Added escape_like_str() method for escaping strings to be used in LIKE conditions</li>
+   <li>Updated Active Record to utilize the new LIKE escaping mechanism.</li>
+   <li>Added reconnect() method to DB drivers to try to keep alive / reestablish a connection after a long idle.</li>
+   <li>Modified MSSQL driver to use mssql_get_last_message() for error messages.</li>
+  </ul>
+ </li>
+ <li>Helpers
+  <ul>
+   <li>Added <kbd>form_multiselect()</kbd> to the <a href="helpers/form_helper.html">Form helper</a>.</li>
+   <li>Modified <kbd>form_hidden()</kbd> in the <a href="helpers/form_helper.html">Form helper</a> to accept multi-dimensional arrays.</li>
+   <li>Modified <kbd>form_prep()</kbd> in the <a href="helpers/form_helper.html">Form helper</a> to keep track of prepped fields to avoid multiple prep/mutation from subsequent calls which can occur when using Form Validation
+    and form helper functions to output form fields.</li>
+   <li>Modified <kbd>directory_map()</kbd> in the <a href="helpers/directory_helper.html">Directory helper</a> to allow the inclusion of hidden files, and to return FALSE on failure to read directory.</li>
+   <li>Modified the <a href="helpers/smiley_helper.html">Smiley helper</a> to work with multiple fields and insert the smiley at the last known cursor position.</li>
+  </ul>
+ </li>
+ <li>General
+  <ul>
+   <li>Compatible with PHP 5.3.0</li>
+   <li>Modified <a href="general/errors.html">show_error()</a> to allow sending of HTTP server response codes.</li>
+   <li>Modified <a href="general/errors.html">show_404()</a> to send 404 status code, removing non-CGI compatible header() statement from error_404.php template.</li>
+    <li>Added set_status_header() to the <a href="general/common_functions.html">Common functions</a> to allow use when the Output class is unavailable.</li>
+   <li>Added is_php() to <a href="general/common_functions.html">Common functions</a> to facilitate PHP version comparisons.</li>
+   <li>Added 2 CodeIgniter "cheatsheets" (thanks to DesignFellow.com for this contribution).</li>
+  </ul>
+ </li>
+</ul>
+
+<h3>1.7.2 修复的 BUG</h3>
+<ul>
+ <li>Fixed assorted user guide typos or examples (#6743, #7214, #7516, #7287, #7852, #8224, #8324, #8349).</li>
+ <li>Fixed a bug in the Form Validation library where multiple callbacks weren't working (#6110)</li>
+ <li>doctype helper default value was missing a "1".</li>
+ <li>Fixed a bug in the language class when outputting an error for an unfound file.</li>
+ <li>Fixed a bug in the Calendar library where the shortname was output for "May".</li>
+ <li>Fixed a bug with ORIG_PATH_INFO that was allowing URIs of just a slash through.</li>
+ <li>Fixed a fatal error in the Oracle and ODBC drivers (#6752)</li>
+ <li>Fixed a bug where xml_from_result() was checking for a nonexistent method.</li>
+ <li>Fixed a bug where Database Forge's add_column and modify_column were not looping through when sent multiple fields.</li>
+ <li>Fixed a bug where the File Helper was using '/' instead of the DIRECTORY_SEPARATOR constant.</li>
+ <li>Fixed a bug to prevent PHP errors when attempting to use sendmail on servers that have manually disabled the PHP popen() function.</li>
+ <li>Fixed a bug that would cause PHP errors in XML-RPC data if the PHP data type did not match the specified XML-RPC type.</li>
+ <li>Fixed a bug in the XML-RPC class with parsing dateTime.iso8601 data types.</li>
+ <li>Fixed a case sensitive string replacement in xss_clean()</li>
+ <li>Fixed a bug in form_textarea() where form data was not prepped correctly.</li>
+ <li>Fixed a bug in form_prep() causing it to not preserve entities in the user's original input when called back into a form element</li>
+ <li>Fixed a bug in _protect_identifiers() where the swap prefix ($swap_pre) was not being observed.</li>
+ <li>Fixed a bug where the 400 status header sent with the 'disallowed URI characters' was not compatible with CGI environments.</li>
+ <li>Fixed a bug in the typography class where heading tags could have paragraph tags inserted when using auto_typography().</li>
+</ul>
+
+<h2>Version 1.7.1</h2>
+<p>Release Date: February 10, 2009<br />
+Hg Tag: 1.7.1</p>
+
+<ul>
+ <li>Libraries
+  <ul>
+   <li>Fixed an arbitrary script execution security flaw (#6068) in the Form Validation library (thanks to hkk)</li>
+   <li>Changed default current page indicator in the Pagination library to use &lt;strong&gt; instead of &lt;b&gt;</li>
+   <li>A "HTTP/1.1 400 Bad Request" header is now sent when disallowed characters are encountered.</li>
+   <li>Added &lt;big&gt;, &lt;small&gt;, &lt;q&gt;, and &lt;tt&gt; to the Typography parser's inline elements.</li>
+   <li>Added more accurate error reporting for the Email library when using sendmail.</li>
+   <li>Removed a strict type check from the <kbd>rotate()</kbd> function of the <a href="libraries/image_lib.html">Image Manipulation Class</a>.</li>
+   <li>Added enhanced error checking in file saving in the Image library when using the GD lib.</li>
+   <li>Added an additional newline between multipart email headers and the MIME message text for better compatibility with a variety of MUAs.</li>
+   <li>Made modest improvements to efficiency and accuracy of explode_name() in the Image lib.</li>
+  </ul>
+ </li>
+ <li>Database
+  <ul>
+   <li>Added where_in to the list of expected arguments received by <kbd>delete()</kbd>.</li>
+  </ul>
+ </li>
+ <li>Helpers
+  <ul>
+   <li>Added the ability to have optgroups in <kbd>form_dropdown()</kbd> within the <a href="helpers/form_helper.html">form helper</a>.</li>
+   <li>Added a doctype() function to the <a href="helpers/html_helper.html">HTML helper</a>.</li>
+   <li>Added ability to force lowercase for <kbd>url_title()</kbd> in the <a href="helpers/url_helper.html">URL helper</a>.</li>
+   <li>Changed the default "type" of <kbd>form_button()</kbd> to "button" from "submit" in the <a href="helpers/form_helper.html">form helper</a>.</li>
+   <li>Changed redirect() in the URL helper to allow redirections to URLs outside of the CI site.</li>
+   <li>Updated get_cookie() to try to fetch the cookie using the global cookie prefix if the requested cookie name doesn't exist.</li>
+  </ul>
+ </li>
+ <li>Other Changes
+  <ul>
+   <li>Improved security in <kbd>xss_clean()</kbd> to help prevent attacks targeting Internet Explorer.</li>
+   <li>Added 'application/msexcel' to config/mimes.php for .xls files.</li>
+   <li>Added 'proxy_ips' config item to whitelist reverse proxy servers from which to trust the HTTP_X_FORWARDED_FOR header to
+    to determine the visitor's IP address.</li>
+   <li>Improved accuracy of Upload::is_allowed_filetype() for images (#6715)</li>
+  </ul>
+ </li>
+</ul>
+
+<h3>Bug fixes for 1.7.1</h3>
+<ul>
+ <li>Database
+  <ul>
+   <li>Fixed a bug when doing 'random' on order_by() (#5706).</li>
+   <li>Fixed a bug where adding a primary key through Forge could fail (#5731).</li>
+   <li>Fixed a bug when using DB cache on multiple databases (#5737).</li>
+   <li>Fixed a bug where TRUNCATE was not considered a "write" query (#6619).</li>
+   <li>Fixed a bug where csv_from_result() was checking for a nonexistent method.</li>
+   <li>Fixed a bug _protect_identifiers() where it was improperly removing all pipe symbols from items</li>
+  </ul>
+ </li>
+ <li>Fixed assorted user guide typos or examples (#5998, #6093, #6259, #6339, #6432, #6521).</li>
+ <li>Fixed a bug in the MySQLi driver when no port is specified</li>
+ <li>Fixed a bug (#5702), in which the field label was not being fetched properly, when "matching" one field to another.</li>
+ <li>Fixed a bug in which identifers were not being escaped properly when reserved characters were used.</li>
+ <li>Fixed a bug with the regular expression used to protect submitted paragraph tags in auto typography.</li>
+ <li>Fixed a bug where double dashes within tag attributes were being converted to em dash entities.</li>
+ <li>Fixed a bug where double spaces within tag attributes were being converted to non-breaking space entities.</li>
+ <li>Fixed some accuracy issues with curly quotes in Typography::format_characters()</li>
+ <li>Changed a few docblock comments to reflect actual return values.</li>
+ <li>Fixed a bug with high ascii characters in subject and from email headers.</li>
+ <li>Fixed a bug in xss_clean() where whitespace following a validated character entity would not be preserved.</li>
+ <li>Fixed a bug where HTML comments and &lt;pre&gt; tags were being parsed in Typography::auto_typography().</li>
+ <li>Fixed a bug with non-breaking space cleanup in Typography::auto_typography().</li>
+ <li>Fixed a bug in database escaping where a compound statement (ie: SUM()) wasn't handled correctly with database prefixes.</li>
+ <li>Fixed a bug when an opening quote is preceded by a paragraph tag and immediately followed by another tag.</li>
+ <li>Fixed a bug in the Text Helper affecting some locales where word_censor() would not work on words beginning or ending with an accented character.</li>
+ <li>Fixed a bug in the Text Helper character limiter where the provided limit intersects the last word of the string.</li>
+ <li>Fixed a bug (#6342) with plural() in the Inflection helper with words ending in "y".</li>
+ <li>Fixed bug (#6517) where Routed URI segments returned by URI::rsegment() method were incorrect for the default controller.</li>
+ <li>Fixed a bug (#6706) in the Security Helper where xss_clean() was using a deprecated second argument.</li>
+ <li>Fixed a bug in the URL helper url_title() function where trailing periods were allowed at the end of a URL.</li>
+ <li>Fixed a bug (#6669) in the Email class when CRLF's are used for the newline character with headers when used with the "mail" protocol.</li>
+ <li>Fixed a bug (#6500) where URI::A_filter_uri() was exit()ing an error instead of using show_error().</li>
+ <li>Fixed a bug (#6592) in the File Helper where get_dir_file_info() where recursion was not occurring properly.</li>
+ <li>Tweaked Typography::auto_typography() for some edge-cases.</li>
+</ul>
+
+
+<h2>Version 1.7</h2>
+<p>Release Date: October 23, 2008<br />
+Hg Tag: 1.7.0</p>
+
+<ul>
+ <li>Libraries
+  <ul>
+
+   <li>Added a new <a href="libraries/form_validation.html">Form Validation Class</a>.  It simplifies setting rules and field names, supports arrays as field names, allows groups of validation rules to be saved in a config file, and adds some helper functions for use in view files.  <strong>Please note that the old Validation class is now deprecated</strong>. We will leave it in the library folder for some time so that existing applications that use it will not break, but you are encouraged to migrate to the new version.</li>
+   <li>Updated the <a href="libraries/sessions.html">Sessions class</a> so that any custom data being saved gets stored to a database rather than the session cookie (assuming you are using a database to store session data), permitting much more data to be saved.</li>
+   <li>Added the ability to store libraries in subdirectories within either the main "libraries" or the local application "libraries" folder. Please see the <a href="libraries/loader.html">Loader class</a> for more info.</li>
+
+   <li>Added the ability to assign library objects to your own variable names when you use <kbd>$this-&gt;load-&gt;library()</kbd>. Please see the <a href="libraries/loader.html">Loader class</a> for more info.</li>
+   <li>Added controller class/method info to <a href="general/profiling.html">Profiler class</a> and support for multiple database connections.</li>
+   <li>Improved the "auto typography" feature and moved it out of the helper into its own <a href="libraries/typography.html">Typography Class</a>.</li>
+
+   <li>Improved performance and accuracy of <kbd>xss_clean()</kbd>, including reduction of false positives on image/file tests.</li>
+   <li>Improved <a href="libraries/parser.html">Parser class</a> to allow multiple calls to the parse() function.  The output of each is appended in the output.</li>
+   <li>Added <dfn>max_filename</dfn> option to set a file name length limit in the  <a href="libraries/file_uploading.html">File Upload Class</a>.</li>
+
+   <li>Added <dfn>set_status_header()</dfn> function to <a href="libraries/output.html">Output class</a>.</li>
+   <li>Modified <a href="libraries/pagination.html">Pagination</a> class to only output the "First" link when the link for page one would not be shown.</li>
+   <li>Added support for mb_strlen in the <a href="libraries/form_validation.html">Form Validation</a> class so that multi-byte languages will calculate string lengths properly.</li>
+
+  </ul>
+ </li>
+ <li>Database
+  <ul>
+   <li>Improved Active Record class to allow full path column and table names:  hostname.database.table.column.  Also improved the alias handling.</li>   
+   <li>Improved how table and column names are escaped and prefixed.  It now honors full path names when adding prefixes and escaping.</li>
+   <li>Added Active Record caching feature to "update" and "delete" functions.</li>
+   <li>Added removal of non-printing control characters in <kbd>escape_str()</kbd> of DB drivers that do not have native PHP escaping mechanisms (mssql, oci8, odbc), to avoid potential SQL errors, and possible sources of SQL injection.</li>
+
+   <li>Added port support to MySQL, MySQLi, and MS SQL database drivers.</li>
+   <li>Added driver name variable in each DB driver, based on bug report #4436.</li>
+  </ul>
+ </li>
+ <li>Helpers
+  <ul>
+   <li>Added several new "setting" functions to the <a href="helpers/form_helper.html">Form helper</a> that allow POST data to be retrieved and set into forms.  These are intended to be used on their own, or with the new <a href="libraries/form_validation.html">Form Validation Class</a>.</li>
+
+   <li>Added <kbd>current_url()</kbd> and uri_segments() to  <a href="helpers/url_helper.html">URL helper</a>.</li>
+   <li>Altered <kbd>auto_link()</kbd> in the <a href="helpers/url_helper.html">URL helper</a> so that email addresses with "+" included will be linked.</li>
+
+   <li>Added <kbd>meta()</kbd> function to  <a href="helpers/html_helper.html">HTML helper</a>.</li>
+   <li>Improved accuracy of calculations in <a href="helpers/number_helper.html">Number helper</a>.</li>
+   <li>Removed added newlines ("\n") from most form and html helper functions.</li>
+   <li>Tightened up validation in the <a href="helpers/date_helper.html">Date helper</a> function <kbd>human_to_unix()</kbd>, and eliminated the POSIX regex.</li>
+
+   <li>Updated <a href="helpers/date_helper.html">Date helper</a> to match the world's current time zones and offsets.</li>
+   <li>Modified url_title() in the <a href="helpers/url_helper.html">URL helper</a> to remove characters and digits that are part of
+    character entities, to allow dashes, underscores, and periods regardless of the $separator, and to allow uppercase characters.</li>
+   <li>Added support for arbitrary attributes in anchor_popup() of the <a href="helpers/url_helper.html">URL helper</a>.</li>
+
+  </ul>
+ </li>
+ <li>Other Changes
+  <ul>
+   <li>Added <a href="general/styleguide.html">PHP Style Guide</a> to docs.</li>
+   <li>Added sanitization in <kbd>xss_clean()</kbd> for a deprecated HTML tag that could be abused in user input in Internet Explorer.</li>
+
+   <li>Added a few openxml document mime types, and an additional mobile agent to mimes.php and user_agents.php respectively.</li>
+   <li>Added a file lock check during caching, before trying to write to the file.</li>
+   <li>Modified Cookie key cleaning to unset a few troublesome key names that can be present in certain environments, preventing CI from halting execution.</li>
+   <li>Changed the output of the profiler to use style attribute rather than clear, and added the id "codeigniter_profiler" to the container div.</li>
+  </ul>
+ </li>
+</ul>
+
+<h3>Bug fixes for 1.7.0</h3>
+<ul>
+ <li>Fixed bug in <kbd>xss_clean()</kbd> that could remove some desirable tag attributes.</li>
+ <li>Fixed assorted user guide typos or examples (#4807, #4812, #4840, #4862, #4864, #4899, #4930, #5006, #5071, #5158, #5229, #5254, #5351).</li>
+ <li>Fixed an edit from 1.6.3 that made the $robots array in user_agents.php go poof.</li>
+ <li>Fixed a bug in the <a href="libraries/email.html">Email library</a> with quoted-printable encoding improperly encoding space and tab characters.</li>
+
+ <li>Modified XSS sanitization to no longer add semicolons after &amp;[single letter], such as in M&amp;M's, B&amp;B, etc.</li>
+ <li>Modified XSS sanitization to no longer strip XHTML image tags of closing slashes.</li>
+ <li>Fixed a bug in the Session class when database sessions are used where upon session update all userdata would be errantly written to the session cookie.</li>
+ <li>Fixed a bug (#4536) in backups with the MySQL driver where some legacy code was causing certain characters to be double escaped.</li>
+ <li>Fixed a routing bug (#4661) that occurred when the default route pointed to a subfolder.</li>
+
+ <li>Fixed the spelling of "Dhaka" in the <kbd>timezone_menu()</kbd> function of the <a href="helpers/date_helper.html">Date helper.</a></li>
+ <li>Fixed the spelling of "raspberry" in config/smileys.php.</li>
+ <li>Fixed incorrect parenthesis in <kbd>form_open()</kbd> function (#5135).</li>
+ <li>Fixed a bug that was ignoring case when comparing controller methods (#4560).</li>
+
+ <li>Fixed a bug (#4615) that was not setting SMTP authorization settings when using the initialize function.</li>
+ <li>Fixed a bug in <kbd>highlight_code()</kbd> in the <a href="helpers/text_helper.html">Text helper</a> that would leave a stray &lt;/span&gt; in certain cases.</li>
+ <li>Fixed Oracle bug (#3306) that was preventing multiple queries in one action.</li>
+
+ <li>Fixed ODBC bug that was ignoring connection params due to its use of a constructor.</li>
+ <li>Fixed a DB driver bug with num_rows() that would cause an error with the Oracle driver.</li>
+ <li>Fixed MS SQL bug (#4915).  Added brackets around database name in MS SQL driver when selecting the database, in the event that reserved characters are used in the name.</li>
+ <li>Fixed a DB caching bug (4718) in which the path was incorrect when no URI segments were present.</li>
+ <li>Fixed Image_lib class bug #4562.  A path was not defined for NetPBM.</li>
+ <li>Fixed Image_lib class bug #4532.  When cropping an image with identical height/width settings on output, a copy is made.</li>
+
+ <li>Fixed DB_driver bug (4900), in which a database error was not being logged correctly.</li>
+ <li>Fixed DB backup bug in which field names were not being escaped.</li>
+ <li>Fixed a DB Active Record caching bug in which multiple calls to cached data were not being honored.</li>
+ <li>Fixed a bug in the Session class that was disallowing slashes in the serialized array.</li>
+ <li>Fixed a Form Validation bug in which the "isset" error message was being trigged by the "required" rule.</li>
+ <li>Fixed a spelling error in a Loader error message.</li>
+
+ <li>Fixed a bug (5050) with IP validation with empty segments.</li>
+ <li>Fixed a bug in which the parser was being greedy if multiple identical sets of tags were encountered.</li>
+</ul>
+
+
+<h2>版本 1.6.3</h2>
+<p>发布日期: 2008年6月26日<br />
+Hg Tag: v1.6.3</p>
+
+<p>版本1.6.3是一个安全和维护的版本,建议所有用户使用。</p>
+<ul>
+ <li>Database
+  <ul>
+   <li>Modified MySQL/MySQLi Forge class to give explicit names to keys</li>
+   <li>Added ability to set multiple column non-primary keys to the <a href="database/forge.html">Forge class</a></li>
+   <li>Added ability to set additional database config values in <a href="database/connecting.html">DSN connections</a> via the query string.</li>
+
+   </ul>
+ </li>
+ <li>Libraries
+  <ul>
+   <li>Set the mime type check in the <a href="libraries/file_uploading.html">Upload class</a> to reference the global mimes variable.</li>
+   <li>Added support for query strings to the <a href="libraries/pagination.html">Pagination class</a>, automatically detected or explicitly declared.</li>
+
+   <li>Added <kbd>get_post()</kbd> to the <a href="libraries/input.html">Input class</a>.</li>
+   <li>Documented <kbd>get()</kbd> in the <a href="libraries/input.html">Input class</a>.</li>
+   <li>Added the ability to automatically output language items as form labels in the <a href="libraries/language.html">Language class</a>.</li>
+
+  </ul>
+ </li>
+ <li>Helpers
+  <ul>
+   <li>Added a <a href="helpers/language_helper.html">Language helper</a>.</li>
+   <li>Added a <a href="helpers/number_helper.html">Number helper</a>.</li>
+   <li><a href="helpers/form_helper.html">Form helper</a> refactored to allow <kbd>form_open()</kbd> and <kbd>form_fieldset()</kbd> to accept arrays or strings as arguments.</li>
+  </ul>
+ </li>
+ <li>Other changes
+  <ul>
+
+   <li>Improved security in <kbd>xss_clean()</kbd>.</li>
+   <li>Removed an unused Router reference in <kbd>_display_cache()</kbd>.</li>
+   <li>Added ability to <a href="libraries/input.html">use xss_clean() to test images</a> for XSS, useful for upload security.</li>
+   <li>Considerably expanded list of mobile user-agents in config/user_agents.php.</li>
+
+   <li>Charset information in the userguide has been moved above title for internationalization purposes (#4614).</li>
+   <li>Added &quot;Using Associative Arrays In a Request Parameter&quot; example to the <a href="libraries/xmlrpc.html">XMLRPC userguide page</a>.</li>
+   <li>Removed maxlength and size as automatically added attributes of form_input() in the <a href="helpers/form_helper.html">form helper</a>.</li>
+   <li>Documented the language file use of <kbd>byte_format()</kbd> in the <a href="helpers/number_helper.html">number helper</a>.</li>
+  </ul>
+
+ </li>
+</ul>
+
+
+<h3>Bug fixes for 1.6.3</h3>
+
+<ul>
+ <li>Added a language key for valid_emails in validation_lang.php.</li>
+ <li>Amended fixes for bug (#3419) with parsing DSN database connections.</li>
+ <li>Moved the <kbd>_has_operators()</kbd> function (#4535) into DB_driver from DB_active_rec.</li>
+
+ <li>Fixed a syntax error in upload_lang.php.</li>
+ <li>Fixed a bug (#4542) with a regular expression in the Image library.</li>
+ <li>Fixed a bug (#4561) where <kbd>orhaving()</kbd> wasn't properly passing values.</li>
+ <li>Removed some unused variables from the code (#4563).</li>
+ <li>Fixed a bug where <kbd>having()</kbd> was not adding an = into the statement (#4568).</li>
+
+ <li>Fixed assorted user guide typos or examples (#4574, #4706).</li>
+ <li>Added quoted-printable headers to Email class when the multi-part override is used.</li>
+ <li>Fixed a double opening &lt;p&gt; tag in the index pages of each system directory.</li>
+ </ul>
+
+<h2>Version 1.6.2</h2>
+<p>Release Date: May 13, 2008<br />
+Hg Tag: 1.6.2</p>
+<ul>
+ <li>Active Record
+  <ul>
+   <li>Added the ability to prevent escaping in <kbd>having()</kbd> clauses.</li>
+   <li>Added <kbd>rename_table()</kbd> into <a href="database/forge.html">DBForge</a>.</li>
+   <li>Fixed a bug that wasn't allowing escaping to be turned off if the value of a query was NULL.</li>
+   <li>DB Forge is now assigned to any models that exist after loading (#3457).</li>
+   </ul>
+ </li>
+ <li>Database
+  <ul>
+   <li>Added <a href="database/transactions.html">Strict Mode</a> to database transactions.</li>
+   <li>Escape behaviour in where() clauses has changed; values in those with the &quot;FALSE&quot; argument are no longer escaped (ie: quoted).</li>
+  </ul>
+ </li>
+ <li>Config
+  <ul>
+   <li>Added 'application/vnd.ms-powerpoint' to list of mime types.</li>
+   <li>Added 'audio/mpg' to list of mime types.</li>
+   <li>Added new user-modifiable file constants.php containing file mode and fopen constants.</li>
+   <li>Added the ability to set CRLF settings via config in the <a href="libraries/email.html">Email</a> class.</li>
+  </ul>
+ </li>
+ <li>Libraries
+  <ul>
+   <li>Added increased security for filename handling in the Upload library.</li>
+   <li>Added increased security for sessions for client-side data tampering.</li>
+   <li>The MySQLi forge class is now in sync with MySQL forge. </li>
+   <li>Added the ability to set CRLF settings via config in the <a href="libraries/email.html">Email</a> class.</li>
+   <li><a href="libraries/unit_testing.html">Unit Testing</a> results are now colour coded, and a change was made to the default template of results.</li>
+   <li>Added a valid_emails rule to the Validation class.</li>
+   <li>The <a href="libraries/zip.html">Zip class</a> now exits within <kbd>download()</kbd>.</li>
+   <li>The <a href="libraries/zip.html">Zip class</a> has undergone a substantial re-write for speed and clarity (thanks stanleyxu for the hard work and code contribution in bug report #3425!)</li>
+  </ul>
+ </li>
+ <li>Helpers
+  <ul>
+   <li>Added a <a href="index.html">Compatibility Helper</a> for using some common PHP 5 functions safely in applications that might run on PHP 4 servers (thanks Seppo for the hard work and code contribution!)</li>
+   <li>Added <kbd>form_button()</kbd> in the <a href="helpers/form_helper.html">Form helper</a>.</li>
+   <li>Changed the <kbd>radio()</kbd> and <kbd>checkbox()</kbd> functions to default to not checked by default.</li>
+   <li>Added the ability to include an optional HTTP Response Code in the <kbd>redirect()</kbd> function of the <a href="helpers/url_helper.html">URL Helper</a>.</li>
+   <li>Modified <kbd>img()</kbd> in the <a href="helpers/html_helper.html">HTML Helper</a> to remove an unneeded space (#4208).</li>
+   <li>Modified <kbd>anchor()</kbd> in the <a href="helpers/url_helper.html">URL helper</a> to no longer add a default title= attribute (#4209).</li>
+   <li>The <a href="helpers/download_helper.html">Download helper</a> now exits within <kbd>force_download()</kbd>.</li>
+   <li>Added <kbd>get_dir_file_info()</kbd>, <kbd>get_file_info()</kbd>, and <kbd>get_mime_by_extension()</kbd> to the <a href="helpers/file_helper.html">File Helper</a>.</li>
+   <li>Added <kbd>symbolic_permissions()</kbd> and <kbd>octal_permissions()</kbd> to the <a href="helpers/file_helper.html">File helper</a>.</li>
+  </ul>
+ </li>
+ <li>Plugins
+  <ul>
+   <li>Modified captcha generation to first look for the function imagecreatetruecolor, and fallback to imagecreate if it isn't available (#4226).</li>
+  </ul>
+ </li>
+ <li>Other
+  Changes
+  <ul>
+   <li>Added ability for <a href="libraries/input.html">xss_clean()</a> to accept arrays.</li>
+   <li>Removed closing PHP tags from all PHP files to avoid accidental output and potential 'cannot modify headers' errors.</li>
+   <li>Removed &quot;scripts&quot; from the auto-load search path. Scripts were deprecated
+    in Version 1.4.1 (September 21, 2006). If you still need to use them for legacy reasons, they must now be manually loaded in each Controller.</li>
+   <li>Added a <a href="general/reserved_names.html">Reserved Names</a> page to the userguide, and migrated reserved controller names into it.</li>
+   <li>Added a <a href="general/common_functions.html">Common Functions</a> page to the userguide for globally available functions.</li>
+   <li>Improved security and performance of xss_clean().</li>
+  </ul>
+ </li>
+ </ul>
+
+<h3>Bugfixes for 1.6.2</h3>
+<ul>
+ <li>Fixed a bug where SET queries were not being handled as "write" queries.</li>
+ <li>Fixed a bug (#3191) with ORIG_PATH_INFO URI parsing.</li>
+ <li>Fixed a bug in DB Forge, when inserting an id field (#3456).</li>
+ <li>Fixed a bug in the table library that could cause identically constructed rows to be dropped (#3459).</li>
+ <li>Fixed DB Driver and MySQLi result driver checking for resources instead of objects (#3461).</li>
+ <li>Fixed an AR_caching error where it wasn't tracking table aliases (#3463).</li>
+ <li>Fixed a bug in AR compiling, where select statements with arguments got incorrectly escaped (#3478).</li>
+ <li>Fixed an incorrect documentation of $this-&gt;load-&gt;language (#3520).</li>
+ <li>Fixed bugs (#3523, #4350) in get_filenames() with recursion and problems with Windows when $include_path is used.</li>
+ <li>Fixed a bug (#4153) in the XML-RPC class preventing dateTime.iso8601 from being used.</li>
+ <li>Fixed an AR bug with or_where_not_in() (#4171).</li>
+ <li>Fixed a bug with <a href="libraries/input.html">xss_clean()</a> that would add semicolons to GET URI variable strings.</li>
+ <li>Fixed a bug (#4206) in the Directory Helper where the directory resource was not being closed, and minor improvements.</li>
+ <li>Fixed a bug in the FTP library where delete_dir() was not working recursively (#4215).</li>
+ <li>Fixed a Validation bug when set_rules() is used with a non-array field name and rule (#4220).</li>
+ <li>Fixed a bug (#4223) where DB caching would not work for returned DB objects or multiple DB connections.</li>
+ <li>Fixed a bug in the Upload library that might output the same error twice (#4390).</li>
+ <li>Fixed an AR bug when joining with a table alias and table prefix (#4400).</li>
+ <li>Fixed a bug in the DB class testing the $params argument.</li>
+ <li>Fixed a bug in the Table library where the integer 0 in cell data would be displayed as a blank cell.</li>
+ <li>Fixed a bug in <kbd>link_tag()</kbd> of the <a href="helpers/url_helper.html">URL helper</a> where a key was passed instead of a value.</li>
+ <li>Fixed a bug in DB_result::row() that prevented it from returning individual fields with MySQL NULL values.</li>
+ <li>Fixed a bug where SMTP emails were not having dot transformation performed on lines that begin with a dot.</li>
+ <li>Fixed a bug in display_error() in the DB driver that was instantiating new Language and Exception objects, and not using the error heading.</li>
+ <li>Fixed a bug (#4413) where a URI containing slashes only e.g. 'http://example.com/index.php?//' would result in PHP errors</li>
+ <li>Fixed an array to string conversion error in the Validation library (#4425)</li>
+ <li>Fixed bug (#4451, #4299, #4339) where failed transactions will not rollback when debug mode is enabled.</li>
+ <li>Fixed a bug (#4506) with overlay_watermark() in the Image library preventing support for PNG-24s with alpha transparency</li>
+ <li>Fixed assorted user guide typos (#3453, #4364, #4379, #4399, #4408, #4412, #4448, #4488).</li>
+ </ul>
+
+<h2>Version 1.6.1</h2>
+<p>Release Date: February 12, 2008<br />
+Hg Tag: 1.6.1</p>
+<ul>
+ <li>Active Record
+  <ul>
+   <li>Added <a href="database/active_record.html#caching">Active Record Caching</a>.</li>
+   <li>Made Active Record fully database-prefix aware.</li>
+  </ul>
+ </li>
+ <li>Database drivers
+  <ul>
+   <li>Added support for setting client character set and collation for MySQLi.</li>
+  </ul>
+ </li>
+ <li>Core Changes
+  <ul>
+   <li>Modified <kbd>xss_clean()</kbd> to be more intelligent with its handling of URL encoded strings.</li>
+   <li>Added $_SERVER, $_FILES, $_ENV, and $_SESSION to sanitization of globals.</li>
+   <li>Added a <a href="helpers/path_helper.html">Path Helper</a>.</li>
+   <li>Simplified <kbd>_reindex_segments()</kbd> in the URI class.</li>
+   <li>Escaped the '-' in the default 'permitted_uri_chars' config item, to prevent errors if developers just try to add additional characters to the end of the default expression.</li>
+   <li>Modified method calling to controllers to show a 404 when a private or protected method is accessed via a URL.</li>
+   <li>Modified framework initiated 404s to log the controller and method for invalid requests.</li>
+  </ul>
+ </li>
+ <li>Helpers
+  <ul>
+   <li>Modified <kbd>get_filenames()</kbd> in the File Helper to return FALSE if the $source_dir is not readable.</li>
+  </ul>
+ </li>
+</ul>
+
+
+<h3>Bugfixes for 1.6.1</h3>
+<ul>
+ <li>Deprecated is_numeric as a validation rule. Use of numeric and integer are preferred.</li>
+ <li>Fixed bug (#3379) in DBForge with SQLite for table creation.</li>
+ <li>Made Active Record fully database prefix aware (#3384).</li>
+ <li>Fixed a bug where DBForge was outputting invalid SQL in Postgres by adding brackets around the tables in FROM.</li>
+ <li>Changed the behaviour of Active Record's update() to make the WHERE clause optional (#3395).</li>
+ <li>Fixed a bug (#3396) where certain POST variables would cause a PHP warning.</li>
+ <li>Fixed a bug in query binding (#3402).</li>
+ <li>Changed order of SQL keywords in the Profiler $highlight array so OR would not be highlighted before ORDER BY.</li>
+ <li>Fixed a bug (#3404) where the MySQLi driver was testing if $this-&gt;conn_id was a resource instead of an object.</li>
+ <li>Fixed a bug (#3419) connecting to a database via a DSN string.</li>
+ <li>Fixed a bug (#3445) where the routed segment array was not re-indexed to begin with 1 when the default controller is used.</li>
+ <li>Fixed assorted user guide typos.</li>
+</ul>
+
+
+
+<h2>Version 1.6.0</h2>
+<p>Release Date: January 30, 2008 </p>
+<ul>
+ <li>DBForge
+  <ul>
+   <li>Added <a href="database/forge.html">DBForge</a> to the database tools.</li>
+   <li>Moved <kbd>create_database()</kbd> and <kbd>drop_database()</kbd> into <a href="database/forge.html">DBForge</a>.</li>
+   <li>Added <kbd>add_field()</kbd>, <kbd>add_key()</kbd>, <kbd>create_table()</kbd>, <kbd>drop_table()</kbd>, <kbd>add_column()</kbd>, <kbd>drop_column()</kbd>, <kbd>modify_column()</kbd> into <a href="database/forge.html">DBForge</a>.</li>
+  </ul>
+ </li>
+
+ <li>Active Record
+  <ul>
+   <li>Added <kbd>protect_identifiers()</kbd> in <a href="database/active_record.html">Active Record</a>.</li>
+   <li>All AR queries are backticked if appropriate to the database.</li>
+   <li>Added <kbd>where_in()</kbd>, <kbd>or_where_in()</kbd>, <kbd>where_not_in()</kbd>,  <kbd>or_where_not_in()</kbd>, <kbd>not_like()</kbd> and <kbd>or_not_like()</kbd> to <a href="database/active_record.html">Active Record</a>.</li>
+   <li>Added support for <kbd>limit()</kbd>  into <kbd>update()</kbd> and <kbd>delete()</kbd> statements in  <a href="database/active_record.html">Active Record</a>.</li>
+   <li>Added <kbd>empty_table()</kbd> and <kbd>truncate_table()</kbd> to <a href="database/active_record.html">Active Record</a>.</li>
+   <li>Added the ability to pass an array of tables to the <kbd>delete()</kbd> statement in <a href="database/active_record.html">Active Record</a>.</li>
+   <li>Added <kbd>count_all_results()</kbd> function to <a href="database/active_record.html">Active Record</a>.</li>
+   <li>Added <kbd>select_max()</kbd>, <kbd>select_min()</kbd>, <kbd>select_avg()</kbd> and <kbd>select_sum()</kbd> to <a href="database/active_record.html">Active Record</a>.</li>
+   <li>Added the ability to use aliases with joins in <a href="database/active_record.html">Active Record</a>.</li>
+   <li>Added a third parameter to Active Record's <kbd>like()</kbd> clause to control where the wildcard goes. </li>
+   <li>Added a third parameter to <kbd>set()</kbd> in <a href="database/active_record.html">Active Record</a> that withholds escaping data.</li>
+   <li>Changed the behaviour of variables submitted to the where() clause with no values to auto set &quot;IS NULL&quot;</li>
+  </ul>
+ </li>
+ 
+ <li>Other Database Related
+  <ul>
+   <li>MySQL driver now requires MySQL 4.1+</li>
+   <li>Added $this-&gt;DB-&gt;save_queries variable to DB driver, enabling queries to get saved or not. Previously they were always saved.</li>
+   <li>Added $this-&gt;db-&gt;dbprefix() to manually add database prefixes.</li>
+   <li>Added 'random' as an <kbd>order_by()</kbd> option , and removed &quot;rand()&quot; as a listed option as it was MySQL only.</li>
+   <li>Added a check for NULL fields in the MySQL database backup utility.</li>
+   <li>Added &quot;constrain_by_prefix&quot; parameter to db-&gt;list_table() function.  If set to TRUE it will limit the result to only table names with the current prefix.</li>
+   <li>Deprecated from Active Record; <kbd>getwhere()</kbd> for <kbd>get_where()</kbd>; <kbd>groupby()</kbd> for <kbd>group_by()</kbd>; <kbd>havingor()</kbd> for <kbd>having_or()</kbd>; <kbd>orderby()</kbd> for <kbd>order_by</kbd>; <kbd>orwhere()</kbd> for <kbd>or_where()</kbd>; and <kbd>orlike()</kbd> for <kbd>or_like()</kbd>.</li>
+   <li>Modified <kbd>csv_from_result()</kbd> to output CSV data more in the spirit of basic rules of RFC 4180.</li>
+   <li>Added 'char_set' and 'dbcollat' database configuration settings, to explicitly set the client communication properly.</li>
+   <li>Removed 'active_r' configuration setting and replaced with a global $active_record setting, which is more
+    in harmony with the global nature of the behavior (#1834).</li>
+  </ul>
+ </li>
+ 
+ <li>Core changes
+  <ul>
+   <li>Added ability to load multiple views, whose content will be appended to the output in the order loaded.</li>
+   <li>Added the ability to <a href="general/autoloader.html">auto-load</a> <a href="general/models.html">Models</a>.</li>
+   <li>Reorganized the URI and Routes classes for better clarity.</li>
+   <li>Added Compat.php to allow function overrides for older versions of PHP or PHP environments missing certain extensions / libraries</li>   
+   <li>Added memory usage, GET, URI string data, and individual query execution time to Profiler output.</li>
+   <li>Deprecated Scaffolding.</li>
+   <li>Added is_really_writable() to Common.php to provide a cross-platform reliable method of testing file/folder writability.</li>
+  </ul>
+ </li>
+ 
+ <li>Libraries
+  <ul>
+   <li>Changed the load protocol of Models to allow for extension.</li>
+   <li>Strengthened the Encryption library to help protect against man in the middle attacks when MCRYPT_MODE_CBC mode is used.</li>
+   <li>Added Flashdata variables, session_id regeneration and configurable session update times to the <a href="libraries/sessions.html">Session class.</a></li>
+   <li>Removed 'last_visit' from the Session class.</li>
+   <li>Added a language entry for valid_ip validation error.</li>
+   <li>Modified prep_for_form() in the Validation class to accept arrays, adding support for POST array validation (via callbacks only)</li>
+   <li>Added an &quot;integer&quot; rule into the Validation library.</li>
+   <li>Added valid_base64() to the Validation library.</li>
+   <li>Documented clear() in the <a href="#">Image Processing</a> library.</li>
+   <li>Changed the behaviour of custom callbacks so that they no longer trigger the &quot;required&quot; rule. </li>
+   <li>Modified Upload class $_FILES error messages to be more precise.</li>
+   <li>Moved the safe mode and auth checks for the Email library into the constructor. </li>
+   <li>Modified variable names in _ci_load() method of Loader class to avoid conflicts with view variables.</li>
+   <li>Added a few additional mime type variations for CSV.</li>
+   <li>Enabled the 'system' methods for the XML-RPC Server library, except for 'system.multicall' which is still disabled.</li>
+  </ul>
+ </li>
+ 
+ <li>Helpers &amp; Plugins
+  <ul>
+   <li>Added link_tag() to the <a href="helpers/html_helper.html">HTML helper.</a></li>
+   <li>Added img() to the <a href="helpers/html_helper.html">HTML helper.</a></li>
+   <li>Added ability to <a href="general/helpers.html">"extend" Helpers</a>.</li>
+   <li>Added an <a href="helpers/email_helper.html">email helper</a> into core helpers.</li>
+   <li>Added <kbd>strip_quotes()</kbd> function to <a href="helpers/string_helper.html">string helper</a>.</li>
+   <li>Added <kbd>reduce_multiples()</kbd> function to <a href="helpers/string_helper.html">string helper</a>.</li>
+   <li>Added <kbd>quotes_to_entities()</kbd> function to <a href="helpers/string_helper.html">string helper</a>.</li>
+   <li>Added <kbd>form_fieldset()</kbd>, <kbd>form_fieldset_close()</kbd>, <kbd>form_label()</kbd>, and <kbd>form_reset()</kbd> function to <a href="helpers/form_helper.html">form helper</a>.</li>
+   <li>Added support for external urls in <kbd>form_open()</kbd>.</li>
+   <li>Removed support for db_backup in MySQLi due to incompatible functions.</li>
+   <li>Javascript Calendar plugin now uses the months and days from the calendar language file, instead of hard-coded values, internationalizing it.</li>
+  </ul>
+ </li>
+ 
+   
+ <li>Documentation Changes
+  <ul>
+   <li>Added <a href="index.html">Writing Documentation</a> section for the community to use in writing their own documentation.</li>
+   <li>Added titles to all user manual pages.</li>
+   <li>Added attributes into &lt;html&gt; of userguide for valid html.</li>
+   <li>Added <a href="#">Zip Encoding Class</a> to the table of contents of the userguide.</li>
+   <li>Moved part of the userguide menu javascript to an external file.</li>
+   <li>Documented <kbd>distinct()</kbd> in <a href="database/active_record.html">Active Record</a>. </li>
+   <li>Documented the <kbd>timezones()</kbd> function in the <a href="helpers/date_helper.html">Date Helper</a>.</li>
+   <li>Documented unset_userdata in the <a href="libraries/sessions.html">Session class</a>.</li>
+   <li>Documented 2 config options to the <a href="database/configuration.html">Database configuration</a> page.</li>
+  </ul>
+ </li>
+</ul>
+
+<h3>Bug fixes for Version 1.6.0</h3>
+ 
+<ul>
+ <li>Fixed a bug (#1813) preventing using $CI-&gt;db in the same application with returned database objects.</li>
+ <li>Fixed a bug (#1842) where the $this-&gt;uri-&gt;rsegments array would not include the 'index' method if routed to the controller without an implicit method.</li>
+ <li>Fixed a bug (#1872) where word_limiter() was not retaining whitespace.</li>
+ <li>Fixed a bug (#1890) in csv_from_result() where content that included the delimiter would break the file.</li>
+ <li>Fixed a bug (#2542)in the clean_email() method of the Email class to allow for non-numeric / non-sequential array keys.</li>
+ <li>Fixed a bug (#2545) in <kbd>_html_entity_decode_callback()</kbd> when 'global_xss_filtering' is enabled.</li>
+ <li>Fixed a bug (#2668) in the <a href="libraries/parser.html">parser class</a> where numeric data was ignored.</li>
+ <li>Fixed a bug (#2679) where the &quot;previous&quot; pagination link would get drawn on the first page.</li>
+ <li>Fixed a bug (#2702) in _object_to_array that broke some types of inserts and updates.</li>
+ <li>Fixed a bug (#2732) in the SQLite driver for PHP 4.</li>
+ <li>Fixed a bug (#2754) in Pagination to scan for non-positive num_links.</li>
+ <li>Fixed a bug (#2762) in the <a href="libraries/sessions.html">Session library</a> where user agent matching would fail on user agents ending with a space. </li>
+ <li>Fixed a bug (#2784) $field_names[] vs $Ffield_names[] in postgres and sqlite drivers.</li>
+ <li>Fixed a bug (#2810) in the typography helper causing extraneous paragraph tags when string contains tags.</li>
+ <li>Fixed a bug (#2849) where arguments passed to a subfolder controller method would be incorrectly shifted, dropping the 3rd segment value.</li>
+ <li>Fixed a bug (#2858) which referenced a wrong variable in the Image class.</li>
+ <li>Fixed a bug (#2875)when loading plugin files as _plugin. and not _pi.</li>
+ <li>Fixed a bug (#2912) in <kbd>get_filenames()</kbd> in the <a href="helpers/file_helper.html">File Helper </a>where the array wasn't cleared after each call.</li>
+ <li>Fixed a bug (#2974) in <kbd>highlight_phrase()</kbd> that caused an error with slashes.</li>
+ <li>Fixed a bug (#3003) in the Encryption Library to support modes other than MCRYPT_MODE_ECB</li>
+ <li>Fixed a bug (#3015) in the <a href="libraries/user_agent.html">User Agent library</a> where more then 2 languages where not reported with languages().</li>
+ <li>Fixed a bug (#3017) in the <a href="libraries/email.html">Email</a> library where some timezones were calculated incorrectly. </li>
+ <li>Fixed a bug (#3024) in which master_dim wasn't getting reset by clear() in the Image library.</li>
+ <li>Fixed a bug (#3156) in Text Helper highlight_code() causing PHP tags to be handled incorrectly.</li>
+ <li>Fixed a bug (#3166) that prevented num_rows from working in Oracle.</li>
+ <li>Fixed a bug (#3175) preventing certain libraries from working properly when autoloaded in PHP 4.</li>
+ <li>Fixed a bug (#3267) in the Typography Helper where unordered list was listed &quot;un.</li>
+ <li>Fixed a bug (#3268) where the Router could leave '/' as the path.</li>
+ <li>Fixed a bug (#3279) where the Email class was sending the wrong Content-Transfer-Encoding for some character sets.</li>
+ <li>Fixed a bug (#3284) where the rsegment array would not be set properly if the requested URI contained more segments than the routed URI.</li>
+ <li>Removed extraneous load of $CFG in _display_cache() of the Output class (#3285).</li>
+ <li>Removed an extraneous call to loading models (#3286).</li>
+ <li>Fixed a bug (#3310) with sanitization of globals in the Input class that could unset CI's global variables.</li>
+ <li>Fixed a bug (#3314) which would cause the top level path to be deleted in delete_files() of the File helper.</li>
+ <li>Fixed a bug (#3328) where the smiley helper might return an undefined variable.</li>
+ <li>Fixed a bug (#3330) in the FTP class where a comparison wasn't getting made.</li>
+ <li>Removed an unused parameter from Profiler (#3332).</li>
+ <li>Fixed a bug in database driver where num_rows property wasn't getting updated.</li>
+ <li>Fixed a bug in the <a href="libraries/file_uploading.html">upload library</a> when allowed_files wasn't defined.</li>
+ <li>Fixed a bug in <kbd>word_wrap()</kbd> of the Text Helper that incorrectly referenced an object. </li>
+ <li>Fixed a bug in Validation where <kbd>valid_ip()</kbd> wasn't called properly.</li>
+ <li>Fixed a bug in Validation where individual error messages for checkboxes wasn't supported.</li>
+ <li>Fixed a bug in captcha calling an invalid PHP function.</li>
+ <li>Fixed a bug in the cookie helper "set_cookie" function.  It was not honoring the config settings.</li>
+ <li>Fixed a bug that was making validation callbacks required even when not set as such.</li>
+ <li>Fixed a bug in the XML-RPC library so if a type is specified, a more intelligent decision is made as to the default type.</li>
+ <li>Fixed an example of comma-separated emails in the email library documentation.</li>
+ <li>Fixed an example in the Calendar library for Showing Next/Previous Month Links.</li>
+ <li>Fixed a typo in the database language file.</li>
+ <li>Fixed a typo in the image language file &quot;suppor&quot; to &quot;support&quot;.</li>
+ <li>Fixed an example for XML RPC.</li>
+ <li>Fixed an example of <kbd>accept_charset()</kbd> in the <a href="libraries/user_agent.html">User Agent Library</a>.</li>
+ <li>Fixed a typo in the docblock comments that had CodeIgniter spelled CodeIgnitor.</li>
+ <li>Fixed a typo in the <a href="helpers/string_helper.html">String Helper</a> (uniquid changed to uniqid).</li>
+ <li>Fixed typos in the email Language class (email_attachment_unredable, email_filed_smtp_login), and FTP Class (ftp_unable_to_remame).</li>
+ <li>Added a stripslashes()  into the Upload Library.</li>
+ <li>Fixed a series of grammatical and spelling errors in the language files.</li>
+ <li>Fixed assorted user guide typos.</li>
+</ul>
+<h2>Version 1.5.4</h2>
+<p>Release Date: July 12, 2007 </p>
+<ul>
+ <li>Added <a href="libraries/language.html">custom Language files</a> to the <a href="general/autoloader.html">autoload</a> options. </li>
+ <li>Added stripslashes() to the _clean_input_data() function in the <a href="libraries/input.html">Input class</a> when magic quotes is on so that data will always be un-slashed within the framework.</li>
+ <li>Added array to string into the <a href="general/profiling.html">profiler</a>.</li>
+ <li>Added some additional mime types in application/config/mimes.php.</li>
+ <li>Added filename_security() method to <a href="libraries/input.html">Input library</a>.</li>
+ <li>Added some additional arguments to the <a href="helpers/inflector_helper.html">Inflection helper</a> singular() to compensate for words ending in "s".  Also added a force parameter to pluralize().</li>
+ <li>Added $config['charset'] to the config file.  Default value is 'UTF-8', used in some string handling functions.</li>
+ <li>Fixed MSSQL insert_id().</li>
+ <li>Fixed a logic error in the DB trans_status() function.  It was incorrectly returning TRUE on failure and FALSE on success.</li>
+ <li>Fixed a bug that was allowing multiple load attempts on extended classes.</li>
+ <li>Fixed a bug in the bootstrap file that was incorrectly attempting to discern the full server path even when it was explicity set by the user.</li>
+ <li>Fixed a bug in the escape_str() function in the MySQL driver.</li>
+ <li>Fixed a typo in the <a href="libraries/calendar.html">Calendar library </a> </li>
+ <li>Fixed a typo in rpcs.php library</li>
+ <li>Fixed a bug in the <a href="libraries/zip.html">Zip library</a>, providing PC Zip file compatibility with Mac OS X</li>
+ <li>Fixed a bug in router that was ignoring the scaffolding route for optimization </li>
+ <li>Fixed an IP validation bug.</li>
+ <li>Fixed a bug in display of POST keys in the <a href="general/profiling.html">Profiler</a> output</li>
+ <li>Fixed a bug in display of queries with characters that would be interpreted as HTML in the <a href="general/profiling.html">Profiler</a> output</li>
+ <li>Fixed a bug in display of Email class print debugger with characters that would be interpreted as HTML in the debugging output</li>
+ <li>Fixed a bug in the Content-Transfer-Encoding of HTML emails with the quoted-printable MIME type</li>
+ <li>Fixed a bug where one could unset certain PHP superglobals by setting them via GET or POST data</li>
+ <li>Fixed an undefined function error in the insert_id() function of the PostgreSQL driver</li>
+ <li>Fixed various doc typos. </li>
+ <li>Documented two functions from the <a href="helpers/string_helper.html">String helper </a> that were missing from the user guide:  trim_slashes() and reduce_double_slashes().</li>
+ <li>Docs now validate to XHTML 1 transitional</li>
+ <li>Updated the XSS Filtering to take into account the IE [removed]) ability and improved certain deletions to prevent possible exploits</li>
+ <li>Modified the Router so that when Query Strings are Enabled, the controller trigger and function trigger values are sanitized for filename include security.</li>
+ <li>Modified the is_image() method in the Upload library to take into account Windows IE 6/7 eccentricities when dealing with MIMEs</li>
+ <li>Modified XSS Cleaning routine to be more performance friendly and compatible with PHP 5.2's new PCRE backtrack and recursion limits.</li>
+ <li>Modified the <a href="helpers/url_helper.html">URL Helper</a> to type cast the $title as a string in case a numeric value is supplied</li>
+ <li>Modified Form Helper form_dropdown() to type cast the keys and values of the options array as strings, allowing numeric values to be properly set as 'selected'</li>
+ <li>Deprecated the use if <kbd>is_numeric()</kbd> in various places since it allows periods.  Due to compatibility problems with <kbd>ctype_digit()</kbd>, making it unreliable in some installations, the following regular expression was used instead:  <kbd>preg_match("/[^0-9]/", $n)</kbd></li>
+ <li>Deprecated: APPVER has been deprecated and replaced with CI_VERSION for clarity. </li>
+</ul>
+<h2>Version 1.5.3</h2>
+<p>Release Date: April 15, 2007 </p>
+<ul>
+ <li>Added array to string into the profiler </li>
+ <li>Code Igniter references updated to CodeIgniter </li>
+ <li>pMachine references updated to EllisLab </li>
+ <li>Fixed a bug in the repeater function of <a href="helpers/string_helper.html">string helper</a>. </li>
+ <li>Fixed a bug in ODBC driver </li>
+ <li>Fixed a bug in result_array() that was returning an empty array when no result is produced.</li>
+ <li>Fixed a bug in the redirect function of the <a href="helpers/url_helper.html">url helper</a>. </li>
+ <li>Fixed an undefined variable in Loader </li>
+ <li>Fixed a version bug in the Postgres driver </li>
+ <li>Fixed a bug in the textarea function of the form helper for use with strings</li>
+ <li>Fixed doc typos. </li>
+</ul>
+<h2>Version 1.5.2</h2>
+<p>Release Date: February 13, 2007 </p>
+<ul>
+ <li>Added <a href="installation/downloads.html#svn">subversion information</a> to the <a href="installation/downloads.html">downloads</a> page. </li>
+ <li>Added support for captions in the <a href="libraries/table.html">Table Library</a> </li>
+ <li>Fixed a bug in the <a href="helpers/download_helper.html">download_helper</a> that was causing Internet Explorer to load rather than download </li>
+ <li>Fixed a bug in the Active Record Join function that was not taking table prefixes into consideration.</li>
+ <li>Removed unescaped variables in error messages of Input and Router classes</li>
+ <li>Fixed a bug in the Loader that was causing errors on Libraries loaded twice. A debug message is now silently made in the log.  </li>
+ <li>Fixed a bug in the <a href="helpers/form_helper.html">form helper</a> that gave textarea a value attribute </li>
+ <li>Fixed a bug in the <a href="#">Image Library</a> that was ignoring resizing the same size image </li>
+ <li>Fixed some doc typos.</li>
+</ul>
+
+
+<h2>Version 1.5.1</h2>
+<p>Release Date: November 23, 2006</p>
+<ul>
+ <li>Added support for submitting arrays of libraries in the $this-&gt;load-&gt;library function.</li>
+ <li>Added support for naming custom library files in lower or uppercase.</li>
+ <li>Fixed a bug related to output buffering.</li>
+ <li>Fixed a bug in the active record class that was not resetting query data after a completed query.</li>
+ <li>Fixed a bug that was suppressing errors in controllers.</li>
+ <li>Fixed a problem that can cause a loop to occur when the config file is missing.</li>
+ <li>Fixed a bug that occurred when multiple models were loaded with the third parameter set to TRUE.</li>
+ <li>Fixed an oversight that was not unsetting globals properly in the input sanitize function.</li>
+ <li>Fixed some bugs in the Oracle DB driver.</li>
+ <li>Fixed an incorrectly named variable in the MySQLi result driver.</li>
+ <li>Fixed some doc typos.</li>
+</ul>
+<h2>Version 1.5.0.1</h2>
+<p>Release Date: October 31, 2006</p>
+<ul>
+<li>Fixed a problem in which duplicate attempts to load helpers and classes were not being stopped.</li>
+<li>Fixed a bug in the word_wrap() helper function.</li>
+<li>Fixed an invalid color Hex number in the Profiler class.</li>
+<li>Fixed a corrupted image in the user guide.</li>
+</ul>
+
+
+
+<h2>Version 1.5.0</h2>
+<p>Release Date: October 30, 2006</p>
+
+<ul>
+<li>Added <a href="database/utilities.html">DB utility class</a>, permitting DB backups, CVS or XML files from DB results, and various other functions.</li>
+<li>Added <a href="database/caching.html">Database Caching Class</a>.</li>
+<li>Added <a href="database/transactions.html">transaction support</a> to the database classes.</li>
+<li>Added <a href="general/profiling.html">Profiler Class</a> which generates a report of Benchmark execution times, queries, and POST data at the bottom of your pages.</li>
+<li>Added <a href="libraries/user_agent.html">User Agent Library</a> which allows browsers, robots, and mobile devises to be identified.</li>
+<li>Added <a href="libraries/table.html">HTML Table Class</a> , enabling tables to be generated from arrays or database results.</li>
+<li>Added <a href="libraries/zip.html">Zip Encoding Library</a>.</li>
+<li>Added <a href="libraries/ftp.html">FTP Library</a>.</li>
+<li>Added the ability to <a href="general/creating_libraries.html">extend libraries</a> and <a href="general/core_classes.html">extend core classes</a>, in addition to being able to replace them.</li>
+<li>Added support for storing <a href="general/models.html">models within sub-folders</a>.</li>
+<li>Added <a href="helpers/download_helper.html">Download Helper</a>.</li>
+<li>Added <a href="database/queries.html">simple_query()</a> function to the database classes</li>
+<li>Added <a href="helpers/date_helper.html">standard_date()</a> function to the Date Helper.</li>
+<li>Added <a href="database/results.html">$query-&gt;free_result()</a> to database class.</li>
+<li>Added <a href="database/fields.html">$query-&gt;list_fields()</a> function to database class</li>
+<li>Added <a href="database/helpers.html">$this-&gt;db-&gt;platform()</a> function</li>
+<li>Added new <a href="helpers/file_helper.html">File Helper</a>:  get_filenames()</li>
+<li>Added new helper:  <a href="helpers/smiley_helper.html">Smiley Helper</a></li>
+<li>Added support for &lt;ul> and &lt;ol> lists in the  <a href="helpers/html_helper.html">HTML Helper</a></li>
+<li>Added the ability to rewrite <a href="general/alternative_php.html">short tags</a> on-the-fly, converting them to standard PHP statements, for those servers that do not support short tags.  This allows the cleaner syntax to be used regardless of whether it's supported by the server.</li>
+<li>Added the ability to <a href="general/managing_apps.html">rename or relocate the "application" folder</a>.</li>
+<li>Added more thorough initialization in the upload class so that all class variables are reset.</li>
+<li>Added "is_numeric" to validation, which uses the native PHP is_numeric function.</li>
+<li>Improved the URI handler to make it more reliable when the $config['uri_protocol'] item is set to AUTO.</li>
+<li>Moved most of the functions in the Controller class into the Loader class, allowing fewer reserved function names for controllers when running under PHP 5.</li>
+<li>Updated the DB Result class to return an empty array when $query-&gt;result() doesn't produce a result.</li>
+<li>Updated the <dfn>input-&gt;cookie()</dfn> and <dfn>input-&gt;post()</dfn> functions in <a href="libraries/input.html">Input Class</a> to permit arrays contained cookies that are arrays to be run through the XSS filter.</li>
+<li>Documented three functions from the <a href="libraries/validation.html">Validation class</a> that were missing from the user guide:  set_select(), set_radio(), and set_checkbox().</li>
+<li>Fixed a bug in the Email class related to SMTP Helo data.</li>
+<li>Fixed a bug in the word wrapping helper and function in the email class.</li>
+<li>Fixed a bug in the validation class.</li>
+<li>Fixed a bug in the typography helper that was incorrectly wrapping block level elements in paragraph tags.</li>
+<li>Fixed a problem in the form_prep() function that was double encoding entities.</li>
+<li>Fixed a bug that affects some versions of PHP when output buffering is nested.</li>
+<li>Fixed a bug that caused CI to stop working when the PHP magic __get() or __set() functions were used within models or controllers.</li>
+<li>Fixed a pagination bug that was permitting negative values in the URL.</li>
+<li>Fixed an oversight in which the Loader class was not allowed to be extended.</li>
+<li>Changed <dfn>_get_config()</dfn> to <dfn>get_config()</dfn> since the function is not a private one.</li>
+<li><strong>Deprecated "init" folder</strong>.  Initialization happens automatically now.  <a href="general/creating_libraries.html">Please see documentation</a>.</li>
+<li><strong>Deprecated</strong> $this-&gt;db-&gt;field_names()  USE  $this-&gt;db-&gt;list_fields()</li>
+<li><strong>Deprecated</strong> the <dfn>$config['log_errors']</dfn> item from the config.php file.  Instead, <dfn>$config['log_threshold']</dfn> can be set to "0" to turn it off.</li>
+</ul>
+
+
+
+
+<h2>Version 1.4.1</h2>
+<p>Release Date: September 21, 2006</p>
+
+<ul>
+<li>Added a new feature that passes URI segments directly to your function calls as parameters. See the <a href="general/controllers.html">Controllers</a> page for more info.</li>
+<li>Added support for a function named <dfn>_output()</dfn>, which when used in your controllers will received the final rendered output from the output class.  More info in the <a href="index.html">Controllers</a> page.</li>
+<li>Added several new functions in the <a href="libraries/uri.html">URI Class</a> to let you retrieve and manipulate URI segments that have been re-routed using the <a href="index.html">URI Routing</a> feature. Previously, the URI class did not permit you to access any re-routed URI segments, but now it does.</li>
+<li>Added <a href="libraries/output.html">$this-&gt;output-&gt;set_header()</a> function, which allows you to set server headers.</li>
+<li>Updated plugins, helpers, and language classes to allow your <dfn>application</dfn> folder to contain its own plugins, helpers, and language folders.  Previously they were always treated as global for your entire installation.  If your application folder contains any of these resources they will be used <em>instead</em> the global ones.</li>
+<li>Added <a href="helpers/inflector_helper.html">Inflector helper</a>.</li>
+<li>Added <dfn>element()</dfn> function in the <a href="helpers/array_helper.html">array helper</a>.</li>
+<li>Added <dfn>RAND()</dfn> to active record <dfn>orderby()</dfn> function.</li>
+<li>Added <dfn>delete_cookie()</dfn> and <dfn>get_cookie()</dfn> to <a href="helpers/cookie_helper.html">Cookie helper</a>, even though the input class has a cookie fetching function.</li>
+<li>Added Oracle database driver (still undergoing testing so it might have some bugs).</li>
+<li>Added the ability to combine pseudo-variables and php variables in the template parser class.</li>
+<li>Added output compression option to the config file.</li>
+<li>Removed the is_numeric test from the db-&gt;escape() function.</li>
+<li>Fixed a MySQLi bug that was causing error messages not to contain proper error data.</li>
+<li>Fixed a bug in the email class which was causing it to ignore explicitly set alternative headers.</li>
+<li>Fixed a bug that was causing a PHP error when the Exceptions class was called within the get_config() function since it was causing problems.</li>
+<li>Fixed an oversight in the cookie helper in which the config file cookie settings were not being honored.</li>
+<li>Fixed an oversight in the upload class. An item mentioned in the 1.4 changelog was missing.</li>
+<li>Added some code to allow email attachments to be reset when sending batches of email.</li>
+<li>Deprecated the <dfn>application/scripts</dfn> folder. It will continue to work for legacy users, but it is recommended that you create your own
+<a href="general/libraries.html">libraries</a> or <a href="general/models.html">models</a> instead.  It was originally added before CI had user libraries or models, but it's not needed anymore.</li>
+<li>Deprecated the <dfn>$autoload['core']</dfn> item from the <kbd>autoload.php</kbd> file.  Instead, please now use: <kbd>$autoload['libraries']</kbd></li>
+<li>Deprecated the following database functions: $this-&gt;db-&gt;smart_escape_str() and $this-&gt;db-&gt;fields().</li>
+</ul>
+
+
+
+<h2>Version 1.4.0</h2>
+<p>Release Date: September 17, 2006</p>
+
+<ul>
+<li>Added <a href="general/hooks.html">Hooks</a> feature, enabling you to tap into and modify the inner workings of the framework without hacking the core files.</li>
+<li>Added the ability to organize controller files <a href="general/controllers.html">into sub-folders</a>.  Kudos to Marco for <a href="#">suggesting</a> this (and the next two) feature.</li>
+<li>Added regular expressions support for <a href="general/routing.html">routing rules</a>.</li>
+<li>Added the ability to <a href="general/controllers.html">remap function calls</a> within your controllers.</li>
+<li>Added the ability to <a href="general/core_classes.html">replace core system classes</a> with your own classes.</li>
+<li>Added support for % character in URL.</li>
+<li>Added the ability to supply full URLs using the <a href="helpers/url_helper.html">anchor()</a> helper function.</li>
+<li>Added mode parameter to <a href="helpers/file_helper.html">file_write()</a> helper.</li>
+<li>Added support for changing the port number in the <a href="database/configuration.html">Postgres driver</a>.</li>
+<li>Moved the list of "allowed URI characters" out of the Router class and into the config file.</li>
+<li>Moved the MIME type array out of the Upload class and into its own file in the applications/config/ folder.</li>
+<li>Updated the Upload class to allow the upload field name to be set when calling <a href="libraries/file_uploading.html">do_upload()</a>.</li>
+<li>Updated the <a href="libraries/config.html">Config Library</a> to be able to load config files silently, and to be able to assign config files to their own index (to avoid collisions if you use multiple config files).</li>
+<li>Updated the URI Protocol code to allow more options so that URLs will work more reliably in different environments.</li>
+<li>Updated the <dfn>form_open()</dfn> helper to allow the GET method to be used.</li>
+<li>Updated the MySQLi <dfn>execute()</dfn> function with some code to help prevent lost connection errors.</li>
+<li>Updated the SQLite Driver to check for object support before attempting to return results as objects.  If unsupported it returns an array.</li>
+<li>Updated the Models loader function to allow multiple loads of the same model.</li>
+<li>Updated the MS SQL driver so that single quotes are escaped.</li>
+<li>Updated the Postgres and ODBC drivers for better compatibility.</li>
+<li>Removed a strtolower() call that was changing URL segments to lower case.</li>
+<li>Removed some references that were interfering with PHP 4.4.1 compatibility.</li>
+<li>Removed backticks from Postgres class since these are not needed.</li>
+<li>Renamed <dfn>display()</dfn> to <dfn>_display()</dfn> in the Output class to make it clear that it's a private function.</li>
+<li>Deprecated the hash() function due to a naming conflict with a native PHP function with the same name.  Please use <kbd>dohash()</kbd> instead.</li>
+<li>Fixed an bug that was preventing the input class from unsetting GET variables.</li>
+<li>Fixed a router bug that was making it too greedy when matching end segments.</li>
+<li>Fixed a bug that was preventing multiple discrete database calls.</li>
+<li>Fixed a bug in which loading a language file was producing a "file contains no data" message.</li>
+<li>Fixed a session bug caused by the XSS Filtering feature inadvertently changing the case of certain words.</li>
+<li>Fixed some missing prefixes when using the database prefix feature.</li>
+<li>Fixed a typo in the Calendar class (cal_november).</li>
+<li>Fixed a bug in the <dfn>form_checkbox()</dfn> helper.</li>
+<li>Fixed a bug that was allowing the second segment of the URI to be identical to the class name.</li>
+<li>Fixed an evaluation bug in the database initialization function.</li>
+<li>Fixed a minor bug in one of the error messages in the language class.</li>
+<li>Fixed a bug in the date helper <dfn>timespan</dfn> function.</li>
+<li>Fixed an undefined variable in the DB Driver class.</li>
+<li>Fixed a bug in which dollar signs used as binding replacement values in the DB class would be treated as RegEx back-references.</li>
+<li>Fixed a bug in the <dfn>set_hash()</dfn> function which was preventing MD5 from being used.</li>
+<li>Fixed a couple bugs in the Unit Testing class.</li>
+<li>Fixed an incorrectly named variable in the Validation class.</li>
+<li>Fixed an incorrectly named variable in the URI class.</li>
+<li>Fixed a bug in the config class that was preventing the base URL from being called properly.</li>
+<li>Fixed a bug in the validation class that was not permitting callbacks if the form field was empty.</li>
+<li>Fixed a problem that was preventing scaffolding from working properly with MySQLi.</li>
+<li>Fixed some MS SQL bugs.</li>
+<li>Fixed some doc typos.</li>
+</ul>
+
+
+
+<h2>Version 1.3.3</h2>
+<p>Release Date: June 1, 2006</p>
+
+<ul>
+
+<li>Models do <strong>not</strong> connect automatically to the database as of this version. <a href="general/models.html">More info here</a>.</li>
+<li>Updated the Sessions class to utilize the active record class when running session related queries.  Previously the queries assumed MySQL syntax.</li>
+<li>Updated alternator() function to re-initialize when called with no arguments, allowing multiple calls.</li>
+<li>Fixed a bug in the active record "having" function.</li>
+<li>Fixed a problem in the validation class which was making checkboxes be ignored when required.</li>
+<li>Fixed a bug in the word_limiter() helper function.  It was cutting off the fist word.</li>
+<li>Fixed a bug in the xss_clean function due to a PHP bug that affects some versions of html_entity_decode.</li>
+<li>Fixed a validation bug that was preventing rules from being set twice in one controller.</li>
+<li>Fixed a calendar bug that was not letting it use dynamically loaded languages.</li>
+<li>Fixed a bug in the active record class when using WHERE clauses with LIKE</li>
+<li>Fixed a bug in the hash() security helper.</li>
+<li>Fixed some typos.</li>
+</ul>
+
+
+
+
+<h2>Version 1.3.2</h2>
+<p>Release Date: April 17, 2006</p>
+
+<ul>
+<li>Changed the behavior of the validation class such that if a "required" rule is NOT explicitly stated for a field then all other tests get ignored.</li>
+<li>Fixed a bug in the Controller class that was causing it to look in the local "init" folder instead of the main system one.</li>
+<li>Fixed a bug in the init_pagination file.  The $config item was not being set correctly.</li>
+<li>Fixed a bug in the auto typography helper that was causing inconsistent behavior.</li>
+<li>Fixed a couple bugs in the Model class.</li>
+<li>Fixed some documentation typos and errata.</li>
+</ul>
+
+
+
+<h2>Version 1.3.1</h2>
+<p>Release Date: April 11, 2006</p>
+
+<ul>
+<li>Added a <a href="libraries/unit_testing.html">Unit Testing Library</a>.</li>
+<li>Added the ability to pass objects to the <strong>insert()</strong> and <strong>update()</strong>  database functions.
+This feature enables you to (among other things) use your  <a href="general/models.html">Model class</a> variables to run queries with. See the Models page for details.</li>
+<li>Added the ability to pass objects to the <a href="general/views.html">view loading function</a>: $this-&gt;load-&gt;view('my_view', <var>$object</var>);</li>
+<li>Added <kbd>getwhere</kbd> function to <a href="database/active_record.html">Active Record class</a>.</li>
+<li>Added <kbd>count_all</kbd> function to <a href="database/active_record.html">Active Record class</a>.</li>
+<li>Added language file for scaffolding and fixed a scaffolding bug that occurs when there are no rows in the specified table.</li>
+<li>Added <a href="database/queries.html">$this-&gt;db-&gt;last_query()</a>, which allows you to view your last query that was run.</li>
+<li>Added a new mime type to the upload class for better compatibility.</li>
+<li>Changed how cache files are read to prevent PHP errors if the cache file contains an XML tag, which PHP wants to interpret as a short tag.</li>
+<li>Fixed a bug in a couple of the active record functions (where and orderby).</li>
+<li>Fixed a bug in the image library when realpath() returns false.</li>
+<li>Fixed a bug in the Models that was preventing libraries from being used within them.</li>
+<li>Fixed a bug in the "exact_length" function of the validation class.</li>
+<li>Fixed some typos in the user guide</li>
+</ul>
+
+
+<h2>Version 1.3</h2>
+<p>Release Date: April 3, 2006</p>
+
+<ul>
+<li>Added support for <a href="index.html">Models</a>.</li>
+<li>Redesigned the database libraries to support additional RDBMs (Postgres, MySQLi, etc.).</li>
+<li>Redesigned the <a href="database/active_record.html">Active Record class</a> to enable more varied types of queries with simpler syntax, and advanced features like JOINs.</li>
+<li>Added a feature to the database class that lets you run <a href="database/call_function.html">custom function calls</a>.</li>
+<li>Added support for <a href="index.html">private functions</a> in your controllers.  Any controller function name that starts with an underscore will not be served by a URI request.</li>
+<li>Added the ability to pass your own initialization parameters to your <a href="index.html">custom core libraries</a> when using $this-&gt;load-&gt;library()</li>
+<li>Added support for running standard <a href="index.html">query string URLs</a>.  These can be optionally enabled in your config file.</li>
+<li>Added the ability to  <a href="index.html">specify a "suffix"</a>, which will be appended to your URLs.  For example, you could add .html to your URLs, making them appear static. This feature is enabled in your config file.</li>
+<li>Added a new error template for use with native PHP errors.</li>
+<li>Added "alternator" function in the <a href="helpers/string_helper.html">string helpers</a>.</li>
+<li>Removed slashing from the input class. After much debate we decided to kill this feature.</li>
+<li>Change the commenting style in the scripts to the PEAR standard so that IDEs and tools like phpDocumenter can harvest the comments.</li>
+<li>Added better class and function name-spacing to avoid collisions with user developed classes. All CodeIgniter classes are now prefixed with <dfn>CI_</dfn> and
+all controller methods are prefixed with <dfn>_ci</dfn> to avoid controller collisions. A list of reserved function names can be <a href="index.html">found here</a>.</li>
+<li>Redesigned how the "CI" super object is referenced, depending on whether PHP 4 or 5 is being run, since PHP 5 allows a more graceful way to manage objects that utilizes a bit less resources.</li>
+<li>Deprecated: <var>$this-&gt;db-&gt;use_table()</var> has been deprecated. Please read the <a href="database/active_record.html">Active Record</a> page for information.</li>
+<li>Deprecated: <var>$this-&gt;db-&gt;smart_escape_str()</var> has been deprecated. Please use this instead: <var>$this-&gt;db-&gt;escape()</var></li>
+<li>Fixed a bug in the exception handler which was preventing some PHP errors from showing up.</li>
+<li>Fixed a typo in the URI class.  $this-&gt;total_segment() should be plural: $this-&gt;total_segments()</li>
+<li>Fixed some typos in the default calendar template</li>
+<li>Fixed some typos in the user guide</li>
+</ul>
+
+
+
+
+
+
+
+
+<h2>Version 1.2</h2>
+<p>Release Date: March 21, 2006</p>
+
+<ul>
+<li>Redesigned some internal aspects of the framework to resolve scoping problems that surfaced during the beta tests. The problem was most notable when instantiating classes in your constructors, particularly if those classes in turn did work in their constructors.</li>
+<li>Added a global function named <a href="index.html">get_instance()</a> allowing the main CodeIgniter object to be accessible throughout your own classes.</li>
+<li>Added new <a href="helpers/file_helper.html">File Helper</a>:  delete_files()</li>
+<li>Added new <a href="helpers/url_helper.html">URL Helpers</a>:  base_url(), index_page()</li>
+<li>Added the ability to create your own <a href="index.html">core libraries</a> and store them in your local application directory.</li>
+<li>Added an <kbd>overwrite</kbd> option to the <a href="libraries/file_uploading.html">Upload class</a>, enabling files to be overwritten rather than having the file name appended.</li>
+<li>Added Javascript Calendar plugin.</li>
+<li>Added search feature to user guide.  Note: This is done using Google, which at the time of this writing has not crawled all the pages of the docs.</li>
+<li>Updated the parser class so that it allows tag pars within other tag pairs.</li>
+<li>Fixed a bug in the DB "where" function.</li>
+<li>Fixed a bug that was preventing custom config files to be auto-loaded.</li>
+<li>Fixed a bug in the mysql class bind feature that prevented question marks in the replacement data.</li>
+<li>Fixed some bugs in the xss_clean function</li>
+</ul>
+
+
+
+<h2>Version Beta 1.1</h2>
+<p>Release Date: March 10, 2006</p>
+
+<ul>
+<li>Added a <a href="libraries/calendar.html">Calendaring class</a>.</li>
+<li>Added support for running <a href="index.html">multiple applications</a> that share a common CodeIgniter backend.</li>
+<li>Moved the "uri protocol" variable from the index.php file into the config.php file</li>
+<li>Fixed a problem that was preventing certain function calls from working within constructors.</li>
+<li>Fixed a problem that was preventing the $this-&gt;load-&gt;library function from working in constructors.</li>
+<li>Fixed a bug that occurred when the session class was loaded using the auto-load routine.</li>
+<li>Fixed a bug that can happen with PHP versions that do not support the E_STRICT constant</li>
+<li>Fixed a data type error in the form_radio function (form helper)</li>
+<li>Fixed a bug that was preventing the xss_clean function from being called from the validation class.</li>
+<li>Fixed the cookie related config names, which were incorrectly specified as $conf rather than $config</li>
+<li>Fixed a pagination problem in the scaffolding.</li>
+<li>Fixed a bug in the mysql class "where" function.</li>
+<li>Fixed a regex problem in some code that trimmed duplicate slashes.</li>
+<li>Fixed a bug in the br() function in the HTML helper</li>
+<li>Fixed a syntax mistake in the form_dropdown function in the Form Helper.</li>
+<li>Removed the "style" attributes form the form helpers.</li>
+<li>Updated the documentation. Added "next/previous" links to each page and fixed various typos.</li>
+</ul>
+
+<h2>Version Beta 1.0 </h2>
+<p>Release Date: February 28, 2006</p>
+<p>First publicly released version.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+anjianshi, caesarjuly, CosyBoy, fushengqian, Hex, yygcom, 暗夜星辰, 曜日晨阳, 杜建宇</div>
+<div id="DocDate">
+最后修改: 2014-06-14 16:50:14</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="license.html">许可协议</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="general/credits.html">关于 CodeIgniter</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 19 - 0
ci_chm.ahk

@@ -0,0 +1,19 @@
+/*
+脚本名称:	ci_chm_maker
+脚本编码:	UTF-8(with BOM)
+脚本说明:	CI帮助文档生成器
+脚本版本:	1.0
+脚本作者:	飞扬网络工作室 (fysoft)
+作者官网:	http://raoyc.com/fysoft/
+交流Q群:	260655062
+运行环境:	作者在编码或测试此脚本时所使用的运行环境为 Windows XP SP3 + AutoHotkey(L) v1.1.09.04,其它相异于此运行环境的,请自行测试脚本兼容性问题
+版权申明:	非商业使用,在此脚本基础上所作出的修改,需保留原作者署名信息(作者名和官网链接)
+备注信息:	
+*/
+
+#NoEnv
+SendMode Input 
+SetWorkingDir %A_ScriptDir%
+;MsgBox, %A_AhkVersion%
+RunWait, hhc.exe ..\ci_chm.hhp, %A_Scriptdir%\bin, Hide UseErrorLevel
+

BIN
ci_chm.exe


+ 599 - 0
ci_chm.hhc

@@ -0,0 +1,599 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<object type="text/site properties">
+<param name="ImageType" value="folder">
+<param name="Window Styles" value="0x800025">
+</object>
+<UL>
+	<LI> <OBJECT type="text/sitemap">
+			<param name="Name" value="CodeIgniter用户指南(版本 2.2.0)">
+			<param name="Local" value="index.html">
+			</OBJECT>
+		<UL>
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="基本信息">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="服务器要求">
+					<param name="Local" value="general/requirements.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="许可协议">
+					<param name="Local" value="license.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="变更记录">
+					<param name="Local" value="changelog.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="关于 CodeIgniter">
+					<param name="Local" value="general/credits.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="安装">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="下载 CodeIgniter">
+					<param name="Local" value="installation/downloads.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="安装指导">
+					<param name="Local" value="installation/index.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="从老版本升级">
+					<param name="Local" value="installation/upgrading.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="疑难解答">
+					<param name="Local" value="installation/troubleshooting.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="介绍">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="开始">
+					<param name="Local" value="overview/getting_started.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="CodeIgniter 是什么?">
+					<param name="Local" value="overview/at_a_glance.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="CodeIgniter 速记表">
+					<param name="Local" value="overview/cheatsheets.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="支持特性">
+					<param name="Local" value="overview/features.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="应用程序流程图">
+					<param name="Local" value="overview/appflow.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="模型-视图-控制器">
+					<param name="Local" value="overview/mvc.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="架构目标">
+					<param name="Local" value="overview/goals.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="教程">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="内容提要">
+					<param name="Local" value="tutorial/index.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="加载静态内容">
+					<param name="Local" value="tutorial/static_pages.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="读取新闻条目">
+					<param name="Local" value="tutorial/news_section.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="创建新闻条目">
+					<param name="Local" value="tutorial/create_news_items.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="结束语">
+					<param name="Local" value="tutorial/conclusion.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="常规主题">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="CodeIgniter URL">
+					<param name="Local" value="general/urls.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="控制器">
+					<param name="Local" value="general/controllers.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="保留字">
+					<param name="Local" value="general/reserved_names.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="视图">
+					<param name="Local" value="general/views.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="模型">
+					<param name="Local" value="general/models.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="辅助函数">
+					<param name="Local" value="general/helpers.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="使用 CodeIgniter 类库">
+					<param name="Local" value="general/libraries.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="创建你自己的类库">
+					<param name="Local" value="general/creating_libraries.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="使用 CodeIgniter 适配器">
+					<param name="Local" value="general/drivers.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="创建适配器">
+					<param name="Local" value="general/creating_drivers.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="创建核心类">
+					<param name="Local" value="general/core_classes.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="钩子 - 扩展核心">
+					<param name="Local" value="general/hooks.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="自动装载资源">
+					<param name="Local" value="general/autoloader.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="公共函数">
+					<param name="Local" value="general/common_functions.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="URI 路由">
+					<param name="Local" value="general/routing.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="错误处理">
+					<param name="Local" value="general/errors.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="缓存">
+					<param name="Local" value="general/caching.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="调试应用程序">
+					<param name="Local" value="general/profiling.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="以 CLI 方式运行">
+					<param name="Local" value="general/cli.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="管理应用程序">
+					<param name="Local" value="general/managing_apps.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="处理多环境">
+					<param name="Local" value="general/environments.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="PHP 替代语法">
+					<param name="Local" value="general/alternative_php.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="安全">
+					<param name="Local" value="general/security.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="开发规范">
+					<param name="Local" value="general/styleguide.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="附加资源">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="快速参考图">
+					<param name="Local" value="general/quick_reference.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="搜索引擎">
+					<param name="Local" value="http://search.codeigniter.org.cn/">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="中文社区">
+					<param name="Local" value="http://codeigniter.org.cn/forums/">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="英文社区">
+					<param name="Local" value="http://www.codeigniter.com/forums/">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="社区 Wiki">
+					<param name="Local" value="http://www.codeigniter.com/wiki/">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="类库参考">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="基准测试类">
+					<param name="Local" value="libraries/benchmark.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="日历类">
+					<param name="Local" value="libraries/calendar.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="购物车类">
+					<param name="Local" value="libraries/cart.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="配置类">
+					<param name="Local" value="libraries/config.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Email 类">
+					<param name="Local" value="libraries/email.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="加密类">
+					<param name="Local" value="libraries/encryption.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="文件上传类">
+					<param name="Local" value="libraries/file_uploading.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="表单验证类">
+					<param name="Local" value="libraries/form_validation.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="FTP 类">
+					<param name="Local" value="libraries/ftp.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="HTML 表格类">
+					<param name="Local" value="libraries/table.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="图像处理类">
+					<param name="Local" value="libraries/image_lib.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="输入类">
+					<param name="Local" value="libraries/input.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Javascript 类">
+					<param name="Local" value="libraries/javascript.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="装载器类">
+					<param name="Local" value="libraries/loader.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="语言类">
+					<param name="Local" value="libraries/language.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="迁移类">
+					<param name="Local" value="libraries/migration.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="输出类">
+					<param name="Local" value="libraries/output.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="分页类">
+					<param name="Local" value="libraries/pagination.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="安全类">
+					<param name="Local" value="libraries/security.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Session 类">
+					<param name="Local" value="libraries/sessions.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Trackback 类">
+					<param name="Local" value="libraries/trackback.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="模板解析器类">
+					<param name="Local" value="libraries/parser.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="排版类">
+					<param name="Local" value="libraries/typography.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="单元测试类">
+					<param name="Local" value="libraries/unit_testing.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="URI 类">
+					<param name="Local" value="libraries/uri.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="User-Agent 类">
+					<param name="Local" value="libraries/user_agent.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="XML-RPC 类">
+					<param name="Local" value="libraries/xmlrpc.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Zip 编码类">
+					<param name="Local" value="libraries/zip.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="缓存适配器">
+					<param name="Local" value="drivers/caching.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="适配器参考">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="缓存类">
+					<param name="Local" value="drivers/caching.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="数据库类">
+					<param name="Local" value="database/index.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Javascript 类">
+					<param name="Local" value="libraries/javascript.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="辅助函数参考">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="数组辅助函数">
+					<param name="Local" value="helpers/array_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="CAPTCHA 辅助函数">
+					<param name="Local" value="helpers/captcha_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Cookie 辅助函数">
+					<param name="Local" value="helpers/cookie_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="日期辅助函数">
+					<param name="Local" value="helpers/date_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="目录辅助函数">
+					<param name="Local" value="helpers/directory_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="下载辅助函数">
+					<param name="Local" value="helpers/download_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Email 辅助函数">
+					<param name="Local" value="helpers/email_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="文件辅助函数">
+					<param name="Local" value="helpers/file_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="表单辅助函数">
+					<param name="Local" value="helpers/form_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="HTML 辅助函数">
+					<param name="Local" value="helpers/html_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Inflector 辅助函数">
+					<param name="Local" value="helpers/inflector_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="语言辅助函数">
+					<param name="Local" value="helpers/language_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="数字辅助函数">
+					<param name="Local" value="helpers/number_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="路径辅助函数">
+					<param name="Local" value="helpers/path_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="安全辅助函数">
+					<param name="Local" value="helpers/security_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="表情辅助函数">
+					<param name="Local" value="helpers/smiley_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="字符串辅助函数">
+					<param name="Local" value="helpers/string_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="文本辅助函数">
+					<param name="Local" value="helpers/text_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="排版辅助函数">
+					<param name="Local" value="helpers/typography_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="URL 辅助函数">
+					<param name="Local" value="helpers/url_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="XML 辅助函数">
+					<param name="Local" value="helpers/xml_helper.html">
+					</OBJECT>
+			</UL>
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="本帮助文档制作者博客">
+				<param name="Local" value="http://raoyc.com/fysoft">
+				</OBJECT>
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="帮助文档CSS样式图片资源">
+				<param name="Local" value="res.html">
+				</OBJECT>
+		</UL>
+</UL>
+</BODY>
+</HTML>

+ 595 - 0
ci_chm.hhk

@@ -0,0 +1,595 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
+<!-- Sitemap 1.0 -->
+</HEAD><BODY>
+<object type="text/site properties">
+<param name="ImageType" value="folder">
+<param name="Window Styles" value="0x800025">
+</object>
+<UL>
+	<LI> <OBJECT type="text/sitemap">
+			<param name="Name" value="CodeIgniter用户指南(版本 2.2.0)">
+			<param name="Local" value="index.html">
+			</OBJECT>
+		<UL>
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="基本信息">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="服务器要求">
+					<param name="Local" value="general/requirements.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="许可协议">
+					<param name="Local" value="license.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="变更记录">
+					<param name="Local" value="changelog.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="关于 CodeIgniter">
+					<param name="Local" value="general/credits.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="安装">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="下载 CodeIgniter">
+					<param name="Local" value="installation/downloads.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="安装指导">
+					<param name="Local" value="installation/index.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="从老版本升级">
+					<param name="Local" value="installation/upgrading.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="疑难解答">
+					<param name="Local" value="installation/troubleshooting.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="介绍">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="开始">
+					<param name="Local" value="overview/getting_started.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="CodeIgniter 是什么?">
+					<param name="Local" value="overview/at_a_glance.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="CodeIgniter 速记表">
+					<param name="Local" value="overview/cheatsheets.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="支持特性">
+					<param name="Local" value="overview/features.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="应用程序流程图">
+					<param name="Local" value="overview/appflow.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="模型-视图-控制器">
+					<param name="Local" value="overview/mvc.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="架构目标">
+					<param name="Local" value="overview/goals.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="教程">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="内容提要">
+					<param name="Local" value="tutorial/index.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="加载静态内容">
+					<param name="Local" value="tutorial/static_pages.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="读取新闻条目">
+					<param name="Local" value="tutorial/news_section.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="创建新闻条目">
+					<param name="Local" value="tutorial/create_news_items.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="结束语">
+					<param name="Local" value="tutorial/conclusion.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="常规主题">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="CodeIgniter URL">
+					<param name="Local" value="general/urls.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="控制器">
+					<param name="Local" value="general/controllers.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="保留字">
+					<param name="Local" value="general/reserved_names.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="视图">
+					<param name="Local" value="general/views.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="模型">
+					<param name="Local" value="general/models.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="辅助函数">
+					<param name="Local" value="general/helpers.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="使用 CodeIgniter 类库">
+					<param name="Local" value="general/libraries.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="创建你自己的类库">
+					<param name="Local" value="general/creating_libraries.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="使用 CodeIgniter 适配器">
+					<param name="Local" value="general/drivers.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="创建适配器">
+					<param name="Local" value="general/creating_drivers.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="创建核心类">
+					<param name="Local" value="general/core_classes.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="钩子 - 扩展核心">
+					<param name="Local" value="general/hooks.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="自动装载资源">
+					<param name="Local" value="general/autoloader.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="公共函数">
+					<param name="Local" value="general/common_functions.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="URI 路由">
+					<param name="Local" value="general/routing.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="错误处理">
+					<param name="Local" value="general/errors.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="缓存">
+					<param name="Local" value="general/caching.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="调试应用程序">
+					<param name="Local" value="general/profiling.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="以 CLI 方式运行">
+					<param name="Local" value="general/cli.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="管理应用程序">
+					<param name="Local" value="general/managing_apps.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="处理多环境">
+					<param name="Local" value="general/environments.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="PHP 替代语法">
+					<param name="Local" value="general/alternative_php.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="安全">
+					<param name="Local" value="general/security.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="开发规范">
+					<param name="Local" value="general/styleguide.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="附加资源">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="快速参考图">
+					<param name="Local" value="general/quick_reference.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="搜索引擎">
+					<param name="Local" value="http://search.codeigniter.org.cn/">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="中文社区">
+					<param name="Local" value="http://codeigniter.org.cn/forums/">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="英文社区">
+					<param name="Local" value="http://www.codeigniter.com/forums/">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="社区 Wiki">
+					<param name="Local" value="http://www.codeigniter.com/wiki/">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="类库参考">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="基准测试类">
+					<param name="Local" value="libraries/benchmark.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="日历类">
+					<param name="Local" value="libraries/calendar.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="购物车类">
+					<param name="Local" value="libraries/cart.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="配置类">
+					<param name="Local" value="libraries/config.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Email 类">
+					<param name="Local" value="libraries/email.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="加密类">
+					<param name="Local" value="libraries/encryption.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="文件上传类">
+					<param name="Local" value="libraries/file_uploading.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="表单验证类">
+					<param name="Local" value="libraries/form_validation.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="FTP 类">
+					<param name="Local" value="libraries/ftp.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="HTML 表格类">
+					<param name="Local" value="libraries/table.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="图像处理类">
+					<param name="Local" value="libraries/image_lib.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="输入类">
+					<param name="Local" value="libraries/input.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Javascript 类">
+					<param name="Local" value="libraries/javascript.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="装载器类">
+					<param name="Local" value="libraries/loader.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="语言类">
+					<param name="Local" value="libraries/language.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="迁移类">
+					<param name="Local" value="libraries/migration.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="输出类">
+					<param name="Local" value="libraries/output.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="分页类">
+					<param name="Local" value="libraries/pagination.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="安全类">
+					<param name="Local" value="libraries/security.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Session 类">
+					<param name="Local" value="libraries/sessions.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Trackback 类">
+					<param name="Local" value="libraries/trackback.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="模板解析器类">
+					<param name="Local" value="libraries/parser.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="排版类">
+					<param name="Local" value="libraries/typography.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="单元测试类">
+					<param name="Local" value="libraries/unit_testing.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="URI 类">
+					<param name="Local" value="libraries/uri.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="User-Agent 类">
+					<param name="Local" value="libraries/user_agent.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="XML-RPC 类">
+					<param name="Local" value="libraries/xmlrpc.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Zip 编码类">
+					<param name="Local" value="libraries/zip.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="缓存适配器">
+					<param name="Local" value="drivers/caching.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="适配器参考">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="缓存类">
+					<param name="Local" value="drivers/caching.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="数据库类">
+					<param name="Local" value="database/index.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Javascript 类">
+					<param name="Local" value="libraries/javascript.html">
+					</OBJECT>
+			</UL>
+
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="辅助函数参考">
+				<param name="Local" value="toc.html">
+				</OBJECT>
+
+			<UL>
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="数组辅助函数">
+					<param name="Local" value="helpers/array_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="CAPTCHA 辅助函数">
+					<param name="Local" value="helpers/captcha_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Cookie 辅助函数">
+					<param name="Local" value="helpers/cookie_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="日期辅助函数">
+					<param name="Local" value="helpers/date_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="目录辅助函数">
+					<param name="Local" value="helpers/directory_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="下载辅助函数">
+					<param name="Local" value="helpers/download_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Email 辅助函数">
+					<param name="Local" value="helpers/email_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="文件辅助函数">
+					<param name="Local" value="helpers/file_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="表单辅助函数">
+					<param name="Local" value="helpers/form_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="HTML 辅助函数">
+					<param name="Local" value="helpers/html_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="Inflector 辅助函数">
+					<param name="Local" value="helpers/inflector_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="语言辅助函数">
+					<param name="Local" value="helpers/language_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="数字辅助函数">
+					<param name="Local" value="helpers/number_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="路径辅助函数">
+					<param name="Local" value="helpers/path_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="安全辅助函数">
+					<param name="Local" value="helpers/security_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="表情辅助函数">
+					<param name="Local" value="helpers/smiley_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="字符串辅助函数">
+					<param name="Local" value="helpers/string_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="文本辅助函数">
+					<param name="Local" value="helpers/text_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="排版辅助函数">
+					<param name="Local" value="helpers/typography_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="URL 辅助函数">
+					<param name="Local" value="helpers/url_helper.html">
+					</OBJECT>
+
+				<LI> <OBJECT type="text/sitemap">
+					<param name="Name" value="XML 辅助函数">
+					<param name="Local" value="helpers/xml_helper.html">
+					</OBJECT>
+			</UL>
+			<LI> <OBJECT type="text/sitemap">
+				<param name="Name" value="本帮助文档制作者博客">
+				<param name="Local" value="http://raoyc.com/fysoft">
+				</OBJECT>
+		</UL>
+</UL>
+</BODY>
+</HTML>

+ 18 - 0
ci_chm.hhp

@@ -0,0 +1,18 @@
+[OPTIONS]
+Compatibility=1.1 or later
+Compiled file=CodeIgniter用户指南.chm
+Contents file=ci_chm.hhc
+Default Font=微软雅黑,9,134
+Default topic=index.html
+Display compile progress=No
+Enhanced decompilation=Yes
+Index file=ci_chm.hhk
+Language=0x804 中文(中国)
+Title=CodeIgniter用户指南
+
+
+[FILES]
+index.html
+
+[INFOTYPES]
+

+ 853 - 0
database/active_record.html

@@ -0,0 +1,853 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>Active Record 模式 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/active_record.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;Active Record 模式    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Active Record 类</h1>
+
+
+<p>CodeIgniter 使用的是修改过的 Active Record 数据库模式。
+这种模式是以较少的程序代码来实现信息在数据库中的获取,插入,更改。
+有时只用一两行的代码就能完成对数据库的操作。
+CodeIgniter 不需要每一个数据库表拥有自己的类。它提供了一个更简单的接口。</p>
+
+<p>不只是简单,使用 Active Record 的一个主要的优点是允许你创建独立的数据库应用程序,因为查询语法是由数据库的适配器来产生的。它可以进行更安全的查询,因为系统会自动的对所有的输入值进行转义。</p>
+
+<p class="important"><strong>注意:</strong>  你如果想要写自己的查询表达式,可以在数据库配置文件中禁止这个类。同时相比 Active Record,使用核心数据库类库和适配器将会使用更少资源。<br /></p>
+
+
+<ul>
+<li><a href="#select">选择数据</a></li>
+<li><a href="#insert">插入数据</a></li>
+<li><a href="#update">更新数据</a></li>
+<li><a href="#delete">删除数据</a></li>
+<li><a href="#chaining">链式方法</a></li>
+<li><a href="#caching">Active Record 缓存</a></li>
+</ul>
+
+
+
+<a name="select">&nbsp;</a>
+<h1>选择数据</h1>
+
+<p>下面的函数帮助你构建 SQL <strong>SELECT</strong>语句。</p>
+
+<p><strong>备注:如果你正在使用 PHP5,你可以在复杂情况下使用链式语法。本页面底部有具体描述。</strong></p>
+
+
+<h2>$this-&gt;db-&gt;get();</h2>
+
+<p>运行选择查询语句并且返回结果集。可以获取一个表的全部数据。</p>
+
+<code>$query = $this-&gt;db-&gt;get('mytable');<br />
+<br />
+// Produces: SELECT * FROM mytable</code>
+
+<p>第二和第三个参数允许你设置一个结果集每页纪录数(limit)和结果集的偏移(offset)</p>
+
+<code>$query = $this-&gt;db-&gt;get('mytable', 10, 20);<br />
+<br />
+// Produces: SELECT * FROM mytable LIMIT 20, 10 (MySQL语法. 其他数据库在语法上略有不同)</code>
+
+<p>注意:第二参数是每页纪录数,第三个参数是偏移</p>
+<p>你会注意到上面的函数由一个变量<kbd>$query</kbd>执行,这个<kbd>$query</kbd>可以用来显示结果集。</p>
+
+<code>$query = $this-&gt;db-&gt;get('mytable');<br />
+<br />
+foreach ($query-&gt;result() as $row)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $row-&gt;title;<br />
+
+&#125;</code>
+
+<p>请访问<a href="results.html">查询结果</a>页查看详细的生成结果的方法。</p>
+
+<h2>$this-&gt;db-&gt;get_where();</h2>
+
+<p>跟上面的函数一样,只是它允许你在函数的第二个参数那里添加一个 where 从句,从而不用使用 db-&gt;where() 这个函数:</p>
+
+<code>$query = $this-&gt;db-&gt;get_where('mytable', array('id' => $id), $limit, $offset);</code>
+
+<p>请阅读下面的 where 函数了解更多。</p>
+<p class="important">注意: get_where() 在以前的版本中写作 getwhere(),这是已经过时的用法,现已从代码中移除 getwhere()。</p>
+
+<h2>$this-&gt;db-&gt;select();</h2>
+<p>允许你在SQL查询中写 SELECT 部分:</p>
+<p><code>
+$this-&gt;db-&gt;select('title, content, date');<br />
+<br />
+$query = $this-&gt;db-&gt;get('mytable');<br />
+<br />
+
+// Produces: SELECT title, content, date FROM mytable</code></p>
+<p class="important"><strong>注意:</strong> 如果你要查询表中的所有列,你可以不用写这个函数。省略后,CodeIgniter 会认为你要查询
+全部列(SELECT *)。</p>
+
+<p>$this-&gt;db-&gt;select() 可接受一个可选的第二个参数。如果你把它设为FALSE, CodeIgniter 将不会使用反引号保护你的字段或者表名
+。这在进行复合查询时很有用。</p>
+<p><code>$this-&gt;db-&gt;select("('SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid", FALSE); <br />
+$query = $this-&gt;db-&gt;get('mytable');<br />
+
+</code></p>
+<h2>$this-&gt;db-&gt;select_max();</h2>
+<p>为你的查询编写一个 "SELECT MAX(field)"。你可以选择性的给出第二个参数,以便重命名结果字段名。</p>
+<p><code>
+$this-&gt;db-&gt;select_max('age');<br />
+$query = $this-&gt;db-&gt;get('members');<br />
+
+// Produces: SELECT MAX(age) as age FROM members<br />
+<br />
+$this-&gt;db-&gt;select_max('age', 'member_age');<br />
+
+$query = $this-&gt;db-&gt;get('members');<br />
+// Produces: SELECT MAX(age) as member_age FROM members</code></p>
+
+<h2>$this-&gt;db-&gt;select_min();</h2>
+<p>为你的查询编写一个 "SELECT MIN(field)" 。与 <dfn>select_max()</dfn> 相似, 你可以选择性地给出第二个参数,用来给结果字段重命名。</p>
+<p><code>
+$this-&gt;db-&gt;select_min('age');<br />
+$query = $this-&gt;db-&gt;get('members');<br />
+
+// 生成: SELECT MIN(age) as age FROM members</code></p>
+
+<h2>$this-&gt;db-&gt;select_avg();</h2>
+<p>为你的查询编写一个 "SELECT AVG(field)" 。与 <dfn>select_max()</dfn> 相似, 你可以选择性地给出第二个参数,用来给结果字段重命名。</p>
+<p><code>
+$this-&gt;db-&gt;select_avg('age');<br />
+$query = $this-&gt;db-&gt;get('members');<br />
+// 生成: SELECT AVG(age) as age FROM members</code></p>
+
+<h2>$this-&gt;db-&gt;select_sum();</h2>
+<p>为你的查询编写一个 "SELECT SUM(field)" 。与 <dfn>select_max()</dfn> 相似, 你可以选择性地给出第二个参数,用来给结果字段重命名。</p>
+<p><code>
+$this-&gt;db-&gt;select_sum('age');<br />
+$query = $this-&gt;db-&gt;get('members');<br />
+// 生成: SELECT SUM(age) as age FROM members</code></p>
+
+<h2>$this-&gt;db-&gt;from();</h2>
+
+<p>允许你编写查询中的FROM部分:</p>
+
+<code>
+$this-&gt;db-&gt;select('title, content, date');<br />
+$this-&gt;db-&gt;from('mytable');<br />
+<br />
+$query = $this-&gt;db-&gt;get();<br />
+<br />
+// 生成: SELECT title, content, date FROM mytable</code>
+
+<p class="important">说明: 正如前面所说,查询中的FROM部分可以在 <dfn>$this-&gt;db-&gt;get()</dfn> 函数中指定,所以你可以根据自己的喜好来选择使用哪个方法。</p>
+
+<h2>$this-&gt;db-&gt;join();</h2>
+
+<p>允许你编写查询中的JOIN部分:</p>
+
+<code>
+$this-&gt;db-&gt;select('*');<br />
+$this-&gt;db-&gt;from('blogs');<br />
+$this-&gt;db-&gt;join('comments', 'comments.id = blogs.id');<br />
+<br />
+$query = $this-&gt;db-&gt;get();<br />
+
+<br />
+// 生成: <br />
+// SELECT * FROM blogs<br />
+// JOIN comments ON comments.id = blogs.id<br />
+</code>
+
+<p>如果你想要在查询中使用多个连接,可以多次调用本函数。</p>
+
+<p>如果你需要指定 JOIN 的类型,你可以通过本函数的第三个参数来指定。可选项包括:left, right, outer, inner, left outer, 以及 right outer.</p>
+
+<code>
+$this-&gt;db-&gt;join('comments', 'comments.id = blogs.id', <strong>'left'</strong>);<br />
+
+<br />
+// 生成: LEFT JOIN comments ON comments.id = blogs.id</code>
+
+<h2>$this-&gt;db-&gt;where();</h2>
+<p>本函数允许你使用四种方法中的一种来设置 <strong>WHERE</strong> 子句:</p>
+
+<p class="important"><strong>说明:</strong> 传递给本函数的所有值都会被自动转义,以便生成安全的查询。</p>
+
+<ol>
+ <li><strong>简单的 key/value 方法:</strong>
+
+ <code>$this-&gt;db-&gt;where('name', $name);
+ <br /><br />// 生成: WHERE name = 'Joe'
+ </code>
+ 
+ <p>请注意等号已经为你添加。</p>
+ 
+ <p>如果你多次调用本函数,那么这些条件会被 <var>AND</var> 连接起来:</p>
+
+ 
+ <code>$this-&gt;db-&gt;where('name', $name);<br />
+ $this-&gt;db-&gt;where('title', $title);<br />
+ $this-&gt;db-&gt;where('status', $status);
+ <br /><br />// WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
+ </code>
+ 
+
+ </li>
+ 
+ <li><strong>自定义 key/value 方法:</strong>
+ 
+ <p>你可以在第一个参数中包含一个运算符,以便控制比较:</p>
+
+ 
+ <code>$this-&gt;db-&gt;where('name !=', $name);<br />
+ $this-&gt;db-&gt;where('id <', $id);
+ <br /><br />// 生成: WHERE name != 'Joe' AND id < 45</code></li>
+
+ <li><strong>关联数组方法:</strong>
+
+ <code>
+ $array = array('name' => $name, 'title' => $title, 'status' => $status);<br /><br />
+ 
+ $this-&gt;db-&gt;where($array);
+ <br /><br />// 生成: WHERE name = 'Joe' AND title = 'boss' AND status = 'active'
+ </code>
+
+ <p>使用这个方法时你也可以包含运算符:</p>
+
+ <code>
+
+ $array = array('name !=' => $name, 'id <' => $id, 'date >' => $date);<br /><br />
+ 
+ $this-&gt;db-&gt;where($array);</code>
+
+ </li>
+  <li><strong>自定义字符串:</strong>
+  
+  <p>你可以手动的编写子句:</p>
+
+  <code>
+  $where = "name='Joe' AND status='boss' OR status='active'";<br /><br />
+  $this-&gt;db-&gt;where($where);</code>
+
+ </li>
+</ol>
+
+<p>$this-&gt;db-&gt;where() 接受可选的第三个参数。如果你将它设置为 FALSE, CodeIgniter 将不会为你那些包含反勾号的字段名或表名提供保护。</p>
+<p><code>   $this-&gt;db-&gt;where('MATCH (field) AGAINST (&quot;value&quot;)', NULL, FALSE);<br />
+</code></p>
+
+<h2>$this-&gt;db-&gt;or_where();</h2>
+<p>本函数与上面的那个几乎完全相同,唯一的区别是本函数生成的子句是用 OR 来连接的:</p>
+
+<code>
+$this-&gt;db-&gt;where('name !=', $name);<br />
+$this-&gt;db-&gt;or_where('id >', $id);
+<br />
+<br />// 生成: WHERE name != 'Joe' OR id > 50</code>
+
+<p class="important">说明: or_where() 以前被叫作 orwhere(), 后者已经过时,现已从代码中移除 orwhere()。</p>
+
+
+<h2>$this-&gt;db-&gt;where_in();</h2>
+<p>生成一段 WHERE field IN ('item', 'item') 查询语句,如果合适的话,用 AND 连接起来。</p>
+
+<p><code>
+    $names = array('Frank', 'Todd', 'James');<br />
+    $this-&gt;db-&gt;where_in('username', $names);<br />
+    // 生成: WHERE username IN ('Frank', 'Todd', 'James')</code></p>
+
+<h2>$this-&gt;db-&gt;or_where_in();</h2>
+<p>生成一段 WHERE field IN ('item', 'item') 查询语句,如果合适的话,用 OR 连接起来。</p>
+<p><code>
+    $names = array('Frank', 'Todd', 'James');<br />
+
+    $this-&gt;db-&gt;or_where_in('username', $names);<br />
+    // 生成: OR username IN ('Frank', 'Todd', 'James')</code></p>
+    
+<h2>$this-&gt;db-&gt;where_not_in();</h2>
+<p>生成一段 WHERE field NOT IN ('item', 'item') 查询语句,如果合适的话,用 AND 连接起来。</p>
+<p><code>
+    $names = array('Frank', 'Todd', 'James');<br />
+    $this-&gt;db-&gt;where_not_in('username', $names);<br />
+
+    // 生成: WHERE username NOT IN ('Frank', 'Todd', 'James')</code></p>
+
+<h2>$this-&gt;db-&gt;or_where_not_in();</h2>
+<p>生成一段 WHERE field NOT IN ('item', 'item') 查询语句,如果合适的话,用 OR 连接起来。</p>
+<p><code>
+    $names = array('Frank', 'Todd', 'James');<br />
+    $this-&gt;db-&gt;or_where_not_in('username', $names);<br />
+    // 生成: OR username NOT IN ('Frank', 'Todd', 'James')</code></p>
+
+<h2>$this-&gt;db-&gt;like();</h2>
+<p>本函数允许你生成 <strong>LIKE</strong> 子句,在做查询时非常有用。</p>
+
+<p class="important"><strong>说明:</strong> 传递给本函数的所有值都会被自动转义。</p>
+
+
+<ol>
+ <li><strong>简单 key/value 方式:</strong>
+
+ <code>$this-&gt;db-&gt;like('title', 'match');
+ <br /><br />// 生成: WHERE title LIKE '%match%' </code>
+  
+ <p>如果你多次调用本函数,那么这些条件将由 <var>AND</var> 连接起来:</p>
+ 
+ <code>$this-&gt;db-&gt;like('title', 'match');<br />
+ $this-&gt;db-&gt;like('body', 'match');
+ <br /><br />
+
+ // WHERE title LIKE '%match%' AND  body LIKE '%match%'</code>
+ 如果你想要控制通配符(%)所出现的位置,你可以使用可选的第三个参数。可用的选项是 'before', 'after' 以及 'both' (这是默认值)。 
+ <code>$this-&gt;db-&gt;like('title', 'match', 'before');
+ <br />
+  // 生成: WHERE title LIKE '%match' <br />
+     <br />
+ $this-&gt;db-&gt;like('title', 'match', 'after'); <br />
+
+// 生成: WHERE title LIKE 'match%' <br />
+<br />
+ $this-&gt;db-&gt;like('title', 'match', 'both'); <br />
+// 生成: WHERE title LIKE '%match%' </code> </li>
+
+如果你不想使用百分号(%),你可以给第三个可选的参数传递一个'none'。
+
+<code>
+  $this-&gt;db-&gt;like('title', 'match', 'none'); <br />
+// Produces: WHERE title LIKE 'match'
+</code>
+
+ <li><strong>关联数组方式:</strong>
+
+ <code>
+
+ $array = array('title' => $match, 'page1' => $match, 'page2' => $match);<br /><br />
+ 
+ $this-&gt;db-&gt;like($array);
+ <br /><br />// WHERE title LIKE '%match%' AND page1 LIKE '%match%' AND page2 LIKE '%match%'</code></li>
+    </ol>
+ 
+ 
+<h2>$this-&gt;db-&gt;or_like();</h2>
+<p>本函数与上面那个函数几乎完全相同,唯一的区别是多个实例之间是用 OR 连接起来的:</p>
+
+<code>
+$this-&gt;db-&gt;like('title', 'match');<br />
+
+$this-&gt;db-&gt;or_like('body', $match);
+<br />
+<br />// WHERE title LIKE '%match%' OR body LIKE '%match%'</code>
+
+
+
+ 
+<p class="important">说明: or_like() 曾经被称为 orlike(), 后者已经过时,现已从代码中移除 orlike()。</p>
+<h2>$this-&gt;db-&gt;not_like();</h2>
+<p>本函数与 <strong>like()</strong> 几乎完全相同,唯一的区别是它生成 NOT LIKE 语句:</p>
+
+<code> $this-&gt;db-&gt;not_like('title', 'match');<br />
+<br />
+// WHERE title NOT LIKE '%match%</code>
+<h2>$this-&gt;db-&gt;or_not_like();</h2>
+<p>本函数与 <strong>not_like()</strong> 几乎完全相同,唯一的区别是多个实例之间是用 OR 连接起来的:</p>
+<code> $this-&gt;db-&gt;like('title', 'match');<br />
+
+$this-&gt;db-&gt;or_not_like('body', 'match'); <br />
+<br />
+// WHERE title  LIKE '%match%' OR body NOT LIKE '%match%'</code>
+<h2>$this-&gt;db-&gt;group_by();</h2>
+<p>允许你编写查询语句中的 GROUP BY 部分:</p>
+ 
+<code>$this-&gt;db-&gt;group_by("title");
+<br /><br />// 生成: GROUP BY title
+</code>
+
+<p>你也可以把多个值作为数组传递过去:</p>
+
+ 
+<code>$this-&gt;db-&gt;group_by(array("title", "date"));
+<br />
+<br />// 生成: GROUP BY title, date</code>
+ 
+<p class="important">说明: group_by() 曾经被称为 groupby(), 后者已经过时,现已从代码中移除 groupby()。</p>
+
+<h2> $this-&gt;db-&gt;distinct();<br />
+</h2>
+<p>为查询语句添加 &quot;DISTINCT&quot; 关键字:</p>
+
+<p><code>$this-&gt;db-&gt;distinct();<br />
+    $this-&gt;db-&gt;get('table');<br />
+        <br />
+    // 生成: SELECT DISTINCT * FROM table</code></p>
+<h2>$this-&gt;db-&gt;having();</h2>
+<p>允许你为你的查询语句编写 HAVING 部分。有两种语法形式,一个或两个参数都可以:</p>
+
+ 
+<code>$this-&gt;db-&gt;having('user_id = 45');
+<br />
+// 生成: HAVING user_id = 45<br />
+<br />
+$this-&gt;db-&gt;having('user_id',  45); <br />
+// 生成: HAVING user_id = 45<br />
+<br />
+</code>
+ 
+<p>你也可以把多个值通过数组传递过去:</p>
+
+
+<p><code>$this-&gt;db-&gt;having(array('title =' => 'My Title', 'id &lt;' =&gt; $id)); <br />
+  <br />
+ // 生成: HAVING title = 'My Title' AND id < 45</code></p>
+<p>如果你正在使用一个由CodeIgniter进行转义保护的数据库,为了避免内容转义,你可以传递可选的第三个参数,并将其设置为FALSE。</p>
+<p><code>$this-&gt;db-&gt;having('user_id',  45); <br />
+// 生成: HAVING `user_id` = 45 (在诸如MySQL等数据库中)
+  <br />
+  $this-&gt;db-&gt;having('user_id',  45, FALSE); <br />
+// 生成: HAVING user_id = 45</code></p>
+ 
+ 
+<h2>$this-&gt;db-&gt;or_having();</h2>
+<p>与 having() 函数几乎完全一样,唯一的区别是多个子句之间是用 &quot;OR&quot; 分隔的。</p>
+<h2>$this-&gt;db-&gt;order_by();</h2>
+<p>帮助你设置一个 ORDER BY 子句。第一个参数是你想要排序的字段名。第二个参数设置结果的顺序,可用的选项包括 <kbd>asc</kbd> (升序)或 <kbd>desc</kbd>(降序), 或 <kbd>random</kbd>(随机)。</p>
+
+ 
+<code>$this-&gt;db-&gt;order_by("title", "desc");
+<br />
+<br />// 生成: ORDER BY title DESC
+</code>
+
+<p>你也可以在第一个参数中传递你自己的字符串:</p>
+ 
+<code>$this-&gt;db-&gt;order_by('title desc, name asc');
+<br />
+<br />// 生成: ORDER BY title DESC, name ASC
+</code>
+
+<p>或者,多次调用本函数就可以排序多个字段。</p>
+
+<p><code>$this-&gt;db-&gt;order_by("title", "desc");<br />
+    $this-&gt;db-&gt;order_by("name", "asc"); <br />
+    <br />
+    // 生成: ORDER BY title DESC, name ASC
+    </code></p>
+<p class="important">说明: order_by() 曾经被称为 orderby(), 后者已经过时,现已从代码中移除 orderby()。</p>
+<p class="important">说明: 目前 Oracle 和 MSSQL 的驱动还不支持随机排序,将被默认设置为 'ASC'(升序)。</p>
+<h2>$this-&gt;db-&gt;limit();</h2>
+<p>限制查询所返回的结果数量:</p>
+
+<code>
+$this-&gt;db-&gt;limit(10);<br />
+<br />
+// 生成: LIMIT 10</code>
+
+
+<p>第二个参数设置的是结果偏移量。</p>
+
+<code>
+$this-&gt;db-&gt;limit(10, 20);<br />
+<br />
+// 生成: LIMIT 20, 10 (仅限MySQL中。其它数据库有稍微不同的语法)</code>
+
+
+<h2>$this-&gt;db-&gt;count_all_results();</h2>
+
+<p>允许你获得某个特定的Active Record查询所返回的结果数量。可以使用Active Record限制函数,例如 where(),  or_where(), like(), or_like() 等等。范例:</p>
+<code>echo $this-&gt;db-&gt;count_all_results('<var>my_table</var>');<br />
+
+// 生成一个整数,例如 25<br />
+<br />
+$this-&gt;db-&gt;like('title', 'match');<br />
+
+$this-&gt;db-&gt;from('<var>my_table</var>');<br />
+echo $this-&gt;db-&gt;count_all_results();<br />
+// 生成一个整数,例如 17 </code>
+
+
+ 
+<a name="insert">&nbsp;</a>
+<h1>插入数据</h1>
+ 
+<h2>$this-&gt;db-&gt;insert();</h2>
+
+<p>生成一条基于你所提供的数据的SQL插入字符串并执行查询。你可以向函数传递 <strong>数组</strong> 或一个 <strong>对象</strong>。下面是一个使用数组的例子:</p>
+
+<code>
+$data = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => 'My title' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => 'My Name' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date' => 'My date'<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$this-&gt;db-&gt;insert('mytable', $data);
+<br /><br />
+// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')</code>
+
+<p>第一个参数包含表名,第二个是一个包含数据的关联数组。</p>
+
+<p>下面是一个使用对象的例子:</p>
+
+<code>
+/*<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;class Myclass &#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $title = 'My Title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $content = 'My Content';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $date = 'My Date';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+*/<br />
+<br />
+$object = new Myclass;<br />
+<br />
+$this-&gt;db-&gt;insert('mytable', $object);
+
+<br /><br />
+// Produces: INSERT INTO mytable (title, content, date) VALUES ('My Title', 'My Content', 'My Date')</code>
+
+<p>第一个参数包含表名,第二个是一个对象。</p>
+
+<p class="important"><strong>注意:</strong> 所有的值已经被自动转换为安全查询。</p>
+
+<h2>$this-&gt;db-&gt;insert_batch();</h2>
+<p>生成一条基于你所提供的数据的SQL插入字符串并执行查询。你可以向函数传递 <strong>数组</strong> 或一个 <strong>对象</strong>。下面是一个使用数组的例子:</p>
+
+<code>
+$data = array(<br/>
+&nbsp;&nbsp;&nbsp;array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => 'My title' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => 'My Name' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date' => 'My date'<br />
+&nbsp;&nbsp;&nbsp;),<br />
+&nbsp;&nbsp;&nbsp;array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => 'Another title' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => 'Another Name' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date' => 'Another date'<br />
+&nbsp;&nbsp;&nbsp;)<br/>
+);<br />
+<br />
+$this-&gt;db-&gt;insert_batch('mytable', $data);
+<br /><br />
+//生成: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')</code>
+
+<p>第一个参数包含表名,第二个是一个包含数据的关联数组。</p>
+
+<p class="important"><strong>注意:</strong> 所有的值已经被自动转换为安全查询。</p>
+
+
+<h2>$this-&gt;db-&gt;set();</h2>
+<p>本函数使您能够设置<dfn>inserts</dfn>(插入)或<dfn>updates</dfn>(更新)值。</p>
+
+<p><strong>它可以用来代替那种直接传递数组给插入和更新函数的方式:</strong> </p>
+
+<code>$this-&gt;db-&gt;set('name', $name);
+<br />
+$this-&gt;db-&gt;insert('mytable');
+<br /><br />
+// 生成: INSERT INTO mytable (name) VALUES ('&#123;$name&#125;')</code>
+
+<p>如果你多次调用本函数,它们会被合理地组织起来,这取决于你执行的是插入操作还是更新操作:</p>
+
+<code>$this-&gt;db-&gt;set('name', $name);<br />
+
+$this-&gt;db-&gt;set('title', $title);<br />
+$this-&gt;db-&gt;set('status', $status);<br />
+$this-&gt;db-&gt;insert('mytable'); </code>
+<p><strong>set()</strong> 也接受可选的第三个参数($escape),如果此参数被设置为 FALSE,就可以阻止数据被转义。为了说明这种差异,这里将对 包含转义参数 和 不包含转义参数 这两种情况的 set() 函数做一个说明。</p>
+<p><code>$this-&gt;db-&gt;set('field', 'field+1', FALSE);<br />
+
+    $this-&gt;db-&gt;insert('mytable'); <br />
+    // 得到 INSERT INTO mytable (field) VALUES (field+1)<br />
+    <br />
+    $this-&gt;db-&gt;set('field', 'field+1');<br />
+    $this-&gt;db-&gt;insert('mytable'); <br />
+
+    // 得到 INSERT INTO mytable (field) VALUES ('field+1')</code></p>
+<p>你也可以将一个关联数组传递给本函数:</p>
+<code>
+$array = array('name' => $name, 'title' => $title, 'status' => $status);<br /><br />
+
+$this-&gt;db-&gt;set($array);<br />
+$this-&gt;db-&gt;insert('mytable');
+</code>
+
+<p>或者一个对象也可以:</p>
+
+<code>
+/*<br />
+&nbsp;&nbsp;&nbsp;&nbsp;class Myclass &#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $title = 'My Title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $content = 'My Content';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $date = 'My Date';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+*/<br />
+<br />
+
+$object = new Myclass;<br />
+<br />
+$this-&gt;db-&gt;set($object);<br />
+$this-&gt;db-&gt;insert('mytable');
+</code>
+
+
+ 
+<a name="update">&nbsp;</a>
+<h1>更新数据</h1>
+ 
+<h2>$this-&gt;db-&gt;update();</h2>
+<p>根据你提供的数据生成并执行一条update(更新)语句。你可以将一个<strong>数组</strong>或者<strong>对象</strong>传递给本函数。这里是一个使用数组的例子:</p>
+
+<code>
+$data = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => $title,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => $name,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date' => $date<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$this-&gt;db-&gt;where('id', $id);<br />
+$this-&gt;db-&gt;update('mytable', $data);
+<br /><br />
+// 生成:<br />
+// UPDATE mytable <br />
+// SET title = '&#123;$title&#125;', name = '&#123;$name&#125;', date = '&#123;$date&#125;'<br />
+// WHERE id = $id</code>
+
+<p>或者你也可以传递一个对象:</p>
+
+<code>
+/*<br />
+&nbsp;&nbsp;&nbsp;&nbsp;class Myclass &#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $title = 'My Title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $content = 'My Content';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var  $date = 'My Date';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+*/<br />
+<br />
+
+$object = new Myclass;<br />
+<br />
+$this-&gt;db-&gt;where('id', $id);<br />
+$this-&gt;db-&gt;update('mytable', $object);
+<br />
+<br />
+// 生成:<br />
+// UPDATE mytable <br />
+// SET title = '&#123;$title&#125;', name = '&#123;$name&#125;', date = '&#123;$date&#125;'<br />
+// WHERE id = $id</code>
+
+
+<p class="important"><strong>说明:</strong> 所有值都会被自动转义,以便生成安全的查询。</p>
+ 
+<p>你会注意到 <dfn>$this-&gt;db-&gt;where()</dfn> 函数的用法,它允许你设置 WHERE 子句。你可以有选择性地将这一信息直接以字符串的形式传递给 update 函数:</p>
+
+<code>$this-&gt;db-&gt;update('mytable', $data, "id = 4");</code>
+
+<p>或者是一个数组:</p>
+
+<code>$this-&gt;db-&gt;update('mytable', $data, array('id' => $id));</code>
+ 
+<p>在进行更新时,你还可以使用上面所描述的 <dfn>$this-&gt;db-&gt;set()</dfn> 函数。</p>
+
+<h2>$this-&gt;db-&gt;update_batch();</h2>
+<p>生成一条update命令是以你提供的数据为基础的,并执行查询。你可以传递一个数组或对象的参数给update_batch()函数。下面是一个使用一个数组作为参数的示例:Generates an update string based on the data you supply, and runs the query. You can either pass an
+<strong>array</strong> or an <strong>object</strong> to the function.  Here is an example using an array:</p>
+
+<code>
+$data = array(<br/>
+&nbsp;&nbsp;&nbsp;array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => 'My title' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => 'My Name 2' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date' => 'My date 2'<br />
+&nbsp;&nbsp;&nbsp;),<br />
+&nbsp;&nbsp;&nbsp;array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => 'Another title' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => 'Another Name 2' ,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date' => 'Another date 2'<br />
+&nbsp;&nbsp;&nbsp;)<br/>
+);<br />
+<br />
+$this-&gt;db-&gt;update_batch('mytable', $data, 'title');
+<br /><br />
+// Produces: <br />
+// UPDATE `mytable` SET `name` = CASE<br />
+// WHEN `title` = 'My title' THEN 'My Name 2'<br />
+// WHEN `title` = 'Another title' THEN 'Another Name 2'<br />
+// ELSE `name` END,<br />
+// `date` = CASE <br />
+// WHEN `title` = 'My title' THEN 'My date 2'<br />
+// WHEN `title` = 'Another title' THEN 'Another date 2'<br />
+// ELSE `date` END<br />
+// WHERE `title` IN ('My title','Another title')</code>
+
+<p>参数1:表名 参数2:如上所示的二维数组 参数3:键名.</p>
+
+<p class="important"><strong>提示:</strong> 所有的值都会自动进行安全性过滤.</p>
+
+
+<a name="delete">&nbsp;</a>
+<h1>删除数据</h1>
+
+
+ 
+
+<h2>$this-&gt;db-&gt;delete();</h2>
+<p>生成并执行一条DELETE(删除)语句。</p>
+
+<code>
+$this-&gt;db-&gt;delete('mytable', array('id' => $id));
+<br /><br />
+// 生成:<br />
+// DELETE FROM mytable <br />
+// WHERE id = $id</code>
+
+<p>第一个参数是表名,第二个参数是where子句。你可以不传递第二个参数,使用 <dfn>where()</dfn> 或者 <dfn>or_where()</dfn> 函数来替代它:</p>
+
+<p><code> $this-&gt;db-&gt;where('id', $id);<br />
+    $this-&gt;db-&gt;delete('mytable'); <br />
+    <br />
+    // 生成:<br />
+    // DELETE FROM mytable <br />
+    // WHERE id = $id</code></p>
+
+<p>如果你想要从一个以上的表中删除数据,你可以将一个包含了多个表名的数组传递给delete()函数。</p>
+<p><code>$tables = array('table1', 'table2', 'table3');<br />
+$this-&gt;db-&gt;where('id', '5');<br />
+$this-&gt;db-&gt;delete($tables);</code></p>
+<p>如果你想要删除表中的全部数据,你可以使用 <dfn>truncate()</dfn> 函数,或者 <dfn>empty_table()</dfn> 函数。</p>
+<p class="important"><strong>说明:</strong>delete方法貌似现在没有办法接收排序参数</p>
+  <p>假设我想删除早期的用户登录日志信息,我的语法可能会是根据登录时间正序排列,然后跟上limit已经有的总日志条数减去想保留的条数,delete方法没有这个参数用来接收,那么我只能直接使用query传递我的sql了</p>
+
+<h2>$this-&gt;db-&gt;empty_table();</h2>
+<p>生成并执行一条DELETE(删除)语句。<code>    $this-&gt;db-&gt;empty_table('mytable'); <br />
+    <br />
+// 生成<br />
+// DELETE FROM mytable</code></p>
+<h2>$this-&gt;db-&gt;truncate();</h2>
+
+<p>生成并执行一条TRUNCATE(截断)语句。</p>
+<code> $this-&gt;db-&gt;from('mytable'); <br />
+$this-&gt;db-&gt;truncate(); <br />
+// 或 <br />
+$this-&gt;db-&gt;truncate('mytable'); <br />
+
+<br />
+// 生成:<br />
+// TRUNCATE TABLE mytable <br />
+</code>
+<p class="important"><strong>说明:</strong> 如果 TRUNCATE 命令不可用,truncate() 将会以 &quot;DELETE FROM table&quot; 的方式执行。</p>
+  
+<h1><a name="chaining">&nbsp;</a>链式方法</h1>
+
+<p>链式方法允许你以连接多个函数的方式简化你的语法。考虑一下这个范例:</p>
+
+<code>
+<dfn>$this-&gt;db</dfn><kbd>-&gt;</kbd><var>select</var>('title')<kbd>-&gt;</kbd><var>from</var>('mytable')<kbd>-&gt;</kbd><var>where</var>('id', $id)<kbd>-&gt;</kbd><var>limit</var>(10, 20);<br />
+<br />
+
+$query = $this-&gt;db-&gt;get();</code>
+
+<p class="important"><strong>说明:</strong> 链式方法只能在PHP 5下面运行。</p>
+
+<p>&nbsp;</p>
+
+<h1><a name="caching">&nbsp;</a>Active Record 缓存</h1>
+
+<p>尽管不是 &quot;真正的&quot; 缓存,Active Record 允许你将查询的某个特定部分保存(或&quot;缓存&quot;)起来,以便在你的脚本执行之后重用。一般情况下,当一次Active Record调用结束,所有已存储的信息都会被重置,以便下一次调用。如果开启缓存,你就可以使信息避免被重置,方便你进行重用。</p>
+
+<p>缓存调用是累加的。如果你调用了两次有缓存的 select(),然后再调用两次没有缓存的 select(),这会导致 select() 被调用4次。有三个可用的缓存函数:</p>
+
+<h2>$this-&gt;db-&gt;start_cache()</h2>
+<p>本函数必须被用来开启缓存。所有类型正确的(下面给出了支持的查询类型) Active Record 查询都会被存储起来供以后使用。</p>
+<h2>$this-&gt;db-&gt;stop_cache()</h2>
+<p>本函数可以被用来停止缓存。</p>
+<h2>$this-&gt;db-&gt;flush_cache()</h2>
+<p>本函数从Active Record 缓存中删除全部项目。</p>
+<p>这里是一个使用范例:</p>
+<p><code>$this-&gt;db-&gt;start_cache();<br />
+$this-&gt;db-&gt;select('field1');<br />
+$this-&gt;db-&gt;stop_cache();<br /><br />
+$this-&gt;db-&gt;get('tablename');<br />
+<br />
+//Generates: SELECT `field1` FROM (`tablename`)<br />
+<br />
+$this-&gt;db-&gt;select('field2');<br />
+$this-&gt;db-&gt;get('tablename');<br />
+<br />
+//Generates:  SELECT `field1`, `field2` FROM (`tablename`)<br />
+<br />
+$this-&gt;db-&gt;flush_cache();<br />
+<br />
+$this-&gt;db-&gt;select('field2');<br />
+$this-&gt;db-&gt;get('tablename');<br />
+<br />
+//Generates:  SELECT `field2` FROM (`tablename`)</code></p>
+
+<p class="important"> <strong>说明:</strong> 下列语句能够被缓存: select, from, join, where, like, group_by, having, order_by, set</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+atans, aykirk, Drice, Fanbin, guapibai, Hex, houlianshan, huanxiangwu, imjie, k7gxn56, localtest, loiynet, longjianghu, ripen, thankwsx, yinzhili, zhangminghua218</div>
+<div id="DocDate">
+最后修改: 2014-01-26 23:35:03</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="helpers.html">查询辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="transactions.html">事务</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 201 - 0
database/caching.html

@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数据库缓存类 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/caching.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;数据库缓存类    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>数据库缓存类</h1>
+
+<p>数据库缓存类允许你把数据库查询结果保存在文本文件中以减少数据库访问。</p>
+
+<p class="important"><strong>重要提示:</strong>&nbsp; 本类在激活后会随数据库驱动自动初始化。<b>切勿</b>手动加载。<br /><br />
+
+<strong>另:</strong>&nbsp; 并非所有查询结果都能被缓存。请仔细阅读本页内容。</p>
+
+<h2>激活缓存</h2>
+
+<p>激活缓存需要三步:</p>
+
+<ul>
+<li>在服务器上创建一个可写的目录以便保存缓存文件。</li>
+<li>在文件 <dfn>application/config/database.php</dfn> 中<dfn>$db['xxxx']['cachedir'] </dfn>设置其目录。</li>
+
+<li>激活缓存特性,可以在文件 <dfn>application/config/database.php</dfn> 中设置全局选项<dfn>$db['xxxx']['cache_on']='TRUE'</dfn>,也可以用以本页下面的方法手动设置。</li>
+</ul>
+
+<p>一旦被激活,每一次含有数据库查询的页面被加载时缓存就会自动发生。</p>
+
+
+<h2>缓存如何工作?</h2>
+
+<p>当页面被浏览时CodeIgniter的查询缓存系统能够动态执行。如果缓存特性被激活,那么在此页面首次被加载时,数据库查询的结果对象将会被序列化并保存在你服务器的文本文件中。而页面再次被加载时缓存文件将会替代数据库查询。如此,在被缓存的页面中,你的数据库使用率会降至0。</p>
+
+<p>只有 <dfn>读类型(read-type)</dfn> (SELECT) 查询会被缓存,因为只有这种查询会产生结果集。
+<dfn>写类型(Write-type)</dfn> (INSERT, UPDATE, 等等) 查询,因为不会产生结果集,故缓存系统不对之进行缓存。</p>
+
+<p>缓存文件<b>不会</b>过期,除非你删掉,否则任何被缓存了的查询会一直存在。缓存系统允许你按页面清除,或把所有缓存都清除掉。一般来说,你可以在某些事件(比如向数据库添加了数据)发生时用下面的函数来清除缓存。</p>
+
+<h2>缓存能够提升站点的性能吗?</h2>
+
+<p>缓存能否获得性能增益,取决于很多因素。如果您有一个负荷很少而高度优化的数据库,你可能不会看到性能提升。
+如果您的数据库正在大量使用,您可能会看到缓存后带来的性能提升,前提是你的文件系统是并没有太多开销。(这里'CI中国社区'要补充一点:生成缓存以及索引缓存等一系列操作(缓存系统自身运算)也是存在开销的.) Remember that caching simply changes how your information is retrieved, shifting it from being a database
+operation to a file-system one.</p>
+
+<p>在一些集群服务器环境,会出现这样的情况,因为文件系统的操作太过频繁,缓存无法正确生成。
+在单一的服务器在共享的环境,高速缓存可能会是有益的。是否能有性能上的提升应还取决于您的数据库。这要看您的具体情况.</p>
+
+<h2>缓存文件如何存储?</h2>
+
+<p>CodeIgniter拥有每个 places the result of EACH query into its own cache file.  Sets of cache files are further organized into
+sub-folders corresponding to your controller functions.  To be precise, the sub-folders are named identically to the
+first two segments of your URI (the controller class name and function name).</p>
+<p>CI把每次查询的结果放置在自己的缓存文件里。根据你的控制器函数,缓存文件集将被进一步组织到子目录中。准确的话,子目录的名称由你的URI的前两段(控件器类名和函数名)决定</p>
+
+<p>For example, let's say you have a controller called <dfn>blog</dfn> with a function called <dfn>comments</dfn> that
+contains three queries.  The caching system will create a cache folder
+called <kbd>blog+comments</kbd>, into which it will write three cache files.</p>
+<p>
+例如,假设你有一个控制器<dfn>blog</dfn>和一个<dfn>comments</dfn>函数,这个函数包括三个查询。缓存系统将创建一个叫做blog+comments的目录并在这个目录里创建三个缓存文件。
+</p>
+
+<p>If you use dynamic queries that change based on information in your URI (when using pagination, for example), each instance of
+the query will produce its own cache file.  It's possible, therefore, to end up with many times more cache files than you have
+queries.</p>
+<p>当你根据URI上的信息动态查询时(例如使用分页),每次查询的实例将创建自己的缓存文件。因此,经过很多次查询后,缓存文件的个数可能比你查询的次数还多。</p>
+
+<h2>管理您的缓存文件</h2>
+
+<p>由于缓存文件不会过期,您需要在您的应用程序中写入删除缓存操作的代码。例如,假设您有一个博客,让用户发表评论。每当有新的评论被提交 您一定希望在某个控制器的方法中删除缓存文件与控制器的功能 .  你会发现如下两个删除功能的介绍,可以帮助您清除数据.</p>
+
+
+<h2>并非所有的数据库方法都带缓存</h2>
+
+<p>最后,我们需要指出的是,由于对象是缓存 是一个简化版本的全部结果对象。出于这一原因,一些不具备数据查询结果的方法不被缓存 如 插入 更新。.</p>
+
+<p>下列方法不能和缓存搭配使用:</p>
+
+<ul>
+<li>num_fields()</li>
+<li>field_names()</li>
+<li>field_data()</li>
+<li>free_result()</li>
+</ul>
+
+<p>同样, the two database resources (result_id and conn_id) are not available when caching, since result resources only
+pertain to run-time operations.</p>
+
+
+<br />
+
+<h1>函数参考</h1>
+
+
+
+<h2>$this-&gt;db-&gt;cache_on()&nbsp; / &nbsp; $this-&gt;db-&gt;cache_off()</h2>
+
+<p>可手动设置缓存开关。如果您想保留某些查询不被缓存 这个功能就十分有用。例如::</p>
+
+<code>
+// 打开缓存开关<br />
+$this-&gt;db-&gt;cache_on();<br />
+$query = $this-&gt;db-&gt;query("SELECT * FROM mytable");<br />
+<br />
+// 使下面这条查询不被缓存<br />
+$this-&gt;db-&gt;cache_off();<br />
+$query = $this-&gt;db-&gt;query("SELECT * FROM members WHERE member_id = '$current_user'");<br />
+
+<br />
+// Turn caching back on<br />
+$this-&gt;db-&gt;cache_on();<br />
+$query = $this-&gt;db-&gt;query("SELECT * FROM another_table");
+</code>
+
+
+<h2>$this-&gt;db-&gt;cache_delete()</h2>
+
+<p>删除缓存文件与特定网页。如果你需要清除缓存后,更新您的数据库.</p>
+
+<p>缓存系统会在缓存存放目录中建立与被访问的URL所对应的子目录,同时把缓存文件存放在那个子目录中.缓存主目录就是您在<dfn>application/config/database.php</dfn> 里面设置的缓存目录.  例如, 如果您正在浏览地址为
+<dfn>example.com/index.php/blog/comments</dfn>的页面, 缓存系统会把所有生成的缓存文件放进一个以
+<dfn>blog+comments</dfn>做为名称的文件夹里.  如果您要删除关于刚才提到的这个例子与之对应的缓存文件 需要执行以下代码:</p>
+
+<code>$this-&gt;db-&gt;cache_delete('/blog', 'comments');</code>
+<font color='red'><strong>注意,手册上写的是 $this-&gt;db-&gt;cache_delete('blog', 'comments');但根据实际测试应该在控制器名字前加斜杠'/'才能正确执行。</strong></font>
+
+<p>如果您不使用任何参数,目前的URI设置将决定什么时候应该清除/更新 该缓存.</p>
+
+
+<h2>$this-&gt;db-&gt;cache_delete_all()</h2>
+
+<p>清除所有所有的缓存文件。例子:</p>
+
+<code>$this-&gt;db-&gt;cache_delete_all();</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+airyland, baiyuxiong, Drice, Hex, iptton, mchipengfei, soyota, yz20sui, 笼中</div>
+<div id="DocDate">
+最后修改: 2011-12-10 18:58:38</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="call_function.html">自定义函数调用</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="forge.html">数据库维护类</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 101 - 0
database/call_function.html

@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>自定义函数调用 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/call_function.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;自定义函数调用    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>自定义函数调用</h1>
+
+<h2>$this-&gt;db-&gt;call_function();</h2>
+
+<p>这个函数可以允许你用一个独立的方法来调用一些 CodeIgniter 中没有定义的PHP数据库函数. 举个例子, 比如说你要调用 <dfn>mysql_get_client_info()</dfn> 这个 CodeIgniter 中并<strong>没有</strong>定义的函数, 你可以这样:</p>
+
+<code>$this-&gt;db-&gt;call_function('<var>get_client_info</var>');</code>
+
+<p>你必须提供一个<strong>没有</strong> <var>mysql_</var> 前缀的函数名来作为第一个参数, 这个前缀会根据当前正在使用的数据库类型来自动添加.
+这样允许你可以在不同的数据库平台下使用同一个函数来操作. 当然了, 并不是所有数据库使用的函数都是一样的, 那么这个函数还是非常易用的.</p>
+
+<p>任何你需要添加的其它参数都放在第一个参数后面.</p>
+
+<code>$this-&gt;db-&gt;call_function('<var>some_function</var>', $param1, $param2, etc..);</code>
+
+
+<p>通常情况下, 你会需要提供一个 connection ID 或是一个 result ID, connection ID 可以这样来获得:</p>
+
+<code>$this-&gt;db-&gt;conn_id;</code>
+
+<p>result ID 则包含在一个结果集(result object)中, 你可以这样来获得它:</p>
+
+<code>$query = $this-&gt;db-&gt;query("SOME QUERY");<br />
+
+<br />
+<var>$query-&gt;result_id;</var></code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+498621, Hex</div>
+<div id="DocDate">
+最后修改: 2008-04-07 11:22:37</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="fields.html">字段元数据</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="caching.html">查询缓存</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 159 - 0
database/configuration.html

@@ -0,0 +1,159 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数据库配置 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/configuration.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;数据库配置    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>数据库配置</h1>
+
+<p>CodeIgniter 有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等..).
+该配置文件位于 <samp>application/config/database.php</samp>. 你也可以通过放置不同的<strong>database.php</strong>文件到特定的环境配置文件夹里来设置特定<a href="../libraries/config.html">环境</a>的数据库连接值.
+
+<p>配件文件存放在一个如下格式的一个多维数组里:</p>
+
+<code>$db['default']['hostname'] = "localhost";<br />
+$db['default']['username'] = "root";<br />
+$db['default']['password'] = "";<br />
+$db['default']['database'] = "database_name";<br />
+$db['default']['dbdriver'] = "mysql";<br />
+$db['default']['dbprefix'] = "";<br />
+$db['default']['pconnect'] = TRUE;<br />
+
+$db['default']['db_debug'] = FALSE;<br />
+$db['default']['cache_on'] = FALSE;<br />
+$db['default']['cachedir'] =  &quot;&quot;;<br />
+$db['default']['char_set'] = "utf8";<br />
+$db['default']['dbcollat'] = "utf8_general_ci";<br />
+$db['default']['swap_pre'] = "";<br />
+$db['default']['autoinit'] = TRUE;<br />
+$db['default']['stricton'] = FALSE;</code>
+
+<p>我们使用多维数组的原因是为了让你随意的存储多个连接值的设置。举例:如果你运行多个环境(development:开发、production:生产、test:测试 等等..),你能为每个环境建立独立的连接组,并在组直接进行切换。举例,设置一个"test"环境,你可以这样做:</p>
+
+<code>$db['test']['hostname'] = "localhost";<br />
+
+$db['test']['username'] = "root";<br />
+$db['test']['password'] = "";<br />
+$db['test']['database'] = "database_name";<br />
+$db['test']['dbdriver'] = "mysql";<br />
+$db['test']['dbprefix'] = "";<br />
+$db['test']['pconnect'] = TRUE;<br />
+$db['test']['db_debug'] = FALSE;<br />
+$db['test']['cache_on'] = FALSE;<br />
+$db['test']['cachedir'] =  &quot;&quot;;<br />
+$db['test']['char_set'] = "utf8";<br />
+$db['test']['dbcollat'] = "utf8_general_ci";<br />
+$db['test']['swap_pre'] = "";<br />
+$db['test']['autoinit'] = TRUE;<br />
+$db['test']['stricton'] = FALSE;</code>
+
+<p>那么,告诉系统使用"test"组,你可以设置位于配置文件中的变量:</p>
+
+<code>$active_group = "test";</code>
+
+<p>注意: "test"的名字是任意的,这可以让你自由设置,我们的主要连接默认使用"default"这个名字,当然,您可以基于您的项目为它起一个更有意义的名字。</p>
+
+<h3>Active Record</h3>
+
+<p> <a href="active_record.html">Active Record 类</a> 可以通过数据库配置文件里的$active_record变量进行全局的设定(允许/禁止 TRUE/FALSE (boolean)). 如果你不用这个类,那么你可以通过将这个变量值设置成FALSE来减少在数据库类初始化时对电脑资源的消耗。</p>
+
+<code>$active_record = TRUE;</code>
+
+<p class="important"><strong>注意:</strong> 一些CodeIgniter的类,例如Sessions,在执行一些函数的时候需要Active Records的支持。</p>
+
+<h3>参数解析:</h3>
+
+<ul>
+<li><strong>hostname</strong> - 数据库的主机名,通常位于本机,可以表示为 "localhost".</li>
+<li><strong>username</strong> - 需要连接到数据库的用户名.</li>
+<li><strong>password</strong> - 登陆数据库的密码.</li>
+
+<li><strong>database</strong> - 你需要连接的数据库名.</li>
+<li><strong>dbdriver</strong> - 数据库类型。如:mysql、postgres、odbc 等。必须为小写字母。</li>
+<li><strong>dbprefix</strong> - 当运行<a href="active_record.html">Active Record</a>查询时数据表的前缀,它允许在一个数据库上安装多个CodeIgniter程序.</li>
+<li><strong>pconnect</strong> - TRUE/FALSE (boolean) - 使用持续连接.</li>
+
+<li><strong>db_debug</strong> - TRUE/FALSE (boolean) - 显示数据库错误信息.</li>
+<li><strong>cache_on</strong> - TRUE/FALSE (boolean) - 数据库查询缓存是否开启,详情请见<a href="caching.html">数据库缓存类</a>。</li>
+<li><strong>cachedir</strong> - 数据库查询缓存目录所在的服务器绝对路径。</li>
+<li><strong>char_set</strong> - 与数据库通信时所使用的字符集。</li>
+<li><strong>dbcollat</strong> - 与数据库通信时所使用的字符规则。<p class="important"><strong>提示:</strong> 就MYSQL或MYSQLi数据库而言,如果服务器运行环境PHP版本小于5.2.3、MYSQL版本小于5.0.7,那么该项设置仅被用来备份(由数据库维护类DB Forge所创建查询)。如果使用多字节字符集并且使用低版本PHP环境中不兼容的mysql_real_escape_string()函数,它将使网站更容易受到SQL注入的危险。</p></li>
+<li><strong>swap_pre</strong> - 替换默认的dbprefix表前缀,该项设置对于分布式应用是非常有用的,你可以在查询中使用由最终用户定制的表前缀。</li>
+  <p class="important"><strong>曜日晨阳注:  </strong>如果设置了 $db['default']['dbprefix'] 的值
+同时也设置了 $db['default']['swap_pre'] 的值,则会将查询代码中和$db['default']['swap_pre'] 的值一致的字符替换成 $db['default']['dbprefix'] 的值,如果没有设置 $db['default']['swap_pre'] 值,就直接在数据库表名前面加上 $db['default']['dbprefix'] 值。</p>
+<li><strong>autoinit</strong> - 当数据库类库(database library)被载入的时候是否需要自动连接数据库,如果设置为FALSE,将在首次查询前进行连接。</li>
+<li><strong>stricton</strong> - TRUE/FALSE (boolean) - 是否强制使用 "Strict Mode" 连接, 在开发程序时,使用 strict SQL 是一个好习惯。</li>
+<li><strong>port</strong> - 数据库端口号.  要使用这个值,你应该添加一行代码到数据库配置数组。<code>$db['default']['port'] =  5432;</code></li>
+</ul>
+
+<p class="important"><strong>提示:</strong> 并不是所有的值都是必须的,这取决与您所使用的数据库平台,如(MySQL, Postgres, 等.)
+例如, 当你使用SQLite时,你不需要提供username 或 password, 数据库名字就是您数据库文件的路径. 以上内容假定您使用的是 MySQL 数据库.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+amos, chenshenghan, Drice, Hex, pipi95, tanqimin, thankwsx, tinsn, yinzhili, zehee, 曜日晨阳</div>
+<div id="DocDate">
+最后修改: 2013-03-19 05:07:44</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="examples.html">入门: 例子</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="connecting.html">连接到你的数据库</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 185 - 0
database/connecting.html

@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>连接 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/connecting.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;连接    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>连接你的数据库</h1>
+
+<p>有两种方法连接数据库:</p>
+
+<h2>自动连接</h2>
+
+<p> “自动连接” 功能将在每一个页面加载时被自动实例化数据库类。要启用“自动连接”,可在<kbd>application/config/autoload.php</kbd>中的 library 数组里添加 <var>database</var>:</p>
+<code>$autoload['libraries'] = array('database');</code>
+
+<h2>手动连接</h2>
+
+<p>如果仅仅是一部分页面要求数据库连接,你可以在你有需要的函数里手工添加如下代码或者在你的类里手工添加以供该类使用。</p>
+
+<code>$this-&gt;load-&gt;database();</code>
+
+<p class="important">如果以上函数的第一个参数<strong>没有</strong>任何信息,它将会在系统指定的数据库配置文件中寻找,对多数人而言,这是一个首选的方法。</p>
+
+<h3>可用的参数</h3>
+
+<ol>
+ <li>数据库连接值,用数组或DSN字符串传递。</li>
+ <li>是否返回连接ID,TRUE/FALSE (boolean),默认值为FALSE (参阅下面的“连接多数据库”)。</li>
+    <li>是否启用 Active Record 类,TRUE/FALSE (boolean),默认值为 NULL。如有疑问,请查看<kbd>/system/core/Loader.php</kbd>的<var>database()</var>方法</li>
+</ol>
+
+
+<h3>手动连接到一个数据库</h3>
+
+<p>函数的第一个参数能够从你的配置文件中<strong>自由的</strong>指定你自定义的详细的数据库配置信息。或者你甚至可以不通过指定的配置文件来提交数据库的连接属性。
+样例:</p>
+
+<p>要从你的配置文件中选择一个指定的数组你可以这么做:</p>
+
+<code>$this-&gt;load-&gt;database('<samp>group_name</samp>');</code>
+
+<p><samp>group_name</samp>指的是存在于你的配置文件中的带有数据库连接信息的数组的名字。</p>
+
+
+<p>要手动连接你要求的数据库你可以通过定义以下数组来实现:</p>
+
+<code>$config['hostname'] = "localhost";<br />
+
+$config['username'] = "myusername";<br />
+$config['password'] = "mypassword";<br />
+$config['database'] = "mydatabase";<br />
+$config['dbdriver'] = "mysql";<br />
+$config['dbprefix'] = "";<br />
+$config['pconnect'] = FALSE;<br />
+$config['db_debug'] = TRUE;<br />
+$config['cache_on'] = FALSE;<br />
+$config['cachedir'] = "";<br />
+$config['char_set'] = "utf8";<br />
+$config['dbcollat'] = "utf8_general_ci";<br />
+<br />
+
+$this-&gt;load-&gt;database(<samp>$config</samp>);</code>
+
+<p>想得到每一个配置属性的详细信息可点击 <a href="configuration.html">这里</a>.</p>
+
+<p>或者你可以以DSN的方式提交数据库配置信息。 DSN必然通过以下方式实现:</p>
+
+<code>$dsn = 'dbdriver://username:password@hostname/database';<br />
+<br />
+$this-&gt;load-&gt;database(<samp>$dsn</samp>);</code>
+
+<p>当用 DSN 字符串连接时,要覆盖配置默认值,则添加配置变量为查询字符串。</p>
+
+<code>$dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&amp;dbcollat=utf8_general_ci&amp;cache_on=true&amp;cachedir=/path/to/cache';<br />
+<br />
+$this-&gt;load-&gt;database(<samp>$dsn</samp>);</code>
+
+<p class="important">当你的dbdriver值为<strong>mysqli</strong>来进行远程连接时,切记要指定一个参数<strong>Port</strong>为远程mysql端口</p>
+
+<h2>连接多数据库</h2>
+
+<p>如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:</p>
+
+
+<code>$DB1 = $this-&gt;load-&gt;database('group_one', TRUE);<br />
+$DB2 = $this-&gt;load-&gt;database('group_two', TRUE);
+</code>
+
+<p>注意:改变 "group_one" 和 "group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。</p>
+
+<p>通过设置函数的第二个参数为TRUE(boolean)来返回一个数据库对象。</p>
+
+<div class="important">
+<p>当你使用这种方法,你将用对象名来执行操作命令而不是用户向导模式,也就是说,你将用以下方式执行数据库操作:</p>
+
+<p>$DB1-&gt;query();<br />$DB1-&gt;result();<br /> etc...</p>
+
+<p>而不是:</p>
+
+<p>$this-&gt;db-&gt;query();<br />$this-&gt;db-&gt;result();<br /> etc...</p>
+
+<br /><p>译注:要连接多个数据库请先设置 config/database.php 中的 $db['xxxxxx']['pconnect'] = FALSE; 这是 mysql_pconnect() 造成的问题,和 CI 无关。</p>
+
+</div>
+
+<h2>重新连接 / 保持连接有效</h2>
+
+<p>当你正在进行一些重量级的PHP操作(例如处理图片)时,如果超出了数据库服务器的空闲超时限度,你应该考虑在执行更多查询之前使用<dfn>reconnect()</dfn>方法来向服务器发送ping命令,这样可以优雅地保持或重新建立连接。</p>
+
+<code>$this-&gt;db-&gt;reconnect();</code>
+
+<h2>手动关闭连接</h2>
+
+<p>虽然CodeIgniter 可以智能的管理并自动关闭数据库连接,你仍可以用下面的方法显式的关闭掉。</p>
+
+<code>$this-&gt;db-&gt;close();</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Fanbin, Hex, lishen2, phper08, qixingyue, szlinz, thankwsx, wangjunjie871111, xian366, yinzhili, zehee, zfm1988, 笼中</div>
+<div id="DocDate">
+最后修改: 2013-09-08 15:52:16</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="configuration.html">数据库配置</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="queries.html">查询</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 213 - 0
database/examples.html

@@ -0,0 +1,213 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数据库例子代码 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/examples.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;数据库例子代码    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>数据库快速入门例子代码</h1>
+
+<p>下面的内容将简单说明怎样使用数据库。更详细的信息请阅读各个函数的单独介绍页面。</p>
+
+
+<h2>初始化数据库类</h2>
+
+<p>下面的代码将依据你的<a href="configuration.html">数据库配置</a>载入并初始化数据库类:</p>
+
+<code>$this->load->database();</code>
+
+<p>一旦被载入,你可以在任何地方像这样使用它:</p>
+
+<p>注意: 如果你的所有页面均要求初始化数据库类,你可以让它自动加载。详见 <a href="connecting.html">数据库连接</a>。</p>
+
+
+<h2>多结果标准查询(对象形式)</h2>
+
+<code>$query = $this->db->query('SELECT name, title, email FROM my_table');<br />
+<br />
+foreach ($query->result() as $row)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $row->title;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $row->name;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $row->email;<br />
+
+&#125;<br />
+<br />
+echo 'Total Results: ' . $query->num_rows();
+</code>
+
+<p>上面的<dfn>result()</dfn>函数返回一个<strong>对象</strong>的数组。例如:$row->title</p>
+
+
+<h2>多结果标准查询(数组形式)</h2>
+
+<code>$query = $this->db->query('SELECT name, title, email FROM my_table');<br />
+<br />
+foreach ($query->result_array() as $row)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $row['title'];<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $row['name'];<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $row['email'];<br />
+&#125;</code>
+
+<p>上面的<dfn>result_array()</dfn>函数返回一个带下标的数组。例如:$row['title']</p>
+
+
+<h2>测试查询结果</h2>
+
+<p>如果你的查询可能不返回结果,我们建议你先使用 <dfn>num_rows()</dfn>函数来测试:</p>
+
+<code>
+$query = $this->db->query("YOUR QUERY");<br />
+<br />
+if ($query->num_rows() > 0)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;foreach ($query->result() as $row)<br />
+&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->title;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->name;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row->body;<br />
+&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;
+</code>
+
+
+
+
+<h2>单结果标准查询(对象形式)</h2>
+
+<code>$query = $this->db->query('SELECT name FROM my_table LIMIT 1');<br />
+<br />
+$row = $query->row();<br />
+
+echo $row->name;<br />
+</code>
+
+<p>上面的<dfn>row()</dfn>函数返回一个 <strong>对象</strong>。例如:$row->name</p>
+
+
+<h2>单结果标准查询(数组形式)</h2>
+
+<code>$query = $this->db->query('SELECT name FROM my_table LIMIT 1');<br />
+
+<br />
+$row = $query->row_array();<br />
+echo $row['name'];<br />
+</code>
+
+<p>上面的<dfn>row_array()</dfn>函数返回一个 <strong>数组</strong>。例如:$row['name']</p>
+
+
+<h2>标准插入(insert)</h2>
+
+<code>
+$sql = "INSERT INTO mytable (title, name) <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";<br />
+<br />
+$this->db->query($sql);<br />
+<br />
+echo $this->db->affected_rows();
+</code>
+
+
+
+
+<h2>快捷查询</h2>
+
+<p><a href="active_record.html">快捷查询类</a>能为我们提供快速取得数据的途径:</p>
+
+<code>
+$query = $this->db->get('table_name');<br />
+<br />
+foreach ($query->result() as $row)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $row->title;<br />
+
+&#125;</code>
+
+<p>上面的<dfn>get()</dfn>函数返回数据表中所有的结果。
+<a href="active_record.html">快捷查询类</a> 提供所有数据库操作的快捷函数。</p>
+
+
+<h2>快捷插入(insert)</h2>
+
+<code>
+
+$data = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => $title,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => $name,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'date' => $date<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$this->db->insert('mytable', $data);
+<br /><br />
+// Produces: INSERT INTO mytable (title, name, date) VALUES ('&#123;$title&#125;', '&#123;$name&#125;', '&#123;$date&#125;')</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+gaochao, Hex, longbill</div>
+<div id="DocDate">
+最后修改: 2008-01-02 20:21:50</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="index.html">数据库类</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="configuration.html">数据库配置</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 173 - 0
database/fields.html

@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>字段元数据 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/fields.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;字段元数据    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>字段数据</h1>
+
+<h2>$this-&gt;db-&gt;list_fields()</h2>
+<p>Returns an array containing the field names. This query can be called two ways:</p>
+<br>返回一个包含字段名称的数组。这个查询可以用两种方法调用:
+<br/><p>
+1.您可以将表名称提供给<dfn>$this-&gt;db-&gt;list_fields()</dfn>调用。
+
+<code>
+$fields = $this-&gt;db-&gt;list_fields('table_name');<br /><br />
+
+foreach ($fields as $field)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;echo $field;<br />
+&#125;
+</code>
+<br/>
+2.您可以将组合查询语句传递给query函数执行并返回:
+
+<code>
+$query = $this-&gt;db-&gt;query('SELECT * FROM some_table');
+<br /><br />
+
+foreach ($query-&gt;list_fields() as $field)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;echo $field;<br />
+&#125;
+</code>
+
+
+<h2>$this-&gt;db-&gt;field_exists()</h2>
+
+<p>Sometimes it's helpful to know whether a particular field exists before performing an action.
+Returns a boolean TRUE/FALSE.  Usage example:</p>
+<br/>
+在执行一个动作前就先确认某个特殊字段是否存在在某些时候非常有用。返回一个布尔值:TRUE/FALSE。实例:
+<code>
+if ($this-&gt;db-&gt;field_exists('field_name', 'table_name'))<br />
+&#123;<br />
+&nbsp;&nbsp; // some code...<br />
+&#125;
+</code>
+
+<p>Note:  Replace <em>field_name</em> with the name of the column you are looking for, and replace
+
+<em>table_name</em> with the name of the table you are looking for.</p>
+<br/>
+注解:替换<em>field_name</em>为您要查找的字段名称,同时替换<em>table_name</em>为您要查找表名。
+
+
+
+<h2>$this-&gt;db-&gt;field_data()</h2>
+<p>Returns an array of objects containing field information.</p>
+<br/>
+返回一个包含字段信息的对象数组。
+<p>Sometimes it's helpful to gather the field names or other metadata, like the column type, max length, etc.</p>
+<br/>
+收集字段的名称或者其它元数据在某些时候非常有用,例如列的数据类型、最大长度等。
+
+<p class="important">Note: Not all databases provide meta-data.</p>
+<br/>注解:并非所有数据库都提供元数据。
+
+<p>Usage example:</p>
+<br/>
+例子:
+
+<code>
+$fields = $this-&gt;db-&gt;field_data('table_name');<br /><br />
+
+foreach ($fields as $field)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;echo $field-&gt;name;<br />
+&nbsp;&nbsp;&nbsp;echo $field-&gt;type;<br />
+&nbsp;&nbsp;&nbsp;echo $field-&gt;max_length;<br />
+
+&nbsp;&nbsp;&nbsp;echo $field-&gt;primary_key;<br />
+&#125;
+</code>
+
+<p>If you have run a query already you can use the result object instead of supplying the table name:</p>
+<br/>如果您想执行一个已有的查询时你可用返回项替换掉表格名称:
+
+<code>
+$query = $this-&gt;db-&gt;query("YOUR QUERY");<br />
+$fields = $query-&gt;field_data();
+</code>
+
+
+<p>The following data is available from this function if supported by your database:</p>
+<br/>
+如果你的数据库支持,以下数据在这个函数中将是可用的:
+
+<ul>
+<li>name - 列名称</li>
+<li>max_length - 列的最大长度</li>
+<li>primary_key - 1 如果此列被定义为主键</li>
+<li>type - 指定列的数据类型</li>
+</ul><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+analyzer, Drice, Hex, hui314, loiynet</div>
+<div id="DocDate">
+最后修改: 2012-10-25 17:10:40</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="table_data.html">数据库表数据</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="call_function.html">自定义函数调用</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 232 - 0
database/forge.html

@@ -0,0 +1,232 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数据库维护类 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/forge.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;数据库维护类    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>数据库维护类</h1>
+
+<p>该类包含了一些帮助你管理数据库的函数。</p>
+
+<h3>目录</h3>
+
+<ul>
+<li><a href="#init">初始化</a></li>
+<li><a href="#create">创建数据库</a></li>
+<li><a href="#drop">删除数据库</a></li>
+<li><a href="#add_field">添加字段</a></li>
+<li><a href="#add_key">添加主键</a></li>
+<li><a href="#create_table">创建表</a></li>
+<li><a href="#drop_table">删除表</a></li>
+<li><a href="#rename_table">重命名表</a></li>
+<li><a href="#modifying_tables">修改表</a></li>
+</ul>
+
+
+<h2><a name="init"></a>初始化</h2>
+
+<p class="important"><strong>注意:</strong>&nbsp; 欲初始化数据库维护类,请确保你的数据库驱动已经运行,因为该类依赖于数据库驱动。</p>
+
+<p>使用如下方法载入数据库维护类:</p>
+
+<code>$this-&gt;load-&gt;dbforge()</code>
+
+<p>一旦初始化,就可以使用<dfn>$this-&gt;dbforge</dfn> 对象访问类中函数:</p>
+
+<code>$this-&gt;dbforge-&gt;some_function()</code>
+<h2><a name="create"></a>$this-&gt;dbforge-&gt;create_database('db_name')</h2>
+
+<p>允许你创建由第一个参数指定的数据库。根据成功或失败,返回 TRUE/FALSE:</p>
+
+<code>if ($this-&gt;dbforge-&gt;create_database('my_db'))<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp; echo '数据库已经被创建!';<br />
+&#125;</code>
+
+
+<h2><a name="drop"></a>$this-&gt;dbforge-&gt;drop_database('db_name')</h2>
+
+<p>允许你删除由第一个参数指定的数据库。根据成功或失败,返回 TRUE/FALSE:</p>
+
+<code>if ($this-&gt;dbforge-&gt;drop_database('my_db'))<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp; echo '数据库已经被删除!';<br />
+&#125;</code>
+
+
+<h1>创建和删除表</h1>
+<p>创建表时有这么几件事需要你来完成。添加字段,添加主键和修改列。CodeIgniter提供如下方法完成这些操作。</p>
+<h2><a name="add_field" id="add_field"></a>添加字段</h2>
+<p>字段由关联数组创建。在数组中必须包含与字段数据类型相关的“类型”键。例如,INT,VARCHAR,TEXT等等。许多数据类型(如 VARCHAR)还需要“约束”键。</p>
+<p><code>$fields = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'users' =&gt; array(<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'type' =&gt; 'VARCHAR',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'constraint' =&gt; '100',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+    <br />
+// 当字段被添加后,将被翻译为 &quot;users VARCHAR(100)&quot; .</code></p>
+<p>此外,还可以使用下列键/值:</p>
+<ul>
+    <li>unsigned/true:&nbsp;在字段定义中生成“UNSIGNED”。</li>
+    <li>default/value:&nbsp;在字段定义中生成一个缺省值。</li>
+    <li>null/true:&nbsp;在字段定义中生成“NULL” 。没有这个,字段缺省为“NOT NULL”。</li>
+    <li>auto_increment/true:&nbsp;为字段生成自动增量标记。注意,字段类型必须支持自动增量标记,如整型。</li>
+    </ul>
+<p><code>$fields = array(<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'blog_id' =&gt; array(<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'type' =&gt; 'INT',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'constraint' =&gt; 5, <br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'unsigned' =&gt; TRUE,<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'auto_increment' =&gt; TRUE<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'blog_title' =&gt; array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'type' =&gt; 'VARCHAR',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'constraint' =&gt; '100',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'blog_author' =&gt; array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'type' =&gt;'VARCHAR',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'constraint' =&gt; '100',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'default' =&gt; 'King of Town',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'blog_description' =&gt; array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'type' =&gt; 'TEXT',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'null' =&gt; TRUE,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+</code></p>
+<p>字段定义后,使用<dfn>$this-&gt;dbforge-&gt;add_field($fields);</dfn> 添加字段。接下来调用 <dfn>create_table()</dfn> 函数创建表。</p>
+<h3>$this-&gt;dbforge-&gt;add_field()</h3>
+<p>添加字段函数将接受上面这个数组。</p>
+<h3>传递字符串作为字段定义</h3>
+<p>如果你确切地知道自己要如何创建一个字段,你可以将字符串作为字段定义传递给 add_field():</p>
+<p><code>$this-&gt;dbforge-&gt;add_field(&quot;label varchar(100) NOT NULL DEFAULT 'default label'&quot;);</code></p>
+<p class="important">说明: 多次调用 <dfn>add_field()</dfn> 是累加性的。</p>
+<h3>创建一个 id 字段</h3>
+<p>创建id字段有一种特殊的例外情况。一个id类型的字段将会被自动地赋值为 INT(9) 类型的自动递增主键。</p>
+<p><code>$this-&gt;dbforge-&gt;add_field('id');<br />
+    // 生成 id INT(9) NOT NULL AUTO_INCREMENT</code></p>
+<h2><a name="add_key" id="add_key"></a>添加键</h2>
+<p>一般来说,你会需要表中有键。这是通过 <dfn>$this-&gt;dbforge-&gt;add_key('field')</dfn> 来实现的。可选的第二个参数如果被设置为TRUE,那么就会生成一个主键。请注意 <dfn>add_key()</dfn> 后面必须调用 <dfn>create_table()</dfn>。</p>
+<p>多列的非主键必须通过数组来传递。下面的示例输出是用于 MySQL 的。</p>
+<p><code>$this-&gt;dbforge-&gt;add_key('blog_id', TRUE);<br />
+    // 生成 PRIMARY KEY `blog_id` (`blog_id`)<br />
+    <br />
+    $this-&gt;dbforge-&gt;add_key('blog_id', TRUE);<br />
+    $this-&gt;dbforge-&gt;add_key('site_id', TRUE);<br />
+    // 生成 PRIMARY KEY `blog_id_site_id` (`blog_id`, `site_id`)<br />
+    <br />
+    $this-&gt;dbforge-&gt;add_key('blog_name');<br />
+    // 生成 KEY `blog_name` (`blog_name`)<br />
+    <br />
+    $this-&gt;dbforge-&gt;add_key(array('blog_name', 'blog_label'));<br />
+    // 生成 KEY `blog_name_blog_label` (`blog_name`, `blog_label`)</code></p>
+<p class="important">译者注:此处存在BUG!经验证,以上代码创建的是两个单独的非主键,而不是一个多列的非主键。有关此BUG的解决方案,详见<a href="#" title='有关BUG的一个可行的解决方案'>CI中国论坛!</a></p>
+<h2><a name="create_table" id="create_table"></a>创建表</h2>
+<p>声明了字段和键之后,你就可以使用下面的方法来创建一个表:</p>
+<p><code>$this-&gt;dbforge-&gt;create_table('table_name');<br />
+// 生成 CREATE TABLE table_name</code></p>
+<p>可选的第二个参数如果被设置为TRUE,那么,表的定义中就会添加 &quot;IF NOT EXISTS&quot; 子句</p>
+<p><code>$this-&gt;dbforge-&gt;create_table('table_name', TRUE);<br />
+// 生成 CREATE TABLE IF NOT EXISTS table_name</code></p>
+<h2><a name="drop_table" id="drop_table"></a>删除表</h2>
+<p>执行一条 DROP TABLE 语句</p>
+<p><code>$this-&gt;dbforge-&gt;drop_table('table_name');<br />
+ // 生成 DROP TABLE IF EXISTS  table_name</code></p>
+<h2><a name="rename_table" id="rename_table"></a>重命名表</h2>
+<p>执行一次表重命名</p>
+<p><code>$this-&gt;dbforge-&gt;rename_table('old_table_name', 'new_table_name');<br />
+ // 生成 ALTER TABLE old_table_name RENAME TO new_table_name</code></p>
+<h1><a name="modifying_tables" id="modifying_tables"></a>修改表</h1>
+<h2>$this-&gt;dbforge-&gt;add_column()</h2>
+<p>这里的 add_column() 函数用来修改已经存在的表,并添加一个或多个字段。 它接受与上面相同的数组参数,并可用于无限数量的附加字段。</p>
+<p><code>$fields = array(<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'preferences' =&gt; array('type' =&gt; 'TEXT')<br />
+);<br />
+$this-&gt;dbforge-&gt;add_column('table_name', $fields);<br />
+<br />
+// 生成 ALTER TABLE table_name ADD    preferences TEXT</code></p>
+<h2>$this-&gt;dbforge-&gt;drop_column()</h2>
+<p>用于从表中移除一个列。 </p>
+<p><code>$this-&gt;dbforge-&gt;drop_column('table_name', 'column_to_drop');</code></p>
+<h2>$this-&gt;dbforge-&gt;modify_column()</h2>
+<p>本函数的用法与 add_column() 几乎完全相同,唯一的区别在于,本函数的用途是修改一个已存在的列,而不是添加一个新的。要重命名的话,你可以在字段定义数组中添加一个 &quot;name&quot; 键。</p>
+<p><code>$fields = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'old_name' =&gt; array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' =&gt; 'new_name',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'type' =&gt; 'TEXT',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+);<br />
+$this-&gt;dbforge-&gt;modify_column('table_name', $fields);<br />
+    <br />
+    // 生成 ALTER TABLE table_name CHANGE    old_name new_name TEXT </code></p>
+<p>&nbsp;</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+crazyfriday, Hex, ianyang, yeto, yinzhili, 笼中</div>
+<div id="DocDate">
+最后修改: 2013-02-14 14:07:53</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="caching.html">数据库缓存类</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="utilities.html">数据库工具类</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 171 - 0
database/helpers.html

@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>查询辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/helpers.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;查询辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>查询辅助函数</h1>
+
+<h2>$this-&gt;db-&gt;insert_id()</h2>
+<br/>
+这个ID号是执行数据插入时的ID。
+
+<h2>$this-&gt;db-&gt;affected_rows()</h2>
+<p>Displays the number of affected rows, when doing "write\" type queries (insert, update, etc.).</p>
+<br/>
+当执行写入操作(insert,update等)的查询后,显示被影响的行数。<br/>
+<p>Note:  In MySQL "DELETE FROM TABLE" returns 0 affected rows. The database class has a small hack that allows it to return the
+correct number of affected rows.  By default this hack is enabled but it can be turned off in the database driver file.</p>
+<br/>
+注意:在 MySQL 中“DELETE FROM TABLE”的被影响行数将会返回 0。database 类有一个小 hack 允许返回正确的被影响的行数。默认情况下这个 hack 功能是打开的但可以在数据库驱动文件中关闭它。
+
+<h2>$this-&gt;db-&gt;count_all();</h2>
+<p>Permits you to determine the number of rows in a particular table.  Submit the table name in the first parameter. Example:</p>
+<br/>
+计算出指定表的总行数并返回。在第一个参数中写入被提交的表名。例如:
+<code>echo $this-&gt;db-&gt;count_all('<var>my_table</var>');<br />
+
+<br />
+// Produces an integer, like 25
+</code>
+
+
+<h2>$this-&gt;db-&gt;platform()</h2>
+<p>Outputs the database platform you are running (MySQL, MS SQL, Postgres, etc...):</p>
+<p>输出系统使用的数据库平台(MySQL, MS SQL, Postgres……)</p>
+<code>echo $this-&gt;db-&gt;platform();</code>
+
+
+<h2>$this-&gt;db-&gt;version()</h2>
+<p>Outputs the database version you are running:</p><br/>
+输出系统正在运行的数据库版本号
+
+<code>echo $this-&gt;db-&gt;version();</code>
+
+
+<h2>$this-&gt;db-&gt;last_query();</h2>
+<p>Returns the last query that was run (the query string, not the result).  Example:</p>
+<p>返回最后运行的查询(是查询语句,不是查询结果)</p>
+
+<code>$str = $this-&gt;db-&gt;last_query();<br />
+<br />
+// Produces:  SELECT * FROM sometable....
+</code>
+
+
+<p>The following two functions help simplify the process of writing database INSERTs and UPDATEs.</p>
+<br/>
+下面的两个函数简化了写入数据库的insert和update操作。
+
+
+<h2>$this-&gt;db-&gt;insert_string(); </h2>
+<p>This function simplifies the process of writing database inserts. It returns a correctly formatted SQL insert string. Example:</p>
+<br/>
+这个函数简化了写入数据库的insert函数。它返回一个标准的SQL insert字符串。例如:
+
+<code>$data = array('name' => $name, 'email' => $email, 'url' => $url);<br />
+<br />
+$str = $this-&gt;db-&gt;insert_string('table_name', $data);
+</code>
+
+<p>The first parameter is the table name, the second is an associative array with the data to be inserted.  The above example produces:</p>
+<br/>
+第一个参数是表名,第二个是被插入数据的联合数组,上面的例子生成的效果为:
+<code>INSERT INTO table_name (name, email, url) VALUES ('Rick', 'rick@example.com', 'example.com')</code>
+
+<p class="important">Note: Values are automatically escaped, producing safer queries.</p>
+<br/>
+注解:被插入的数据会被自动转换和过滤,生成安全的查询语句。
+
+
+
+<h2>$this-&gt;db-&gt;update_string(); </h2>
+<p>This function simplifies the process of writing database updates. It returns a correctly formatted SQL update string. Example:</p>
+<br/>
+这个函数简化了写入数据库的update操作。它返回一条格式正确的SQL update字符串。例如:
+
+<code>$data = array('name' => $name, 'email' => $email, 'url' => $url);<br />
+<br />
+$where = "author_id = 1 AND status = 'active'";
+<br /><br />
+$str = $this-&gt;db-&gt;update_string('table_name', $data, $where);
+
+</code>
+
+<p>The first parameter is the table name, the second is an associative array with the data to be updated, and the third parameter is the "where" clause. The above example produces:</p>
+<br />
+第一个参数是表名,第二个是被更新数据的关联数组,第三个参数是“where”子句。上面的例子生成的效果为:
+<code> UPDATE table_name SET name = 'Rick', email = 'rick@example.com', url = 'example.com' WHERE author_id = 1 AND status = 'active'</code>
+
+<p class="important">Note: Values are automatically escaped, producing safer queries.</p>
+<br/>
+注解:被插入的数据会被自动转换和过滤,生成安全的查询语句。<p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+analyzer, Hex, IT不倒翁, loiynet, sexy22</div>
+<div id="DocDate">
+最后修改: 2012-10-25 17:00:51</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="results.html">查询结果</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="active_record.html">Active Record 模式</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 93 - 0
database/index.html

@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数据库类库 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/index.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;数据库类库    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>数据库类</h1>
+<p>CodeIgniter 内置了速度快、功能强大的数据库类作为数据库的中间抽象层。数据库类支持传统架构以及 Active Record 架构。类中的数据库函数使用简单明了的语法。</p>
+<ul>
+    <li><a href="configuration.html">数据库配置</a></li>
+    <li><a href="examples.html">入门:用法举例</a></li>
+    <li><a href="connecting.html">连接数据库</a></li>
+    <li><a href="queries.html">查询</a></li>
+    <li><a href="results.html">生成查询结果</a></li>
+    <li><a href="helpers.html">查询辅助函数</a></li>
+    <li><a href="active_record.html">Active Record 类</a></li>
+    <li><a href="transactions.html">事务</a></li>
+    <li><a href="table_data.html">表格元数据</a></li>
+    <li><a href="fields.html">字段元数据</a></li>
+    <li><a href="call_function.html">自定义函数调用</a></li>
+    <li><a href="caching.html">查询缓存</a></li>
+    <li><a href="forge.html">数据库维护类</a></li>
+    <li><a href="utilities.html">数据库工具类</a></li>
+</ul><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+canglan, Drice, Hex</div>
+<div id="DocDate">
+最后修改: 2012-02-05 22:51:46</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="../drivers/caching.html">缓存类</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="examples.html">入门:例子</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 149 - 0
database/queries.html

@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>查询 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/queries.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;查询    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>查询</h1>
+
+<h2>$this-&gt;db-&gt;query();</h2>
+
+<p>要提交一个查询,用以下函数:</p>
+
+<code>$this-&gt;db-&gt;query('YOUR QUERY HERE');</code>
+
+<p><dfn>query()</dfn> 函数以<strong>object(对象)</strong>的形式返回一个数据库结果集. 当使用 "read" 模式来运行查询时, 你可以使用“<a href="results.html">显示你的结果集</a>”来显示查询结果; 当使用 "write" 模式来运行查询时, 将会仅根据执行的成功或失败来返回 TRUE 或 FALSE. 当你需要将返回的结果赋值给一个自定义变量的时候, 你可以这样操作:</p>
+
+<code><var>$query</var> = $this-&gt;db-&gt;query('YOUR QUERY HERE');</code>
+
+<h2>$this-&gt;db-&gt;simple_query();</h2>
+
+<p>这是一个简化版本的 <dfn>$this-&gt;db-&gt;query()</dfn> 函数.  它仅返回 True(bool) 和 False(bool) 以表示查询成功与失败.
+它将不会返回查询数据集,无法设置查询计时器(设置环境变量),无法编译绑定数据,不能够存储查询诊断信息。
+简单地说,他是一个用于提交查询的函数,对于大多数用户而言并不会使用到它。</p>
+
+<h1>Working with Database prefixes manually</h1>
+<p>If you have configured a database prefix and would like to prepend it to a table name for use in a native SQL query for example, then you can use the following:</p>
+<p><code>$this-&gt;db-&gt;dbprefix('tablename');<br />
+// outputs prefix_tablename</code></p>
+
+<p>If for any reason you would like to change the prefix programatically without needing to create a new connection, you can use this method:</p>
+<p><code>$this-&gt;db-&gt;set_dbprefix('newprefix');<br /><br />
+$this-&gt;db-&gt;dbprefix('tablename');<br />
+// outputs newprefix_tablename</code></p>
+
+<h1>保护标识符</h1>
+<p>在许多数据库中,保护表(table)和字段(field)的名称是明智的,例如在MySQL中使用反引号。<strong>Active Record的查询都已被自动保护</strong>,然而,如果您需要手动保护一个标识符,您也可以这样:</p>
+<p><code>$this-&gt;db-&gt;protect_identifiers('table_name');</code></p>
+
+<p class="important">Although Active Record will try its best to properly quote any field and table names that you feed it, note that it is NOT designed to work with arbitrary user input. DO NOT feed it with unsanitized user data.</p>
+
+<p>这个函数也会给你的表名添加一个前缀,它假定在你的数据库配置文件中已指定了一个前缀。可通过将第二个参数设置为<kbd>TRUE</kbd> (boolen) 启用前缀:</p>
+<p><code>$this-&gt;db-&gt;protect_identifiers('table_name', <kbd>TRUE</kbd>);</code></p>
+
+<h1>转义查询</h1>
+
+<p>将数据转义以后提交到你的数据库是非常好的安全做法,CodeIgniter 提供了 3 个函数帮助你完成这个工作。</p>
+
+<ol>
+
+<li><strong>$this-&gt;db-&gt;escape()</strong> 这个函数将会确定数据类型,以便仅对字符串类型数据进行转义。并且,它也会自动把数据用单引号括起来,所以你不必手动添加单引号,用法如下:
+
+<code>$sql = "INSERT INTO table (title) VALUES(".$this-&gt;db-&gt;escape($title).")";</code></li>
+
+
+<li><strong>$this-&gt;db-&gt;escape_str()</strong>  此函数将忽略数据类型对传入数据进行转义。更多时候你将使用上面的函数而不是这个。这个函数的使用方法是:
+
+<code>$sql = "INSERT INTO table (title) VALUES('".$this-&gt;db-&gt;escape_str($title)."')";</code></li>
+
+<li><strong>$this-&gt;db-&gt;escape_like_str()</strong>  This method should be used when strings are to be used in LIKE conditions so that LIKE wildcards ('%', '_') in the string are also properly escaped.
+
+<code>$search = '20% raise';<br />
+  $sql = "SELECT id FROM table WHERE column LIKE '%".$this-&gt;db-&gt;escape_like_str($search)."%'";</code></li>
+
+</ol>
+
+
+<h1>封装查询</h1>
+
+
+<p>封装,通过让系统为你组装各个查询语句,能够简化你的查询语法。参加下面的范例:</p>
+
+<code>
+$sql = "SELECT * FROM some_table WHERE id = <var>?</var> AND status = <var>?</var> AND author = <var>?</var>";
+
+<br /><br />
+$this-&gt;db-&gt;query($sql, array(3, 'live', 'Rick'));
+</code>
+
+<p>查询语句中的问号会自动被查询函数中位于第二个参数位置的数组中的值所替代。</p>
+<p class="important">使用封装查询的第二个好处是所有的值都会被自动转义,形成了较为安全的查询语句。你无需手动地去转义这些数据;控制器将会自动为你进行。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+498621, Fanbin, Hex, kkorange, szlinz, xjflyttp</div>
+<div id="DocDate">
+最后修改: 2014-06-10 13:40:54</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="connecting.html">连接到你的数据库</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="results.html">查询结果</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 259 - 0
database/results.html

@@ -0,0 +1,259 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>查询结果 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/results.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;查询结果    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>生成查询记录集</h1>
+
+
+<p>支持使用以下方法生成记录集</p>
+
+ <h2>result()</h2>
+ 
+ <p>该方法执行成功返回一个<strong>对象数组</strong>,失败则返回一个<strong>空数组</strong>。
+ 
+ 一般情况下,我们使用下面的方法遍历结果,代码就像这样:</p>
+ 
+ <code>
+ $query = $this-&gt;db-&gt;query("要执行的 SQL");<br />
+ <br />
+
+ foreach ($query-&gt;result() as $row)<br />
+ &#123;<br />
+ &nbsp;&nbsp;&nbsp;echo $row-&gt;title;<br />
+ &nbsp;&nbsp;&nbsp;echo $row-&gt;name;<br />
+ &nbsp;&nbsp;&nbsp;echo $row-&gt;body;<br />
+ &#125;</code>
+ 
+ <p>本函数的别名是 <dfn>result_object()</dfn>。</p>
+
+ <p>如果当前所执行的 SQL 可能<strong>不会</strong>返回记录集,我们可以使用如下方法进行判断:</p>
+ 
+ <code>
+
+ $query = $this-&gt;db-&gt;query("要执行的 SQL");<br />
+ <br />
+ if ($query-&gt;num_rows() > 0)<br />
+ &#123;<br />
+ &nbsp;&nbsp;&nbsp;foreach ($query-&gt;result() as $row)<br />
+ &nbsp;&nbsp;&nbsp;&#123;<br />
+
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row-&gt;title;<br />
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row-&gt;name;<br />
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $row-&gt;body;<br />
+ &nbsp;&nbsp;&nbsp;&#125;<br />
+ &#125;
+ </code>
+
+ <p>你可以传递一个字符串给result()函数,该字符串代表着某个类为每一个result对象进行实例化 (注意:该类必须已经被加载)。</p>
+
+ <code>
+ $query = $this-&gt;db-&gt;query("SELECT * FROM users;");<br />
+ <br />
+ foreach ($query-&gt;result('User') as $row)<br />
+ &#123;<br />
+ &nbsp;&nbsp;&nbsp;echo $row-&gt;name; // call attributes<br />
+ &nbsp;&nbsp;&nbsp;echo $row-&gt;reverse_name(); // or methods defined on the 'User' class<br />
+ &#125;
+ </code>
+
+
+ <h2>result_array()</h2>
+
+ <p>该方法执行成功时将记录集作为<strong>关联数组</strong>返回。失败时返回<strong>空数组</strong>。一般情况下,我们使用下面的方法遍历结果,代码就像这样:</p>
+ <code>
+ $query = $this-&gt;db-&gt;query("要执行的 SQL");<br />
+ <br />
+ foreach ($query-&gt;result_array() as $row)<br />
+ &#123;<br />
+ &nbsp;&nbsp;&nbsp;echo $row['title'];<br />
+
+ &nbsp;&nbsp;&nbsp;echo $row['name'];<br />
+ &nbsp;&nbsp;&nbsp;echo $row['body'];<br />
+ &#125;</code>
+
+
+ <h2>row()</h2>
+ 
+ <p>该函数将当前请求的第一行数据作为 <strong>object</strong> 返回。这里是示例代码:</p>
+
+ <code>
+ $query = $this-&gt;db-&gt;query("要执行的 SQL");<br />
+ <br />
+ if ($query-&gt;num_rows() > 0)<br />
+ &#123;<br />
+ &nbsp;&nbsp;&nbsp;$row = $query-&gt;row();
+ <br /><br />
+ &nbsp;&nbsp;&nbsp;echo $row-&gt;title;<br />
+
+ &nbsp;&nbsp;&nbsp;echo $row-&gt;name;<br />
+ &nbsp;&nbsp;&nbsp;echo $row-&gt;body;<br />
+ &#125;
+ </code>
+ 
+ <p>你可以传递参数(参数是行的索引)以便获得某一行的数据。比如我们要获得第 <dfn>5</dfn> 行的数据:</p>
+ 
+ <code>$row = $query-&gt;row(<dfn>4</dfn>);</code>
+<p>如果传入的参数超出行索引,则返回第一行(索引为0)数据</p>
+
+ <p>你也可以添加一个字符串参数,它是一个类在row()函数下实例化的名字:</p>
+
+ <code>
+ $query = $this-&gt;db-&gt;query("SELECT * FROM users LIMIT 1;");<br />
+ <br />
+ $query-&gt;row(0, 'User')<br />
+ echo $row-&gt;name; // call attributes<br />
+ echo $row-&gt;reverse_name(); // or methods defined on the 'User' class<br />
+ </code>
+
+ <h2>row_array()</h2>
+
+ <p>功能与 <var>row()</var> 一样, 区别在于该函数返回的是一个数组:</p>
+
+ <code>
+ $query = $this-&gt;db-&gt;query("要执行的 SQL");<br />
+
+ <br />
+ if ($query-&gt;num_rows() > 0)<br />
+ &#123;<br />
+ &nbsp;&nbsp;&nbsp;$row = $query-&gt;row_array();
+ <br /><br />
+ &nbsp;&nbsp;&nbsp;echo $row['title'];<br />
+ &nbsp;&nbsp;&nbsp;echo $row['name'];<br />
+
+ &nbsp;&nbsp;&nbsp;echo $row['body'];<br />
+ &#125;
+ </code>
+
+ 
+ <p>你可以传递参数(参数是行的索引)以便获得某一行的数据。比如我们要获得第 <dfn>5</dfn> 行的数据:</p>
+ 
+ <code>$row = $query-&gt;row_array(<dfn>4</dfn>);</code>
+
+ <p>如果传入的参数超出行索引,则返回第一行(索引为0)数据</P>
+
+  <p>除此以外, 我们还可以使用下面的方法通过游标的方式获取记录:</p>
+
+<p>
+ <strong>$row = $query-&gt;first_row()</strong><br />
+ <strong>$row = $query-&gt;last_row()</strong><br />
+ <strong>$row = $query-&gt;next_row()</strong><br />
+ <strong>$row = $query-&gt;previous_row()</strong>
+</p>
+
+<p>默认情况下他们将返回一个 <strong>object</strong>,同时你也可以传递参数 "array" 以便使用 <strong>array</strong> 的方式获取数据</p>
+
+<p>
+ <strong>$row = $query-&gt;first_row('array')</strong><br />
+ <strong>$row = $query-&gt;last_row('array')</strong><br />
+ <strong>$row = $query-&gt;next_row('array')</strong><br />
+ <strong>$row = $query-&gt;previous_row('array')</strong>
+</p>
+
+
+<h1>结果集辅助函数</h1>
+
+
+<h2>$query-&gt;num_rows()</h2>
+<p>该函数将会返回当前请求的行数。在本例子中, <dfn>$query</dfn> 表示当前 SQL 所产生的请求结果对象:</p>
+
+<code>$query = $this-&gt;db-&gt;query('SELECT * FROM my_table');<br /><br />
+echo $query-&gt;num_rows();
+</code>
+
+<h2>$query-&gt;num_fields()</h2>
+<p>该函数返回当前请求的字段数(列数):</p>
+
+<code>$query = $this-&gt;db-&gt;query('SELECT * FROM my_table');<br /><br />
+echo $query-&gt;num_fields();
+</code>
+
+
+
+<h2>$query-&gt;free_result()</h2>
+<p>该函数将会释放当前查询所占用的内存并删除其关联的资源标识。通常来说,PHP 将会脚本执行结束后自动释放内存。如果当前执行的请求将要花很长时间并且占用比较大的资源时,该函数可以在一定程度上降低资源的消耗:
+</p>
+
+<code>$query = $this-&gt;db-&gt;query('SELECT title FROM my_table');<br /><br />
+foreach ($query-&gt;result() as $row)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;echo $row-&gt;title;<br />
+&#125;<br />
+$query-&gt;free_result();  // $query 将不再可用<br />
+<br />
+$query2 = $this-&gt;db-&gt;query('SELECT name FROM some_table');<br /><br />
+$row = $query2-&gt;row();<br />
+
+echo $row-&gt;name;<br />
+$query2-&gt;free_result();  // $query2 将不再可用
+</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, kakera, lishen2, loiynet, wangjunjie871111</div>
+<div id="DocDate">
+最后修改: 2012-10-25 16:51:16</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="queries.html">查询</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="helpers.html">查询助手函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 103 - 0
database/table_data.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数据库表数据 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/table_data.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;数据库表数据    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>表数据</h1>
+
+<p>以下函数可以获取表信息</p><br/>
+
+<h2>$this-&gt;db-&gt;list_tables();</h2>
+
+<p>返回一个包含当前连接数据库中所有表名称的数组。例如:</p><br/>
+
+<code>$tables = $this-&gt;db-&gt;list_tables();<br />
+<br />
+foreach ($tables as $table)<br />
+&#123;<br />
+&nbsp;&nbsp; echo $table;<br />
+&#125;
+</code>
+
+<h2>$this-&gt;db-&gt;table_exists();</h2>
+
+<p>有时,在对某个表执行操作之前,使用该函数判断指定表是否存在很有用。返回一个布尔值:TRUE/FALSE。例子:</p><br/>
+
+<code>
+if ($this-&gt;db-&gt;table_exists('table_name'))<br />
+&#123;<br />
+&nbsp;&nbsp; // some code...<br />
+&#125;
+</code>
+
+<p>备注:用你所查找的表名替换 <em>table_name</em></p><br/><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+analyzer, Hex, ianyang</div>
+<div id="DocDate">
+最后修改: 2009-06-15 00:19:56</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="transactions.html">事务</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="fields.html">字段元数据</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 182 - 0
database/transactions.html

@@ -0,0 +1,182 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>事务 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/transactions.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;事务    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>事务</h1>
+
+<p>CodeIgniter的数据库抽象允许你在支持事务安全的数据库表中使用<dfn>事务</dfn>。在MySQL中,你需要用InnoDB或BDB表而不是更常用的MyISAM。大多数其它的数据库平台都原生支持事务。</p>
+
+<p>如果你对事务不熟悉,我们建议您上网寻找相关资源学习。以下信息假设你已经明白事务的相关概念。</p>
+
+<h2>CodeIgniter 的事务方法</h2>
+
+<p>CodeIgniter 使用的事务方法与流行的数据库类ADODB所使用的处理过程非常相似。我们选择那种方法是因为它极大地简化了运行事务的处理过程。大多数情况下你只需要编写两行代码就行了。</p>
+
+<p>传统上, 事务需要实现大量工作, 他们要求你随时跟踪你的查询, 并根据查询的成功或失败来决定 <dfn>提交</dfn> 还是 <dfn>回滚</dfn>。这是特别麻烦的嵌套查询。相比之下, 我们实现了一种智能的事务系统, 它将自动地为你做这些事情(如果你选择手动管理你的事务, 这也是可以的, 但这确实没什么好处)。</p>
+
+<h2>运行事务</h2>
+
+<p>要使用事务来运行你的查询, 你可以使用如下所述的 <dfn>$this-&gt;db-&gt;trans_start()</dfn> 和 <dfn>$this-&gt;db-&gt;trans_complete()</dfn> 函数:</p>
+
+<code>
+<kbd>$this-&gt;db-&gt;trans_start();</kbd><br />
+$this-&gt;db-&gt;query('一条SQL查询...');<br />
+
+$this-&gt;db-&gt;query('另一条查询...');<br />
+$this-&gt;db-&gt;query('还有一条查询...');<br />
+<kbd>$this-&gt;db-&gt;trans_complete();</kbd>
+</code>
+
+<p>在 start/complete 函数之间, 你想运行多少条查询都可以, 根据任何给定查询的成功或失败, 它们将被提交或者回滚。</p>
+
+<h2>严格模式(Strict Mode)</h2>
+
+<p>默认情况下, CodeIgniter 以<dfn>严格模式</dfn>运行所有事务。当严格模式被启用时, 如果你正在运行多组的事务, 只要有一组失败, 所有组都会被回滚。如果严格模式被禁用, 每一组都被视为独立的组, 这意味着其中一个组的失败不会影响其它组。</p>
+
+<p>严格模式能以下面的方式禁用:</p>
+
+<code>$this-&gt;db-&gt;trans_strict(FALSE);</code>
+
+
+<h2>管理错误信息</h2>
+
+<p>如果你在你的 <dfn>config/database.php</dfn> 文件中启用了错误报告, 当提交没有成功时, 你会看到一条标准的错误信息。如果调试被关闭, 你可以通过这种方式来管理你的错误信息:</p>
+
+<code>
+$this-&gt;db-&gt;trans_start();<br />
+$this-&gt;db-&gt;query('AN SQL QUERY...');<br />
+$this-&gt;db-&gt;query('ANOTHER QUERY...');<br />
+$this-&gt;db-&gt;trans_complete();<br />
+<br />
+if (<kbd>$this-&gt;db-&gt;trans_status()</kbd> === FALSE)<br />
+&#123;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;// 生成一条错误信息... 或者使用 log_message() 函数来记录你的错误信息<br />
+&#125;
+</code>
+
+
+<h2>禁用事务</h2>
+
+<p>当你使用 <dfn>$this-&gt;db-&gt;trans_start()</dfn> 时, 事务就已经被自动启用了。如果你想要禁用事务, 你可以使用 <dfn>$this-&gt;db-&gt;trans_off()</dfn> 来实现:</p>
+
+<code>
+
+<kbd>$this-&gt;db-&gt;trans_off()</kbd><br /><br />
+
+$this-&gt;db-&gt;trans_start();<br />
+$this-&gt;db-&gt;query('AN SQL QUERY...');<br />
+$this-&gt;db-&gt;trans_complete();
+</code>
+
+<p class="important">当事务被禁用的时候, 你的查询将被自动提交, 就像没有使用事务时那样。</p>
+
+
+<h2>测试模式(Test Mode)</h2>
+
+<p>你可以选择性地将事务系统设置到 "测试模式" ,  这将导致你的查询被回滚 -- 尽管查询会生成有效结果。要使用测试模式, 只需将 <dfn>$this-&gt;db-&gt;trans_start()</dfn> 函数的第一个参数设置为 <samp>TRUE</samp> 即可:</p>
+
+<code>
+$this-&gt;db-&gt;trans_start(<samp>TRUE</samp>); // 查询将被回滚<br />
+$this-&gt;db-&gt;query('AN SQL QUERY...');<br />
+$this-&gt;db-&gt;trans_complete();
+</code>
+
+
+<h2>手动运行事务</h2>
+
+<p>如果你想要手动运行事务, 可以使用下面的方法:</p>
+
+<code>
+$this-&gt;db-&gt;trans_begin();<br /><br />
+
+$this-&gt;db-&gt;query('AN SQL QUERY...');<br />
+$this-&gt;db-&gt;query('ANOTHER QUERY...');<br />
+$this-&gt;db-&gt;query('AND YET ANOTHER QUERY...');<br />
+
+<br />
+
+if ($this-&gt;db-&gt;trans_status() === FALSE)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;db-&gt;trans_rollback();<br />
+&#125;<br />
+else<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;db-&gt;trans_commit();<br />
+
+&#125;<br />
+</code>
+
+<p class="important"><strong>说明:</strong> 手动运行事务时, 请务必使用 <kbd>$this-&gt;db-&gt;trans_begin()</kbd> 函数,  而<strong>不是</strong>
+<dfn>$this-&gt;db-&gt;trans_start()</dfn>.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Drice, Hex, iptton, yinzhili</div>
+<div id="DocDate">
+最后修改: 2010-10-22 11:07:30</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="fields.html">字段元数据</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="table_data.html">数据库表元数据</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 299 - 0
database/utilities.html

@@ -0,0 +1,299 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数据库工具类 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/database/utilities.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">数据库类</a>&nbsp;&#8250;&nbsp;数据库工具类    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>数据库工具类</h1>
+
+<p>数据库工具类包含有帮助你管理数据库的函数</p>
+
+<h3>目录</h3>
+
+<ul>
+<li><a href="#init">初始化数据库工具类</a></li>
+<li><a href="#list">列出所有数据库名</a></li>
+<li><a href="#exists">查找某个特定的数据库</a></li>
+<li><a href="#opttb">优化数据表</a></li>
+<li><a href="#repair">修复数据库</a></li>
+<li><a href="#optdb">优化数据库</a></li>
+<li><a href="#csv">从数据库结果集导出CSV文件</a></li>
+<li><a href="#xml">从数据库结果集导出XML文件</a></li>
+<li><a href="#backup">备份数据库</a></li>
+</ul>
+
+
+
+<h2><a name="init"></a>初始化数据库工具类</h2>
+
+<p class="important"><strong>重要提示:</strong>&nbsp; 初始化数据库工具类之前,你的数据库驱动必须已经运行,因为工具类依赖于此。</p>
+
+<p>加载工具类:</p>
+
+<code>$this-&gt;load-&gt;dbutil()</code>
+
+<p>一旦初始化完毕,你可以通过 <dfn>$this-&gt;dbutil</dfn> 对象来访问成员函数:</p>
+
+<code>$this-&gt;dbutil-&gt;some_function()</code>
+
+<h2><a name="list"></a>$this-&gt;dbutil-&gt;list_databases()</h2>
+<p>返回一个含有数据库名的数组:</p>
+
+<code>
+$dbs = $this-&gt;dbutil-&gt;list_databases();<br />
+<br />
+foreach ($dbs as $db)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp; echo $db;<br />
+&#125;</code>
+
+<h2><a name="exists"></a>$this-&gt;dbutil-&gt;database_exists();</h2>
+
+<p>有时候判断一个特定的数据库是否存在,是非常有用的功能。返回一个布尔值 TRUE/FALSE.  使用范例:</p>
+
+<code>
+if ($this-&gt;dbutil-&gt;database_exists('database_name'))<br />
+&#123;<br />
+&nbsp;&nbsp; // some code...<br />
+&#125;
+</code>
+
+<p>注意:  将 <em>database_name</em> 替换为你想要查找的数据库名称。这个函数是区分大小写的。</p>
+
+<h2><a name="opttb"></a>$this-&gt;dbutil-&gt;optimize_table('table_name');</h2>
+
+<p class="important"><strong>注意:</strong>&nbsp; 此特性仅在MySQL/MySQLi数据库中可用。</p>
+
+
+<p>允许你优化第一个参数为表名的表。基于操作的成功或失败返回TRUE或FALSE:</p>
+
+<code>
+if ($this-&gt;dbutil-&gt;optimize_table('table_name'))<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp; echo 'Success!';<br />
+&#125;
+</code>
+
+<p><strong>注意:</strong> 并非所有数据库平台都支持表优化</p>
+
+
+<h2><a name="repair"></a>$this-&gt;dbutil-&gt;repair_table('table_name');</h2>
+
+<p class="important"><strong>注意:</strong>&nbsp; 此特性仅在MySQL/MySQLi数据库中可用。</p>
+
+
+<p>允许你修复第一个参数为表名的表。基于操作的成功或失败返回TRUE或FALSE:</p>
+
+<code>
+if ($this-&gt;dbutil-&gt;repair_table('table_name'))<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp; echo 'Success!';<br />
+&#125;
+</code>
+
+<p><strong>注意:</strong> 并非所有数据库平台都支持表修复。</p>
+
+
+<h2><a name="optdb"></a>$this-&gt;dbutil-&gt;optimize_database();</h2>
+
+<p class="important"><strong>注意:</strong>&nbsp; 此特性仅在MySQL/MySQLi数据库中可用。</p>
+
+<p>允许你优化当前DB类所连接到的数据库。返回一个包含DB状态信息的数组,失败返回 FALSE。</p>
+
+<code>
+$result = $this-&gt;dbutil-&gt;optimize_database();<br />
+<br />
+if ($result !== FALSE)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp; print_r($result);<br />
+&#125;
+</code>
+
+<p><strong>注意:</strong> 并非所有数据平台都支持表优化。</p>
+
+
+<h2><a name="csv"></a>$this-&gt;dbutil-&gt;csv_from_result($db_result)</h2>
+
+<p>允许你从查询结果集生成一个CSV文件。第一个参数必须为查询结果集对象。例如:</p>
+
+<code>
+$this-&gt;load-&gt;dbutil();<br />
+<br />
+$query = $this-&gt;db-&gt;query("SELECT * FROM mytable");<br />
+<br />
+echo $this-&gt;dbutil-&gt;csv_from_result($query);
+</code>
+
+<p>第二和第三个参数允许你设置分隔符和换行符。默认使用tab(跳格)作为分隔符,使用“\n”作为换行符。例如:</p>
+
+<code>
+$delimiter = ",";<br />
+$newline = "\r\n";<br />
+<br />
+echo $this-&gt;dbutil-&gt;csv_from_result($query, $delimiter, $newline);
+</code>
+
+<p><strong>重要:</strong>&nbsp;此函数不会将生成的CSV文件保存到磁盘。它只是简单的创建CSV格式。如果需要将文件保存到磁盘,使用<a href="../helpers/file_helper.html">文件辅助函数</a>。</p>
+
+
+<h2><a name="xml"></a>$this-&gt;dbutil-&gt;xml_from_result($db_result)</h2>
+
+<p>允许你从结果集中生成一个XML文件。第一个参数是查询结果集对象,第二个参数为可选数组参数,数组包含配置参数。例如:</p>
+
+<code>
+$this-&gt;load-&gt;dbutil();<br />
+<br />
+$query = $this-&gt;db-&gt;query("SELECT * FROM mytable");<br />
+<br />
+$config = array (<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'root'&nbsp;&nbsp;&nbsp; => 'root',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'element' => 'element', <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'newline' => "\n", <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'tab'&nbsp;&nbsp;&nbsp;&nbsp;=> "\t"<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+echo $this-&gt;dbutil-&gt;xml_from_result($query, $config);
+</code>
+
+<p><strong>重要:</strong>&nbsp; 此函数不会将生成的XML文件保存到磁盘。它只是简单的创建XML格式。如果需要将文件保存到磁盘,使用<a href="../helpers/file_helper.html">文件辅助函数</a>。</p>
+
+<h2><a name="backup"></a>$this-&gt;dbutil-&gt;backup()</h2>
+
+<p>允许你备份整个数据库或者独立的表。备份数据可以压缩为Zip或Gzip格式。</p>
+<p class="important"><strong>注意:</strong>&nbsp; 该特性仅在使用MySQL数据库时有效。</p>
+
+<p>备注:由于PHP执行时间和内存的限制,备份巨大的数据库可能不太容易成功。如果你的数据库非常大,你可能需要直接从命令行执行相关命令;或者如果你没有相应权限,你可能需要服务器管理员为你做这件事。
+</p>
+
+<h3>用法:</h3>
+
+<code>
+<dfn>// 加载数据库工具类</dfn><br />
+$this-&gt;load-&gt;dbutil();<br /><br />
+
+<dfn>// 备份整个数据库并将其赋值给一个变量</dfn><br />
+$backup =& $this-&gt;dbutil-&gt;backup();
+
+<br /><br />
+<dfn>// 加载文件辅助函数并将文件写入你的服务器</dfn><br />
+$this-&gt;load-&gt;helper('file');<br />
+write_file&#40;'/path/to/mybackup.gz', $backup&#41;;
+
+<br /><br />
+<dfn>// 加载下载辅助函数并将文件发送到你的桌面</dfn><br />
+$this-&gt;load-&gt;helper('download');<br />
+force_download('mybackup.gz', $backup);
+</code>
+
+<h3>设置备份参数</h3>
+
+<p>将一个包含了各项参数值的数组作为第一个函数参数传递给备份函数,就可以设置数据库备份的参数。例如:</p>
+
+<code>$prefs = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'tables'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> array('table1', 'table2'),&nbsp;&nbsp;// 包含了需备份的表名的数组.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'ignore'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> array(),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 备份时需要被忽略的表<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'format'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'txt',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// gzip, zip, txt<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'filename'&nbsp;&nbsp;&nbsp;&nbsp;=> 'mybackup.sql',&nbsp;&nbsp;&nbsp;&nbsp;// 文件名 - 如果选择了ZIP压缩,此项就是必需的<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'add_drop'&nbsp;&nbsp;&nbsp;&nbsp;=> TRUE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 是否要在备份文件中添加 DROP TABLE 语句<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'add_insert'&nbsp;&nbsp;=> TRUE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 是否要在备份文件中添加 INSERT 语句<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'newline'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> "\n"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 备份文件中的换行符<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$this-&gt;dbutil-&gt;backup($prefs);
+</code>
+
+
+<h3>备份参数说明</h3>
+
+<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+<tr>
+<th>参数</th>
+<th>默认值</th>
+<th>选项</th>
+<th>描述</th>
+</tr><tr>
+<td class="td"><strong>tables</strong></td><td class="td">空数组</td><td class="td">无</td><td class="td">你想备份的数据表数组,如果留空将备份所有数据表.</td>
+</tr><tr>
+<td class="td"><strong>ignore</strong></td><td class="td">空数组</td><td class="td">无</td><td class="td">忽略备份的数据表数组</td>
+</tr><tr>
+<td class="td"><strong>format</strong></td><td class="td">gzip</td><td class="td">gzip, zip, txt</td><td class="td">导出文件的格式</td>
+</tr><tr>
+<td class="td"><strong>filename</strong></td><td class="td">当前日期/时间</td><td class="td">无</td><td class="td">备份文件名. 如果您使用了zip压缩这个名字是必填的.</td>
+</tr><tr>
+<td class="td"><strong>add_drop</strong></td><td class="td">TRUE</td><td class="td">TRUE/FALSE</td><td class="td">是否在您的输出的SQL文件里包含DROP TABLE声明.</td>
+</tr><tr>
+<td class="td"><strong>add_insert</strong></td><td class="td">TRUE</td><td class="td">TRUE/FALSE</td><td class="td">是否在您的输出的SQL文件里包含INSERT声明.</td>
+</tr><tr>
+<td class="td"><strong>newline</strong></td><td class="td">"\n"</td><td class="td">"\n", "\r", "\r\n"</td><td class="td">使用在您输出的SQL文件里的换行符类型.</td>
+
+</tr>
+</table><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, ianyang, iptton, skey, thankwsx, yinzhili</div>
+<div id="DocDate">
+最后修改: 2012-02-05 23:03:30</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="forge.html">数据库工厂类</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="../libraries/javascript.html">Javascript 类</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 201 - 0
drivers/caching.html

@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>缓存适配器 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/drivers/caching.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="../index.html">适配器</a>&nbsp;&#8250;&nbsp;缓存适配器    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>缓存适配器</h1>
+<p>注:在2.0.3以前有bug,请下载最新版本的CI。</p>
+<p>CodeIgniter提供了多种目前业界流行的快速动态缓存组件的封装类。除了基于纯文本的缓存(文件缓存)外,其他缓存组件均需对服务器环境进行正确配置才能使用,否则程序会抛出致命异常(Fatal Exception)错误。</p>
+
+<p></p>
+
+<h2>目录</h2>
+<ul>
+  <li><a href="#example_usage" title="Example Usage">用法举例</a></li>
+  <li><a href="#function_reference" title="Function Reference">函数速查</a></li>
+
+</ul>
+
+<h3>支持的缓存适配器</h3>
+<ul>
+  <li><a href="#apc" title="APC Cache">Alternative PHP Cache (APC) 缓存</a></li>
+  <li><a href="#file" title="File Caching">纯文本缓存</a></li>
+  <li><a href="#memcached" title="Memcached">Memcached缓存</a></li>
+  <li><a href="#dummy" title="Dummy Caching">虚拟缓存</a></li>
+
+</ul>
+
+<h2 id="example_usage">用法举例</h2>
+
+<p>下面这个例子:首先加载缓存适配器,然后指定 <a href="#apc" title="APC">APC</a> 作为适配器优先使用的缓存实现,同时,我们指定文本缓存作为替代方案。这样,在一些服务器不支持APC的情况下(如国内的虚拟主机),我们可以使用替代方案保证程序正常运行。</p>
+
+<code>
+$this-&gt;load-&gt;driver('cache', array('adapter' => 'apc', 'backup' => 'file'));<br />
+<br />
+if ( ! $foo = $this-&gt;cache-&gt;get('foo'))<br />
+
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo 'Saving to the cache!&lt;br />';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$foo = 'foobarbaz!';<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Save into the cache for 5 minutes<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;cache-&gt;save('foo', $foo, 300);<br />
+&#125;<br />
+<br />
+echo $foo;
+</code>
+
+<p><strong>译者注:为了便于理解上面的代码,我们不妨举个例子。缓存适配器,我们可以理解为一个“通电的插座”;而APC缓存,相当于我们希望插在插座上使用的空调;文本缓存我们可以理解与空调功能相同但效率却完全不同的电风扇。</strong></p>
+
+<h1 id="function_reference">Function Reference</h1>
+
+<h2>is_supported(<var>driver</var>['string'])</h2>
+
+<p>如果你通过 <samp>$this-&gt;cache-&gt;get()</samp> 来访问缓存适配器,此函数将自动触发。但是,如果你希望有针对性的使用某个具体的缓存实现(如下例中的 APC),请确保调用此函数,用来检查服务器环境是否支持这种缓存类型。</p>
+
+<code>
+if ($this-&gt;cache-&gt;apc-&gt;is_supported())<br />
+
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($data = $this-&gt;cache-&gt;apc-&gt;get('my_cache'))<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// do things.<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;
+</code>
+
+<h2>get(<var>id</var>['string'])</h2>
+
+<p>此函数将尝试从缓存系统中获取指定的缓存项。如果缓存不存在,或者超过缓存期限,则返回 <samp>FALSE</samp>。</p>
+<code>$foo = $this-&gt;cache-&gt;get('my_cached_item');</code>
+
+<h2>save(<var>id</var>['string'], <var>data</var>['mixed'], <var>ttl</var>['int'])</h2>
+
+<p>此函数尝试将一个缓存项存储到对应的缓存系统中。如果存储失败,则返回<samp>FALSE</samp>。</p>
+<p>第三个参数(可选项)指定了缓存的存活时间,默认为60秒。</p>
+<code>$this-&gt;cache-&gt;save('cache_item_id', 'data_to_cache');</code>
+
+<h2>delete(<var>id</var>['string'])</h2>
+
+<p>此函数尝试从缓存系统中删除某个指定的缓存项。如果删除失败,则返回<samp>FALSE</samp>。</p>
+
+<code>$this-&gt;cache-&gt;delete('cache_item_id');</code>
+
+<h2>clean()</h2>
+
+<p>此函数用来清空所有缓存。如果清空失败,则返回 <samp>FALSE</samp>.</p>
+
+<code>$this-&gt;cache-&gt;clean();</code>
+
+<h2>cache_info()</h2>
+
+<p>此函数将返回所有缓存信息.</p>
+
+<code>var_dump($this-&gt;cache-&gt;cache_info());</code>
+
+<h2>get_metadata(<var>id</var>['string'])</h2>
+
+<p>此函数将返回缓存系统中指定缓存项的详细信息。</p>
+
+<code>var_dump($this-&gt;cache-&gt;get_metadata('my_cached_item'));</code>
+
+<h1>Drivers</h1>
+
+<h2 id="apc">Alternative PHP Cache (APC) 缓存</h2>
+
+<p>以上列举的所有方法可直接访问,不需传递特定的适配器实现给适配器加载器,如下:</p>
+<code>$this-&gt;load-&gt;driver('cache');<br />
+  $this-&gt;cache-&gt;apc-&gt;save('foo', 'bar', 10);</code>
+<p>For more information on APC, please see <a href="#">http://php.net/apc</a></p>
+
+<h2 id="file">基于文件的缓存</h2>
+
+<p>不同于从输出类(Output Class)缓存, 基于文件的缓存可以对view页面分块缓存。不过使用时需要小心,应该通过对程序进行评测,以确保由于磁盘I/O增加所导致的性能下降相对于缓存所带来的性能提升是值得的。</p>
+
+<p>以上列举的所有方法可直接访问,不需传递特定的适配器实现给适配器加载器,如下:</p>
+<code>$this-&gt;load-&gt;driver('cache');<br />
+  $this-&gt;cache-&gt;file-&gt;save('foo', 'bar', 10);</code>
+
+<h2 id="memcached">Memcached 缓存</h2>
+
+<p>使用分布式 Memcached 服务器 可以通过配置文件: memcached.php 来配置,该文件在 <samp>application/config/</samp> 目录下.
+
+<p>以上列举的所有方法可直接访问,不需传递特定的适配器实现给适配器加载器,如下:</p>
+<code>$this-&gt;load-&gt;driver('cache');<br />
+  $this-&gt;cache-&gt;memcached-&gt;save('foo', 'bar', 10);</code>
+
+<p>若想了解更多关于 Memcached的信息, 请参考 <a href="#">http://php.net/memcached</a></p>
+
+<h2 id="dummy">虚拟缓存(Dummy Cache)</h2>
+
+<p>虚拟缓存是一种总是被忽略的后台缓存。它不存储数据,但是若有的环境不支持你选择的缓存机制时,它可以让你的缓存代码能正常的执行。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+amos, cnsaturn, Hex, LSvKing, qixingyue, tangjianft, wdlth, zxuqian, 曜日晨阳</div>
+<div id="DocDate">
+最后修改: 2013-03-19 02:37:26</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="../libraries/zip.html">Zip 编码类</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="../database/index.html">数据库类库</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 112 - 0
general/alternative_php.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>PHP 替代语法 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/alternative_php.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;PHP 替代语法    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>视图文件的 PHP 替代语法</h1>
+<p>如果你不使用 CodeIgniter 的<a href="../libraries/parser.html">模板引擎</a>,则你可以在视图文件中使用原始 PHP 代码。要使 PHP 代码达到最精简并使其更容易辨认,因此建议你使用 PHP 替代语法控制结构及短标记的 echo 语句。 建议你使用 PHP 的语法为你的控制结构和简短的输出标签。如果你还不熟悉这个语法,下面你将学会如何从代码中消灭大括号和&ldquo;echo&rdquo;语句。</p>
+<h2>自动短标记支持</h2>
+<p><strong>注:</strong>如果你发现本页描述的语法在你的服务器上不工作,它可能是&ldquo;短标记&rdquo;在你的 PHP ini 文件中禁用了。CodeIgniter 可以重写所有短标记,让你使用这个语法,即使你的服务器不支持它。这个特性可以在你的 <dfn>config/config.php</dfn> 文件中打开($config['rewrite_short_tags'])。</p>
+<p class="important">请注意,如果你使用这个特性,如果在你的<strong>视图文件</strong>中发生 PHP 错误,则错误信息和行号将无法准确显示。相反,所有的错误将显示为 <kbd>eval &#40;&#41;</kbd> 的错误。</p>
+<h2>替代 Echo</h2>
+<p>正常的 echo 和 print 输出一般是这样的形式:</p>
+<p><code>&lt;?php echo $variable; ?&gt;</code></p>
+<p>使用替代语法,你能改成这样的形式:</p>
+<p><code>&lt;?=$variable?&gt;</code></p>
+<h2>替代控制结构</h2>
+<p>控制结构,像 <var>if</var>,<var>for</var>,<var>foreach</var>,和 <var>while</var> 也可以写成简化的形式。这里是一个用 foreach 的例子:</p>
+<p><code>&lt;ul&gt;<br />
+<br />
+<var>&lt;?php foreach ($todo as $item): ?&gt;</var><br />
+<br />
+&lt;li&gt;<var>&lt;?=$item?&gt;</var>&lt;/li&gt;<br />
+<br />
+<var>&lt;?php endforeach; ?&gt;</var><br />
+<br />
+&lt;/ul&gt;</code></p>
+<p>注意,这里没有大括号。相反,结束大括号被替换成了 <var>endforeach</var>。上面列出的每一个控制结构也有相似的关闭语法:<var>endif</var>,<var>endfor</var>,<var>endforeach</var> 和 <var>endwhile</var>。</p>
+<p>并且在每个结构以后注意不要使用分号(除了最后一个),用冒号。这是很重要的!</p>
+<p>这有另一个例子,使用 if/elseif/else。注意冒号:</p>
+<p><code><var>&lt;?php if ($username == 'sally'): ?&gt;</var><br />
+<br />
+&nbsp;&nbsp;&nbsp;&lt;h3&gt;Hi Sally&lt;/h3&gt;<br />
+<br />
+<var>&lt;?php elseif ($username == 'joe'): ?&gt;</var><br />
+<br />
+&nbsp;&nbsp;&nbsp;&lt;h3&gt;Hi Joe&lt;/h3&gt;<br />
+<br />
+<var>&lt;?php else: ?&gt;</var><br />
+<br />
+&nbsp;&nbsp;&nbsp;&lt;h3&gt;Hi unknown user&lt;/h3&gt;<br />
+<br />
+<var>&lt;?php endif; ?&gt;</var></code></p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+chenshenghan, csfhc, Hex, iiiiissss, laotan, levin</div>
+<div id="DocDate">
+最后修改: 2013-11-02 08:00:20</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="managing_apps.html">管理应用程序</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="security.html">安全</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 87 - 0
general/autoloader.html

@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>自动装载资源 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/autoloader.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;自动装载资源    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>自动装载资源</h1>
+<p>CodeIgniter 带有"自动装载"功能可以允许系统每次运行时自动初始化类库、辅助函数和模型。如果你需要某些资源在整个应用程序中全局使用,为方便起见可以考虑自动装载它们。</p>
+<p>下列项目可以自动装载:</p>
+<ul>
+    <li>“libraries”文件夹中的核心类</li>
+    <li>“helper”文件夹中的辅助函数</li>
+    <li>“config”文件夹中自定义配置文件</li>
+    <li>“system/language”文件夹中的语言包</li>
+    <li>“models”文件夹中的模型</li>
+</ul>
+<p>要自动装载资源,打开 <var>application/config/autoload.php</var> 文件,然后将你想要自动装载的项目添加到 <samp>autoload</samp> 数组中,你会发现该文件中对应于上面每个项目类型指示。</p>
+<p class="important"><strong>注意:</strong>增加项目到自动装载数组中的时候,不要包括文件扩展名(.php)。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, ianyang, lnnujxxy</div>
+<div id="DocDate">
+最后修改: 2011-01-31 17:08:05</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="hooks.html">钩子 - 扩展核心</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="common_functions.html">公共函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 108 - 0
general/caching.html

@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>页面缓存 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/caching.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;页面缓存    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>网页缓存</h1>
+
+<p>Codeigniter 支持缓存技术,以达到最快的速度。</p>
+
+<p>尽管CI已经相当高效了,但是网页中的动态内容、主机的内存CPU 和数据库读取速度等因素直接影响了网页的加载速度。
+依靠网页缓存,你的网页可以达到近乎静态网页的加载速度,因为他们将程序输出的结果保存到硬盘上了。</p>
+
+
+<h2>缓存是怎么工作的?</h2>
+
+<p>
+CI支持每个页面单独缓存,而且可以设置缓存更新时间。当一个网页第一次被加载的时候,缓存文件将被保存到<dfn>application/cache</dfn>文件夹。
+下次访问的时候,系统就会直接读取缓存文件,然后返回给用户的浏览器。如果缓存文件过期,它将被删除并重新生成。</p>
+
+<p>注意:Benchmark 标签在使用了缓存的页面仍然可用。</p>
+
+<h2>启动缓存</h2>
+
+<p>启用缓存功能,只需要将下面的代码放入你的任何一个控制器(controller)的方法(function)内:</p>
+
+<code>$this-&gt;output-&gt;cache(<var>n</var>);</code>
+
+<p>其中 <var>n</var> 是你希望缓存更新的 <strong>分钟</strong> 数。可以使用 m/60 来精确到秒,例如 1/60 ,则是精确到  1秒</p>
+
+<p>上面的代码可以放到任何一个 function 里面。他的出现顺序对缓存并没有影响,所以将它放在你认为最合乎逻辑的地方。一旦上面的代码放到了控制器的方法中,页面就会被缓存。</p>
+
+<p class="important"><strong>警告:</strong> 由于CI存储缓存文件的方式,只有通过 <a href="views.html">view</a> 文件的输出才能被缓存。</p>
+<p class="important"><strong>注意:</strong> 在缓存文件产生之前,请确保 <dfn>application/cache</dfn> 文件夹可写。</p>
+
+<h2>清除缓存</h2>
+
+<p>如果你不再想使用缓存,仅需将上面的代码从你的controller里面删除即可。注意:
+这样做并不能让缓存文件立即消失,它将会自动过期并被删除。如果你想立即删除那些文件,就必须自己动手了。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, IT不倒翁, jinhao7773, longbill, sunxch100</div>
+<div id="DocDate">
+最后修改: 2011-06-04 19:23:41</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="errors.html">错误处理</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="profiling.html">评测你的应用程序</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 149 - 0
general/cli.html

@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>以 CLI 方式运行 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/cli.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;以 CLI 方式运行    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>以CLI方式运行</h1>
+
+<p>
+  除了可以在浏览器中通过URL调用一个 <a href="controllers.html">控制器</a> 外,也可以通过命令行接口(CLI)调用。
+</p>
+
+
+<ul>
+<li><a href="#what">什么是CLI?</a></li>
+<li><a href="#why">为什么使用这种方式?</a></li>
+<li><a href="#how">它如何工作?</a></li>
+</ul>
+
+
+<a name="what"></a>
+<h2>什么是CLI?</h2>
+
+<p><dfn>命令行接口是一种基于文本的和计算机交互的方式。</dfn> 如果想查看更详细说明,请看<a href="#">Wikipedia article</a>.</p>
+
+<a name="why"></a>
+
+<h2>为什么使用命令行?</h2>
+
+<p>
+  虽然不是必须的,但在某些情况下我们会用到命令行</p>
+
+<ul>
+  <li>使用 cron 定时运行任务而不需要使用 wget 或 curl</li>
+  <li>通过检查 <kbd>$this-&gt;input-&gt;is_cli_request()</kbd> 让你的 cron 任务无法通过网址访问到</li>
+  <li>让交互式任务可以做设置权限、清空缓存、执行备份等操作</li>
+  <li>与其他语言进行集成。比如一个 C++ 脚本可以调用一条指令来运行你模型中的代码!</li>
+</ul>
+
+<a name="how"></a>
+<h2>让我们试一试:Hello World!</h2>
+
+<p>首先创建一个简单的控制器。使用你的文本编辑器,创建一个叫做 <dfn>tools.php</dfn> 的文件,并且输入如下代码:</p>
+
+<textarea class="textarea" style="width:100%" cols="50" rows="10">
+&lt;?php
+class Tools extends CI_Controller &#123;
+
+  public function message($to = 'World')
+  &#123;
+    echo "Hello &#123;$to&#125;!".PHP_EOL;
+  &#125;
+&#125;
+?&gt;
+</textarea>
+
+<p>然后将这个文件保存到你的 <dfn>application/controllers/</dfn> 文件夹里。</p>
+
+<p>现在正常情况下你可以通过你网站的 URL 来访问它:</p>
+
+<code>example.com/index.php/<var>tools</var>/<var>message</var>/<var>to</var></code>
+
+<p>除此之外,我们也可以在 Mac/Linux 中打开终端,或者在 Windows 下进入“运行”输入“cmd”,并进入我们的 CodeIgniter 项目的目录。</p>
+
+<blockquote>
+  $ cd /path/to/project;<br/>
+  $ php index.php tools message
+</blockquote>
+
+<p>如果你跟着一步步下来,你应该会看到 <samp>Hello World!</samp>。</p>
+
+<blockquote>
+  $ php index.php tools message "John Smith"
+</blockquote>
+
+<p>这里我们像使用 URL 参数一样给它传递了一个参数。“John Smith”作为一个参数被传递了,并且输出也变成:<samp>Hello John Smith!</samp>。</p>
+
+<h2>就是这样!</h2>
+
+<p>简单的来说,这就是全部你需要知道的有关命令行中使用控制器的事情了。记住这只是一个普通的控制器,所以路由和 _remap 也照样工作。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+baiyuxiong, csfhc, Hex, tinsn, upsuper, yinsigan</div>
+<div id="DocDate">
+最后修改: 2013-11-02 07:39:23</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="urls.html">CodeIgniter URL</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="reserved_names.html">保留字</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 130 - 0
general/common_functions.html

@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>公共函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/common_functions.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;公共函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>公共函数</h1>
+
+<p  class="important">注:本条为本人添加。公共函数位于 system/core/Common.php 文件中,大家可以在这里定义自己的公共函数。--IT不倒翁</p>
+<p>CodeIgniter 使用了一些全局定义的函数来完成操作,在任何情况下你都能够使用这些函数。使用他们不需要载入任何类库或辅助函数。</p>
+
+
+<h2>is_php('<var>version_number</var>')</h2>
+
+<p>is_php() 判断正在使用的PHP的版本号是否高于你所提供的 <var>version_number</var> 。</p>
+
+<code>if (is_php('5.3.0'))<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;$str = quoted_printable_encode($str);<br />
+&#125;</code>
+
+<p>如果已安装的PHP版本号等于或高于你所提供的版本号,本函数将返回布尔值 <kbd>TRUE</kbd>。如果安装的PHP版本号低于你所提供的那个版本号,本函数将返回 <kbd>FALSE</kbd>。</p>
+
+
+<h2>is_really_writable('<var>path/to/file</var>')</h2>
+
+<p>在Windows平台,is_writable()函数在实际没有文件写权限时也返回真。那是因为,只有文件有只读属性时,操作系统才向PHP报告为假。这个函数依靠对文件的先行写入来判断是否真的具有写权限。 通常情况下,只有在这个信息不可靠的平台上才推荐使用。</p>
+<p><span style="color:red;">注:</span>此函数也可用于判断文件夹是否有可写权限。</p>
+<code>if (is_really_writable('file.txt'))<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;I could write to this if I wanted to&quot;;<br />
+&#125;<br />
+else<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;File is not writable&quot;;<br />
+&#125;</code>
+
+
+<h2>config_item('<var>item_key</var>')</h2>
+
+<p>尽管使用config_item()函数能够取得单个配置信息,但是<a href="../libraries/config.html">配置类</a>是访问这些信息的优选方式。更多信息请见类库参考。</p>
+<p><span style="color:red;">注:</span>此函数获取的是从config文件直接获取的值,无法取得<a href="../libraries/config.html">配置类</a> set_item() 函数变更后的值。</p>
+<h2>show_error('<var>message</var>'), show_404('<var>page</var>'), log_message('<var>level</var>', '<samp>message</samp>')</h2>
+
+<p>这些函数在<a href="errors.html">错误处理</a>中描述。</p>
+
+
+<h2>set_status_header(<var>code</var>, '<var>text</var>');</h2>
+
+<p>允许你手动设置服务器状态头(header)。例如:</p>
+
+<code>set_status_header(401);<br />
+// 将header设置为:  Unauthorized</code>
+
+<p><a href="#" target="_blank">单击这里</a> 查看全部的header列表。</p>
+
+<h2>remove_invisible_characters(<var>$str</var>)</h2>
+<p>这个函数能防止在ASCII字符之间插入空字符,如Java\0script.</p>
+
+<h2>html_escape(<var>$mixed</var>)</h2>
+<p>利用此功能可以方便的使用htmlspecialchars()函数。它接受字符串和数组。有助于防止跨站脚本攻击(XSS)。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+actionbi, Hex, IT不倒翁, lishen2, walkbird, yinzhili, 我是我, 暗夜星辰</div>
+<div id="DocDate">
+最后修改: 2012-05-01 21:58:48</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="autoloader.html">自动装载资源</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="routing.html">URI 路由</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 290 - 0
general/controllers.html

@@ -0,0 +1,290 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>控制器 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/controllers.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;控制器    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>控制器</h1>
+<p>控制器是应用程序的心脏,因为它们决定如何处理 HTTP 请求。</p>
+<ul>
+    <li><a href="#what">什么是控制器?</a></li>
+    <li><a href="#hello">Hello World</a></li>
+    <li><a href="#functions">方法</a></li>
+    <li><a href="#passinguri">将 URI 片段传递给方法</a></li>
+    <li><a href="#default">定义一个默认控制器</a></li>
+    <li><a href="#remapping">重新定义方法的调用规则</a></li>
+    <li><a href="#output">控制数据输出</a></li>
+    <li><a href="#private">私有方法</a></li>
+    <li><a href="#subfolders">如何将控制器放入子文件夹中</a></li>
+    <li><a href="#constructors">构造函数</a></li>
+    <li><a href="#reserved">已保留的方法名称</a></li>
+</ul>
+<p><a name="what"></a></p>
+<h2>什么是控制器?</h2>
+<p><dfn>简而言之,一个控制器就是一个类文件,是以一种能够和 URI 关联在一起的方式来命名的。</dfn></p>
+<p>假设这个 URI:</p>
+<code>example.com/index.php/<var>blog</var>/</code>
+<p>在上面的例子中,CodeIgniter 将尝试寻找并装载一个名为 <dfn>blog.php</dfn> 的控制器。</p>
+<p><strong>当控制器的名字匹配 URI 的第一段时,它将被装载。</strong></p>
+<p><a name="hello"></a></p>
+<h2>让我们试试看:&nbsp; Hello World!</h2>
+<p>我们来创建一个简单的控制器,以便更直观地了解其工作原理。使用你的文本编辑器,创建一个名为 <dfn>blog.php</dfn> 的文件,然后输入下列代码:</p>
+<p><textarea class="textarea" style="width: 100%" rows="14" cols="50">&lt;?php
+class Blog extends CI_Controller &#123;
+
+ function __construct()
+ &#123;
+  parent::__construct();
+ &#125;
+
+ public function index()
+ &#123;
+  echo 'Hello World!';
+ &#125;
+&#125;
+?&gt;</textarea></p>
+<p>然后保存文件到 <dfn>application/controllers/</dfn> 文件夹。</p>
+<p>现在使用类似这样的 URL 访问你的站点:</p>
+<code>example.com/index.php/<var>blog</var>/</code>
+<p>如果你做的没错,你应该看到<samp>Hello World!</samp>.</p>
+<p>注意:类名必须以大写字母开头。换句话说,这是有效的:</p>
+<p><code>&lt;?php<br />
+class <var>Blog</var> extends CI_Controller &#123;<br />
+<br />
+&#125;<br />
+?&gt;</code></p>
+<p>下面的blog首字母b小写,是属于<strong>无效</strong>的写法:</p>
+<p><code>&lt;?php<br />
+class <var>blog</var> extends CI_Controller &#123;<br />
+<br />
+&#125;<br />
+?&gt;</code></p>
+<p>同时,始终确保你的控制器<dfn>扩展</dfn>自父控制器类,以便它能够继承其所有的方法。</p>
+<p><a name="functions"></a></p>
+<h2>方法</h2>
+<p>上面的例子中用到的方法名是 <dfn>index()</dfn>。如果 URI 的<strong>第二部分</strong>为空的话,会默认载入 &ldquo;index&rdquo; 方法。也可以将地址写成这样来访问 &ldquo;Hello World&rdquo;:</p>
+<code>example.com/index.php/<var>blog</var>/<samp>index</samp>/</code>
+<p><strong>URI 的第二部分是用来决定调用控制器中哪个方法的。</strong></p>
+<p>我们再来试试。在你的控制器中加入一个新的方法:</p>
+<p><textarea class="textarea" style="width: 100%" rows="19" cols="50">&lt;?php
+class Blog extends CI_Controller &#123;
+
+ function __construct()
+ &#123;
+  parent::__construct();
+ &#125;
+
+ public function index()
+ &#123;
+  echo 'Hello World!';
+ &#125;
+
+ public function comments()
+ &#123;
+  echo '看这里!';
+ &#125;
+&#125;
+?&gt;</textarea></p>
+<p>现在在地址栏中输入下面的内容来访问 <dfn>comments</dfn> 方法:</p>
+<code>example.com/index.php/<var>blog</var>/<samp>comments</samp>/</code>
+<p>你应该看到新的信息了:看这里!</p>
+<p><a name="passinguri"></a></p>
+<h2>将 URI 片段传递给方法</h2>
+<p>如果你的 URI 超过两个部分,那么超过的将被作为参数传递给方法。</p>
+<p>举例来说,如果你的 URI 是这样的:</p>
+<code>example.com/index.php/<var>products</var>/<samp>shoes</samp>/<kbd>sandals</kbd>/<dfn>123</dfn></code>
+<p>URI 的第3和第4部分会被传递给你的方法(&ldquo;sandals&rdquo; 和 &ldquo;123&rdquo;):</p>
+<p><code>&lt;?php<br />
+class Products extends CI_Controller &#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;public function shoes($sandals, $id)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $sandals;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $id;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;<br />
+?&gt; </code></p>
+<p>上面的方法调用时必须给两个相应的参数,要不然会出错。当然你也可以像下面这样写,就不用在调用的时候给参数了!</p>
+<p><code>&lt;?php<br />
+class Products extends CI_Controller &#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;public function shoes($sandals='Test', $id=1)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $sandals;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $id;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;<br />
+?&gt; </code></p>
+<p class="important"><strong>注意:</strong>如果你使用 <a href="routing.html">URI 路由</a>特性,则传递到方法中的 URI 片段将被重新路由一次。</p>
+
+<a name="default"></a>
+<h2>定义默认控制器</h2>
+<p>当你的网站不存在某个URI 或者 用户直接从根目录访问的时候,CodeIgniter 会加载默认控制器。打开 <dfn>application/config/routes.php</dfn> 文件来设置默认控制器:</p>
+<p><code>$route['default_controller'] = '<var>Blog</var>';</code></p>
+<p>这里的 <var>Blog</var> 就是你希望使用的控制器的名字。如果此时你不指定任何 URI 片段来访问你的主页就会看到默认的&ldquo;Hello World&rdquo;信息。</p>
+
+<a name="remapping"></a>
+<h2>重新定义方法的调用规则</h2>
+<p>如上所述,URI 的第二片段决定会调用控制器中的哪个方法。CodeIgniter 允许你使用 <kbd>_remap()</kbd> 方法来废除这种规则:</p>
+<p><code>public function _remap()<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;// Some code here...<br />
+&#125;</code></p>
+<p class="important"><strong>注意:</strong>如果你的控制器中包含一个名为 <kbd>_remap() </kbd>的方法,那么不管你的 URI 中包含什么,它<strong>总会</strong>被忽略掉。这个方法会废除掉由 URI 片段来决定哪个方法被调用的规则,允许你重新定义调用方法的规则(方法的路由规则)。</p>
+<p>被重新定义的方法调用方式(一般是 URI 中的第二片段)将作为一个参数传递给 <kbd>_remap() </kbd>:</p>
+<code>public function _remap(<var>$method</var>)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if ($method == 'some_method')<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;$method();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;else<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;comments();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;</code>
+
+<p>任何附加在该方法名称之后的段都会被视为 <kbd>_remap()</kbd> 的第二个参数(可选)。这个可选的数组参数可以与PHP的<a href="#" target="_blank">call_user_func_array</a>联用,模拟CodeIgniter的默认行为。</p>
+
+<code>public function _remap($method, $params = array())<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;$method = 'process_'.$method;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;if (method_exists($this, $method))<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return call_user_func_array(array($this, $method), $params);<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;show_404();<br />
+&#125;</code>
+
+<a name="output"></a>
+<h2>处理输出</h2>
+<p>CodeIgniter 拥有一个输出类用来确保你修改的数据会自动被传递给浏览器。关于这个的更多信息可以在<a href="views.html">视图</a>和<a href="../libraries/output.html">输出类</a>里找到。有些时候,你可能想要自己发布修改一些最终的数据或是自己把它传递给浏览器。CodeIgniter 允许你给你的控制器增加一个名为 <span class="STYLE1"><strong><font color="#00620c">_output()</font></strong></span> 的方法来接收最终的数据。</p>
+<p><strong>注意:</strong>&nbsp;如果你的控制器包含一个 <kbd>_output()</kbd> 方法,那么它将<strong>总是</strong>被调用,而不是直接输出最终的数据。这个方法类似于OO里的析构函数,不管你调用任何方法这个方法总是会被执行。</p>
+<p>例如:</p>
+<code>public function _output($output)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo $output;<br />
+&#125;</code>
+<p class="important">请注意,你的 <dfn>_output()</dfn> 将接收最终的数据。 Benchmark和内存的使用率数据将被渲染,缓存文件会被写入(如果已启用缓存),并且 HTTP 头也将被发送(如果您使用该<a href="../libraries/output.html">功能</a>),然后交给 _output() 函数。<br />
+<br />
+为了让你的控制器输出缓存正确, 它的 <dfn>_output()</dfn> 函数可以这样来写:<br />
+
+<code>if ($this-&gt;output-&gt;cache_expiration &gt; 0)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;output-&gt;_write_cache($output);<br />
+  &#125;</code>
+
+如果您正在使用页面执行时间和内存使用统计的功能,这可能不完全准确,因为他们不会考虑到你所做的任何进一步的动作。请在<a href="../libraries/output.html">输出类</a>参用可用的方法,来控制输出以使其在任何最终进程完成之前执行。
+
+<a name="private"></a>
+<h2>私有方法</h2>
+<p>在某些情况下,你可能想要隐藏一些方法使之无法对外查阅。将方法私有化很简单,只要在方法名字前面加一个下划线(&ldquo;_&rdquo;)做前缀就无法通过 URL 访问到了。例如,如果你有一个像这样的方法:</p>
+<p><code>private function _utility()<br />
+&#123;<br />
+&nbsp;&nbsp;// some code<br />
+&#125;</code></p>
+<p>那么,通过下面这样的 URL 进行访问是无法访问到的:</p>
+<code>example.com/index.php/<var>blog</var>/<samp>_utility</samp>/</code>
+
+<a name="subfolders"></a>
+<h2>如何将控制器放入子文件夹中</h2>
+<p>如果你在建立一个大型的应用程序,你会发现 CodeIgniter 可以很方便的将控制器放到一些子文件夹中。</p>
+<p>只要在 <dfn>application/controllers</dfn> 目录下创建文件夹并放入你的控制器就可以了。</p>
+<p><strong>注意:</strong>&nbsp; 如果你要使用某个子文件夹下的功能,就要保证 URI 的第一个片段是用于描述这个文件夹的。例如说你有一个控制器在这里:</p>
+<p><code>application/controllers/<kbd>products</kbd>/shoes.php</code></p>
+<p>调用这个控制器的时候你的 URI 要这么写:</p>
+<code>example.com/index.php/products/shoes/show/123</code>
+<p>你的每个子文件夹中需要包含一个默认的控制器,这样如果 URI 中只有子文件夹而没有具体功能的时候它将被调用。只要将你作为默认的控制器名称在 <dfn>application/config/routes.php</dfn> 文件中指定就可以了。</p>
+<p>CodeIgniter 也允许你使用 <a href="routing.html">URI 路由</a> 功能来重新定向 URI。</p>
+<h2><a name="constructors"></a>构造函数</h2>
+<p>如果要在你的任意控制器中使用构造函数的话,那么<strong>必须</strong>在里面加入下面这行代码:</p>
+<p><code>parent::__construct();</code></p>
+<p>这行代码的必要性在于,你此处的构造函数会覆盖掉这个父控制器类中的构造函数,所以我们要手动调用它。</p>
+<code>&lt;?php<br />
+class <kbd>Blog</kbd> extends CI_Controller &#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function <kbd>__construct()</kbd><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<var>parent::__construct();</var><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;<br />
+?&gt;</code>
+<p>如果你需要设定某些默认的值或是在实例化类的时候运行一个默认的程序,那么构造函数在这方面就非常有用了。<br />
+构造函数并不能返回值,但是可以用来设置一些默认的功能。</p>
+
+<a name="reserved"></a>
+<h2>已保留的方法名称</h2>
+
+<p>因为你添加的控制器类继承了主要的应用程序控制器,所以你要小心你的方法名不要和那个类中的方法名一样了,否则你的方法会覆盖原有的。详细信息请查看<a href="reserved_names.html">保留字</a>部分。</p>
+
+<h2>就这样了!</h2>
+<p>OK,总的来说,这就是关于控制器的所有内容了。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+34333432, alsove, ashmodeus, bin_live, crazyant_ps2, dawenxi123, hewenxiang, Hex, irini, liuyanghejerry, li_star, longjianghu, lp_ci, vvchuanqi, zhangqianxun</div>
+<div id="DocDate">
+最后修改: 2012-06-04 16:28:02</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="urls.html">CodeIgniter URL</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="reserved_names.html">保留字</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 179 - 0
general/core_classes.html

@@ -0,0 +1,179 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>创建核心系统类 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/core_classes.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;创建核心系统类    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>创建核心系统类</h1>
+
+<p>每次CodeIgniter运行时都有很多基础类作为核心框架的一部分被自动初始化.但你也可以使用经过你修改的类来替换甚至扩展这些原始的核心系统类.</p>
+
+<p><strong>大多数用户一般不会有这种需求,但对于那些想较大幅度的改变CodeIgniter的人来说,我们依然提供了替换和扩展核心系统类的选择.</strong>
+</p>
+
+<p class="important"><strong>注意:</strong>&nbsp; 改变系统核心类会产生很大影响,所以在你做之前必须清楚地知道自己正在做什么.</p>
+
+
+<h2>系统类清单</h2>
+
+<p>以下是系统核心文件的清单,它们在每次CodeIgniter启动时被调用:</p>
+
+<ul>
+<li>Benchmark</li>
+<li>Config</li>
+<li>Controller</li>
+<li>Exceptions</li>
+<li>Hooks</li>
+<li>Input</li>
+<li>Language</li>
+<li>Loader</li>
+<li>Log</li>
+<li>Output</li>
+<li>Router</li>
+<li>URI</li>
+<li>Utf8</li>
+</ul>
+
+<h2>替换核心类</h2>
+
+<p>要使用你自己的系统类替换默认类只需简单的将你自己的 .php 文件放入本地文件夹 <dfn>application/core</dfn></p>
+
+<code>application/core/<dfn>some-class.php</dfn></code>
+
+<p>如果这个文件夹不存在你可以自己创建一个.</p>
+
+<p>只要你自定义的文件名与默认的完全一样,它就会自动替换原有的类.</p>
+
+<p>要注意的是你自定义的类必须以CI作为前缀,例如你自己建立了<kbd>Input.php</kbd>类的名字必须是:</p>
+
+<code>
+class CI_Input &#123;<br /><br />
+
+&#125;
+</code>
+
+
+
+<h2>扩展核心类</h2>
+
+<p>如果你需要在现有类库中加入一两个新的功能,那就完全不必要替换整个类库文件.你只需简单地扩展(继承)现有的类,扩展一个类就像在类中增加一些例外:</p>
+
+<ul>
+
+<li>扩展的类必须申明由父类扩展而来.</li>
+<li>新扩展的类所在的文件必须以 <kbd>MY_</kbd> 为前缀(这个选项是可配置的,下面有说明).</li>
+</ul>
+
+<p>例如,要扩展原有的<kbd>Input</kbd> 类,你应该新建一个文件名为<dfn>application/core/</dfn><kbd>MY_Input.php</kbd>, 并按如下声明你的类:</p>
+
+<code>
+class MY_Input extends CI_Input &#123;<br /><br />
+
+&#125;</code>
+
+<p>注意:如果你需要在类中使用构造函数,你必须在构造函数中显式继承父类构造函数:</p>
+
+<code>
+class MY_Input extends CI_Input &#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function __construct()<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;</code>
+
+<p class="important"><strong>Tip:</strong>&nbsp; 所有在你的新类中定义的函数如果与父类中函数的命名完全一样,这些函数就能取代父类中原有的函数
+(这也被称为"方法覆盖").这允许你在本质上改变CodeIgniter的核心.</p>
+
+<p>如果你扩展了控制器核心类,那么也要在你的应用程序控制器的构造函数中使用这个新类。</p>
+
+<code>class Welcome extends MY_Controller &#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function __construct()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function index()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('welcome_message');<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;</code>
+
+<h3>自定义前缀</h3>
+
+<p>要设定你自己的子类前缀,请打开<dfn>application/config/config.php</dfn> 文件并找到这一项:</p>
+
+<code>$config['subclass_prefix'] = 'MY_';</code>
+
+<p>请注意所有原始CodeIgniter类库以 <kbd>CI_</kbd> 作为前缀,所以请勿以CI_作为你自己的前缀.<b>所有的扩展核心类必须放到core目录中!</b></p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+dustin, Hex, longbill, qixingyue, skey, thinksand</div>
+<div id="DocDate">
+最后修改: 2014-02-14 14:54:29</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="creating_libraries.html">创建你自己的程序库</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="hooks.html">钩子 - 扩展核心</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 99 - 0
general/creating_drivers.html

@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>创建适配器 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/creating_drivers.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;创建适配器    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>创建适配器</h1>
+
+<h2>适配器目录和文件结构</h2>
+
+<p>适配器目录和文件结构布局的例子:</p>
+
+<ul>
+  <li>/application/libraries/Driver_name
+    <ul>
+      <li>Driver_name.php</li>
+
+      <li>drivers
+        <ul>
+          <li>Driver_name_subclass_1.php</li>
+          <li>Driver_name_subclass_2.php</li>
+          <li>Driver_name_subclass_3.php</li>
+        </ul>
+      </li>
+    </ul>
+
+  </li>
+</ul>
+
+<p class="important"><strong>注意:</strong> 为了在大小写敏感的文件系统上维持兼容性,这个 <samp>Driver_name</samp> 目录必须使用 <var>ucfirst()</var> 函数处理。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+crazyant_ps2, Hex, hk_yuhe, IT不倒翁, mahone, qixingyue, tinsn</div>
+<div id="DocDate">
+最后修改: 2012-06-05 19:05:24</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="drivers.html">使用 CodeIgniter 适配器</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="core_classes.html">创建核心系统类</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 266 - 0
general/creating_libraries.html

@@ -0,0 +1,266 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>创建你自己的类库 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/creating_libraries.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;创建你自己的类库    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>创建类库</h1>
+
+<p>当我们使用术语"类库"时,我们一般指的是位于<kbd>libraries</kbd> 文件夹中的类,它们在wiki的"类库参考"这个板块被讨论.在当前这个话题中,我们将讨论如何在 <dfn>application/libraries</dfn> 文件夹中建立你自己的类库,并使它们与全框架的资源维持分离.</p>
+
+<p>作为一个额外的功能,当你需要在原始类中简单地添加一些功能时,CodeIgniter能使你的类库<kbd>extend</kbd> 自原始类.你甚至可以通过在<dfn>application/libraries</dfn>文件夹下安放同名类库文件的方法来完全替换原始类.</p>
+
+<p>总之:</p>
+
+<ul>
+<li>你可以创建全新的类库.</li>
+<li>你可以扩展原始类库.</li>
+<li>你可以替换原始类库.</li>
+</ul>
+
+<p>以下页面将深入介绍这三个概念.</p>
+
+<p class="important"><strong>注意:</strong> 除了数据库类无法被扩展或替换,剩余其他类均可。</p>
+
+
+<h2>建立你的类库文件</h2>
+
+<p>你的类库文件必须保存在 <dfn>application/libraries</dfn> 文件夹,CodeIgniter将在这个文件夹中寻找并初始化它们.</p>
+
+
+<h2>命名约定</h2>
+
+<ul>
+<li>文件名首字母大写. 例如:&nbsp; <dfn>Myclass.php</dfn></li>
+
+<li>类声明首字母大写. 例如:&nbsp;  <kbd>class Myclass</kbd></li>
+<li>类的名字和文件名应相同.</li>
+</ul>
+
+
+<h2>类文件</h2>
+
+<p>所有的类应有基础原型(注意,这里我们以 <kbd>Someclass</kbd> 这个名字为例):</p>
+
+<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
+<br /><br />
+class Someclass &#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;public function some_function()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;<br /><br />
+/* End of file Someclass.php */</code>
+
+<h2>使用你自己的类</h2>
+
+<p>在所有的<a href="controllers.html">Controller</a> 函数中,你可以用以下的标准方式初始化你的类:</p>
+
+<code>$this-&gt;load-&gt;library('<kbd>someclass</kbd>');</code>
+
+<p>当 <em>someclass</em> 是文件名时,不用加上".php"扩展名.这里名字不分大小写.</p>
+
+<p>一旦你自定义的类加载完毕,你可以通过以下方式调用类,注意使用 <kbd>小写</kbd> 的名字:</p>
+
+<code>$this-&gt;<kbd>someclass</kbd>-&gt;some_function();&nbsp; // 对象的实例名永远都是小写的
+</code>
+
+
+
+<h2>在初始化自定义类时传递参数</h2>
+
+<p>当初始化类库时,你可以通过第二个参数动态的传递数组到类的构造函数中去:</p>
+
+<code>
+$params = array('type' => 'large', 'color' => 'red');<br />
+<br />
+$this-&gt;load-&gt;library('Someclass', <kbd>$params</kbd>);</code>
+
+<p>当你使用这个特性时,你必须为类的构造函数加上参数:</p>
+
+<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');<br />
+
+<br />
+class Someclass &#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;public function __construct($params)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Do something with $params<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;<br /><br />
+?&gt;</code>
+
+<p class="important">你也可以传递存于配置文件中的参数.你只需简单的建立一个与 <kbd>类文件名</kbd>相同的config文件,并保存在 <dfn>application/config/</dfn> 文件夹中.注意当你通过上文所述的方式动态传递参数时,config文件中的选项将不起作用.</p>
+
+
+<h2>在你自定义的类库中初始化CodeIgniter资源</h2>
+
+<p>要你自定义的类库中访问CodeIgniter的原始资源,你必须使用 <kbd>get_instance()</kbd> 函数.这个函数返回一个CodeIgniter super object.</p>
+
+<p>一般来说在你的控制器函数中你可以通过 <kbd>$this</kbd> 调用任何可用的CodeIgniter函数:</p>
+
+<code>
+<strong>$this</strong>-&gt;load-&gt;helper('url');<br />
+<strong>$this</strong>-&gt;load-&gt;library('session');<br />
+<strong>$this</strong>-&gt;config-&gt;item('base_url');<br />
+//etc.
+</code>
+
+<p><kbd>$this</kbd>, 只直接作用在你自己的控制器,模型和视图中.当你在自定义类中想使用CodeIgniter原始类时,你可以这样做:</p>
+
+
+<p>首先,定义CodeIgniter对象赋给一个变量:</p>
+
+<code>$CI =& get_instance();</code>
+
+<p>一旦定义某个对象为一个变量,你就可以使用那个变量名 <em>取代</em>  <kbd>$this</kbd>:</p>
+
+<code>
+$CI =& get_instance();<br /><br />
+$CI-&gt;load-&gt;helper('url');<br />
+$CI-&gt;load-&gt;library('session');<br />
+$CI-&gt;config-&gt;item('base_url');<br />
+//etc.
+</code>
+
+<p class="important"><strong>注意:</strong> 你将注意到get_instance()这个函数通过被引用的方式被传递:<br /><br />
+<var>$CI =&amp; get_instance();</var>
+<br /><br />
+<kbd>这十分重要.</kbd> 通过引用的方式赋给变量将使用原始的 CodeIgniter 对象,而不是创建一个副本。</p>
+
+
+<h2>用你自己的类替换原始类</h2>
+
+<p>简单的将你自己的类命名为与原始类一样就能使CodeIgniter使用这个新类.要使用这个特性,文件名与类声明必须与原始类完全一致。例如,要替换原始的 <kbd>Email</kbd> 类库。你必须创建一个文件<dfn>application/libraries/Email.php</dfn>, 并按如下方式声明类:</p>
+
+<code>
+class CI_Email &#123;<br /><br />
+
+&#125;</code>
+
+<p>注意大多数原始类以<kbd>CI_</kbd>为前缀.</p>
+
+<p>你可以只用标准载入函数来载入你自己的类:</p>
+
+<code>$this-&gt;load-&gt;library('<kbd>email</kbd>');</code>
+
+<p class="important"><strong>注意:</strong> 这个时候Database无法替换为你自定义的类.</p>
+
+
+<h2>扩展现有类</h2>
+
+<p>如果你需要在现有类库中加入一两个新的功能,那就完全不必要替换整个类库文件.你只需简单地扩展(继承)现有的类,扩展一个类就像在类中增加一些例外:</p>
+
+<ul>
+<li>扩展的类必须申明由父类扩展而来.</li>
+<li>新扩展的类所在的文件必须以 <kbd>MY_</kbd> 为前缀(这个选项是可配置的,下面有说明).</li>
+
+</ul>
+
+<p>例如,要扩展原始类 <kbd>Email</kbd> 类你要建立文件 <dfn>application/libraries/</dfn><kbd>MY_Email.php</kbd>, 并按如下方式在文件中声明:</p>
+
+<code>
+class MY_Email extends CI_Email &#123;<br /><br />
+
+&#125;</code>
+
+<p>注意:如果你需要在类中使用构造函数,你必须在构造函数中显式继承父类构造函数:</p>
+
+
+<code>
+class MY_Email extends CI_Email &#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;public function __construct()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+
+&#125;</code>
+
+
+<h3>载入你的子类</h3>
+
+<p>要载入扩展子类,你应该使用标准字符名.  请不要使用前缀.  例如,要载入上文说过的email扩展子类,你应该这样写:</p>
+
+<code>$this-&gt;load-&gt;library('<kbd>email</kbd>');</code>
+
+<p>扩展子类一旦被载入,就能像一般的类一样使用它们.  Email类中的所有函数就能被调用:</p>
+
+<code>$this-&gt;<kbd>email</kbd>-&gt;some_function();</code>
+
+<h3>设定自定义前缀</h3>
+
+<p>要设定你自己的子类前缀,请打开 <dfn>application/config/config.php</dfn> 文件并找到这一项:</p>
+
+<code>$config['subclass_prefix'] = 'MY_';</code>
+
+<p>注意所有原始CodeIgniter类库以 <kbd>CI_</kbd> 作为前缀,所以请勿以CI_作为你自己的前缀.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+benfeng, billycui, Deloz, dustin, Hex, IT不倒翁, shishirui, soyota, thinksand, walkbird, 志明</div>
+<div id="DocDate">
+最后修改: 2014-04-09 17:17:10</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="libraries.html">使用 CodeIgniter 程序库</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="drivers.html">使用 CodeIgniter 适配器</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 83 - 0
general/credits.html

@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>关于 CodeIgniter - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/credits.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;关于 CodeIgniter    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>关于 CodeIgniter</h1>
+
+<p>CodeIgniter 最早是由 <a href="#">Rick Ellis</a> 开发(<a href="#">EllisLab 公司</a>的 CEO)。这个框架是为真实应用而编写的,集成了很多类库、辅助函数(helpers)以及从 <a href="#">ExpressionEngine</a> 借用的子系统。</p>
+
+<p>CodeIgniter 当前由“ExpressionEngine 开发团队”开发并维护。<br />
+Bleeding edge development is spearheaded by the handpicked contributors of the Reactor Team.</p>
+
+<p>来自 Ruby on Rails 的灵感启发我们创造了一个 PHP 框架,并且将框架的概念引入到网络社区的一般意识中。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+csfhc, Hex, imjie, irini</div>
+<div id="DocDate">
+最后修改: 2014-01-01 21:43:00</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="../changelog.html">变更记录</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="../installation/downloads.html">下载 CodeIgniter</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 101 - 0
general/drivers.html

@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>使用 CodeIgniter 适配器 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/drivers.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;使用 CodeIgniter 适配器    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>使用 CodeIgniter 适配器</h1>
+
+<p>适配器是一种特殊的库,它有一个父类和任意数量的子类。子类可以访问其父类元素,但不能访问其兄弟类的元素。在你的<a href="controllers.html">控制器</a>中,适配器为类库提供了一种优雅的语法,因此类库会就此获益甚至会需要分解成离散的类。</p>
+
+<p>适配器的源文件存放在<dfn>system/libraries</dfn> 目录下, 命名一个和类名字相同的文件夹,文件夹下存放该类。同时在该文件夹中,有一个子文件夹叫做  <kbd>drivers</kbd>在其中包含了所有的子类。</p>
+
+<p>要使用一个适配器,你需要在一个控制器里用如下的初始化函数初始它:</p>
+
+<code>$this-&gt;load-&gt;driver('<var>class name</var>'); </code>
+
+<p>这里的<var>class name</var> 是你想加载的适配器的名字。 比如说你想加载一个叫做"Some Parent"的适配器,你可以这样:</p>
+
+<code>$this-&gt;load-&gt;driver('<var>some_parent</var>');</code>
+
+<p>适配器类中的方法可以用如下的方式来调用:</p>
+
+<code>$this-&gt;some_parent-&gt;some_method();</code>
+
+<p>这些作为子类的适配器能直接通过父类调用,而不用初始化。</p>
+
+<code>$this-&gt;some_parent-&gt;child_one-&gt;some_method();<br />
+$this-&gt;some_parent-&gt;child_two-&gt;another_method();</code>
+请查看缓存适配器的<a href="../drivers/caching.html#file">文件缓存</a>使用方法
+<h2>创建自己的适配器</h2>
+
+<p>如果想创建自己的适配器,请阅读用户手册中关于<a href="creating_drivers.html">创建适配器</a>的部分.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+amos, crazyant_ps2, Hex, qixingyue, ripen, tinsn, TomLiu, zhangqianxun</div>
+<div id="DocDate">
+最后修改: 2012-11-21 07:00:58</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="creating_libraries.html">创建你自己的程序库</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="creating_drivers.html">创建适配器</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 120 - 0
general/environments.html

@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>处理多环境 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/environments.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;处理多环境    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>处理多环境</h1>
+
+<p>
+    开发者通常希望就开发环境或者生产环境的不同而有不同的系统行为(响应)。
+  例如,输出冗长的错误对开发过程很有用,但是当项目上线时这可能会造成一些安全问题。
+</p>
+
+<h2>ENVIRONMENT 常量</h2>
+
+<p>
+    默认情况下 CodeIgniter 把环境常量设置为
+    '<kbd>development</kbd>'. 在 index.php 文件的顶部,你会看到:
+</p>
+
+<code>
+define('<var>ENVIRONMENT</var>', '<var>development</var>');
+</code>
+
+<p>
+  除了影响一些基本框架行为外(查看下一章节),
+  你还可以在开发过程中用这个常量来区分正在运行的是哪个环境。
+</p>
+
+<h2>对默认框架行为的影响</h2>
+
+<p>
+    CodeIgniter 系统有些地方使用了 <kbd>ENVIRONMENT</kbd> 常量。
+    在这一章节会说明默认情况下环境常量对框架行为的影响。
+</p>
+
+<h3>错误报告</h3>
+
+<p>
+    设置 <kbd>ENVIRONMENT</kbd> 常量为 '<kbd>development</kbd>' 值将会允许所有PHP错误报告都输出到浏览器。
+  相反的,设置常量为 '<kbd>production</kbd>' 将会禁止所有错误报告的输出。
+  在产品中禁用错误报告是一个 <a href="security.html">不错的安全措施</a>。
+</p>
+
+<h3>配置文件</h3>
+
+<p>
+    可选的,你可以让 CodeIgniter 加载特定环境的配置文件。
+  这可能会对管理如在多环境使用不同API密钥这样的事情很有用。
+  这在文档<a href="../libraries/config.html#environments">配置类</a>“环境”一节有详细的说明。
+</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, xwjie</div>
+<div id="DocDate">
+最后修改: 2012-02-11 00:32:10</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="managing_apps.html">管理应用程序</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="alternative_php.html">PHP 替代语法</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 126 - 0
general/errors.html

@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>错误处理 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/errors.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;错误处理    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>错误处理</h1>
+
+<p>在你的程序里使用以下的函数,CodeIgniter将允许你建立自己的错误报告。另外,他有一个错误记录类能够将错误和调试信息保存为文本文档。</p>
+
+<p class="important"><strong>注意:</strong> 在默认的情况下, CodeIgniter 会显示所有的PHP错误. 但是当你开发程序结束时,你可能想要改变这个情况. 你会发现在index.php文件顶端有这个函数<dfn>error_reporting()</dfn>,通过它可以进行对错误的设置。 即使你关闭了错误报告,当有错误发生时,错误记录也不会停止。</p>
+
+<p>不像大多数系统, CodeIgniter的错误报告函数是一个简单的程序接口,可以在整个应用程序里使用。 不用考虑类或者是函数的范围,这种办法可以直接触发错误通知。</p>
+
+<p>可以使用以下函数来产生错误消息:</p>
+
+<h2>show_error('<var>消息</var>' [, int <var>$status_code</var> = 500 ] [, string <var>$heading</var> = 'An Error Was Encountered'])</h2>
+<p>这个函数将会使用以下错误模版来显示错误消息:</p>
+<p><dfn>application/errors/</dfn><kbd>error_general.php</kbd></p>
+<p>可选参数 $status_code 决定在显示错误的同时将会发送哪种 HTTP 状态代码。</p>
+<p>可选参数 $heading 决定错误模版h1标签内容。</p>
+<h2>show_404('<var>页面</var>' [, '<var>log_error</var>'])</h2>
+<p>这个函数将会使用以下错误模版来显示 404 错误信息:</p>
+<p><dfn>application/errors/</dfn><kbd>error_404.php</kbd></p>
+
+<p>传递给该函数的字符串代表的是找不到的文件路径。注意CodeIgniter会在找不到目标控制器情况下,自动显示404消息。</p>
+
+<p>CodeIgniter自动记录任何 show_404() 函数调用。设置第二个可选的参数为FALSE将跳过记录</p>
+
+<h2>log_message('<var>级别</var>', '<samp>消息</samp>')</h2>
+
+<p>这个函数可以让你将消息写入记录文件中。你必须在第一个参数中选择三个“级别“中的任何一个, 指明它是那一类消息(调试 debug, 错误 error, 信息info)。 第二个参数是消息本身。  例如:</p>
+
+<code>
+if ($some_var == "")<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;log_message('error', 'Some variable did not contain a value.');<br />
+&#125;<br />
+else<br />
+&#123;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;log_message('debug', 'Some variable was correctly set');<br />
+&#125;<br />
+<br />
+log_message('info', 'The purpose of some variable is to provide some value.');<br />
+</code>
+
+<p>有三种不同类型的消息:</p>
+
+<ol>
+<li>错误类型的消息。  这种是真正的错误消息. 例如PHP错误或者用户错误。</li>
+<li>调试类型的消息。  这种是用来帮助调试的消息。 例如, 如果当一个类被初始化时,你可以将这个初始化记录下来,然后用于调试。</li>
+<li>信息类型的消息。  这种是最低优先级别的消息,它只是简单的提供了关于运行的一些信息。 CodeIgniter 不会自动产生任何信息类型的消息,但是你可能会在你的程序里使用它。</li>
+</ol>
+
+
+<p class="important"><strong>注意:</strong> 确保"logs" 文件夹是可写的,才能准确地将消息写入记录文件中。此外, 你必须设置<dfn>application/config/config.php</dfn>文件中的"threshold"设定,通过设置“threshold“,你可以只记录错误类型的消息,而不用记录其他两种。如果你将“threshold“设为0,记录就会被禁止。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+aykirk, borisauschina, crgod, csfhc, Hex, IT不倒翁, tyronecai, walkbird, xjflyttp, 暗夜星辰, 笼中</div>
+<div id="DocDate">
+最后修改: 2013-10-31 22:46:33</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="routing.html">URI 路由</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="caching.html">页面缓存</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 176 - 0
general/helpers.html

@@ -0,0 +1,176 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/helpers.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>辅助函数</h1>
+
+<p>辅助函数,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如,<dfn>URL Helpers</dfn> 可以帮助我们创建链接,<dfn>Form Helpers</dfn> 可以帮助我们创建表单,<dfn>Text Helpers</dfn> 提供一系列的格式化输出方式,<dfn>Cookie Helpers</dfn> 能帮助我们设置和读取COOKIE, <dfn>File Helpers</dfn> 能帮助我们处理文件,等等。</p>
+
+<p>跟其他部分不同的是,辅助函数不是用类的方式来实现的。它们仅仅是一些简单的过程处理函数。
+每个辅助函数处理一个特定的任务,并且不必依靠其他函数。</p>
+
+<p>CodeIgniter 默认是没有载入辅助函数文件的,所以如果你想用辅助函数,就必须先载入它。
+一旦被载入,辅助函数将全局可用(globally available),你可以在 <a href="controllers.html">controller</a> 和 <a href="views.html">views</a> 中使用它们。</p>
+
+<p>辅助函数文件一般保存在 <dfn>system/helpers</dfn> 或 <dfn>application/helpers</dfn> 文件夹中。CodeIgniter 将会先在 <dfn>application/helpers</dfn> 寻找对应的辅助函数文件,
+如果目录不存在或者目录下没有对应的辅助函数文件,CI 才会载入 <dfn>system/helpers</dfn> 下的辅助函数文件。</p>
+
+
+<h2>载入辅助函数</h2>
+
+<p>载入辅助函数是非常简单的:</p>
+
+<code>$this-&gt;load-&gt;helper('<var>name</var>');</code>
+
+<p><var>name</var> 是辅助函数文件的名字(不带.php后缀 和"helper" 部分)。</p>
+
+<p>例如,要载入文件名为<var>url_helper.php</var>的<dfn>URL Helper</dfn>,你将会用到下面的语句:</p>
+
+<code>$this-&gt;load-&gt;helper('<var>url</var>');</code>
+
+<p>辅助函数可以在你的控制器(controller)的任何地方被载入,甚至可以在视图(View)文件中被载入(我们并不建议你这么做)。
+请在使用辅助函数之前载入他们。你可以在你的控制器构造函数中载入它们,以便辅助函数能自动在其他函数之前被载入。你也可以在要用到辅助函数的地方当场载入。</p>
+
+<p class="important">注意: 辅助函数载入函数并不返回值,所以不要尝试将它付给一个变量,直接像这样用就可以了。</p>
+
+
+<h2>载入多个辅助函数</h2>
+
+<p>如果你想一次载入多个辅助函数,你可以这样做:</p>
+
+<code>$this-&gt;load-&gt;helper( <samp>array(</samp>'<var>helper1</var>', '<var>helper2</var>', '<var>helper3</var>'<samp>)</samp> );</code>
+
+<h2>自动载入辅助函数</h2>
+
+<p>如果你想要的话,CodeIgniter可以自动为你载入辅助函数。你可以通过打开 <var>application/config/autoload.php</var> ,并往自动载入数组(autoload array)中增加辅助函数来实现。</p>
+
+
+<h2>使用辅助函数</h2>
+
+<p>一旦你载入了想要用到辅助函数文件,你就可以用标准的函数调用方法来使用里面的函数。</p>
+
+<p>例如,要使用<dfn>anchor()</dfn> 函数来建立一个链接,在视图(View)文件里面你可以这样做:</p>
+
+<code>&lt;?php echo anchor('blog/comments', 'Click Here');?&gt;</code>
+
+<p>"Click Here" 是链接的名字,"blog/comments" 是链接的URI。</p>
+<p>注意:辅助函数中的函数名最好做好命名规范,如果同时加载多个辅助函数文件,且其中有名称相同的函数,会导致 CI 出现空白页问题(也就是 PHP 语法错误)。</p>
+
+<h2>“扩展”辅助函数</h2>
+
+<p>你如果想 "扩展"一个原有的 Helpers,可以在你的 <dfn>application/helpers/</dfn> 目录下创建一个新的helper,新的helper的名字是在被“扩展”的Helper的名字开头多加一个 <kbd>MY_</kbd> (这是可以配置的.  见下.).</p>
+
+<p>如果你想做的只是在原有的helper中添加一些新的功能,比如,添加一两个新的方法,或者是修改一个方法;就不值得重写自己的helper。在这种情况下,最好是“扩展”已有的helper。“扩展”一词用在这里不是很恰当,因为Helper的方法是过程式的(procedural) 和离散(discrete)的,在传统的语言环境中无法被“扩展”,不过在CodeIgniter中,你可以添加或修改helper的方法。
+
+</p>
+
+<p>例如,扩展一个本地已有的 <kbd>Array Helper</kbd> 你应该建立一个文件: <dfn>application/helpers/</dfn><kbd>MY_array_helper.php</kbd>, 并添加或重写(override)其中的一些方法:</p>
+
+<code>
+// any_in_array() is not in the Array Helper, so it defines a new function<br />
+function any_in_array($needle, $haystack)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;$needle = (is_array($needle)) ? $needle : array($needle);<br />
+ <br />
+&nbsp;&nbsp;&nbsp;&nbsp;foreach ($needle as $item)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (in_array($item, $haystack))<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+ <br />
+&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<br />
+&#125;<br />
+<br />
+// random_element() is included in Array Helper, so it overrides the native function<br />
+function random_element($array)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;shuffle($array);<br />
+&nbsp;&nbsp;&nbsp;&nbsp;return array_pop($array);<br />
+&#125;<br />
+</code>
+
+<h3>设定你自己的前缀(Prefix)</h3>
+
+<p>用于"扩展" helper 而加上前缀的文件同样也是对库和核心类的扩展.为了设置你自定义的前缀,请打开 <dfn>application/config/config.php</dfn> 文件,然后找到如下的条目:</p>
+
+<code>$config['subclass_prefix'] = 'MY_';</code>
+
+<p>请注意:由于所有CodeIgniter自带的库都被冠以 <kbd>CI_</kbd> 这样的前缀命名,所以请不要使用<kbd>CI_</kbd>来自定义前缀.</p>
+
+<h2>现在可以做什么?</h2>
+
+<p>在<a href="../toc.html">目录</a>里面有所有辅助函数的列表,你可以打开每个文件看看他们都能做些什么。</p>
+<p>不过目前还没有想到更好的方法让我们如何记住这些辅助函数!要不编辑个快速查询手册??如果你有更好的方法请告诉我!</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+architectcom, borisauschina, chenshenghan, csfhc, Hex, levin, lishen2, longbill, ripen, sheshi37c, shishirui, tangjianft, thankwsx, Xwoder</div>
+<div id="DocDate">
+最后修改: 2014-06-05 10:17:46</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="models.html">模型</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="libraries.html">使用类库</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 136 - 0
general/hooks.html

@@ -0,0 +1,136 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>钩子 - 扩展框架的核心 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/hooks.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;钩子 - 扩展框架的核心    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>钩子 - 扩展框架的核心</h1>
+<p>CodeIgniter 的钩子功能使得您可以在不修改系统核心文件的基础上来改变或增加系统的核心运行功能。 当 CodeIgniter 运行后,它会产生出一个特殊的进程,这个进程在 <a href="../overview/appflow.html">项目流程</a> 页面中有说明。 当然,您可以自定义一些动作来替代程序运行过程中的某些阶段。例如,您可以在控制器刚刚载入前或刚刚载入后来运行特定的脚本,或者在其他时刻来触发您的脚本。</p>
+<h2>启用钩子</h2>
+<p>钩子功能可以在全局范围内打开或关闭,您可以在 <kbd>application/config/config.php</kbd> 文件中设定:</p>
+<p><code>$config['enable_hooks'] = TRUE;</code></p>
+<h2>定义钩子</h2>
+<p>钩子是在 <dfn>application/config/hooks.php</dfn> 文件中定义的。 每个钩子可以用以下格式的数组来定义:</p>
+<p><code>$hook['pre_controller'] = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'class'&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 'MyClass',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'function' =&gt; 'Myfunction',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'filename' =&gt; 'Myclass.php',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'filepath' =&gt; 'hooks',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'params'&nbsp;&nbsp;&nbsp;=&gt; array('beer', 'wine', 'snacks')<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</code></p>
+<p><strong>说明:</strong><br />
+数组的索引与你使用的指定挂钩点名字相关.上面的例子中挂钩点是<kbd>pre_controller</kbd>. 挂钩点参数列表如下所示. 以下各项将定义在你的相关钩子数组里:</p>
+<ul>
+    <li><strong>class</strong>&nbsp; 你希望调用的类名.如果你更喜欢使用过程函数代替类的话,此项保留为空.</li>
+    <li><strong>function</strong>&nbsp; 你希望调用的函数名.</li>
+    <li><strong>filename</strong>&nbsp; 包含有你的类/函数的文件名.</li>
+    <li><strong>filepath</strong>&nbsp; 包含你的脚本的目录名. 注意: 你的脚本放在 <kbd>application</kbd> 文件夹下的目录里, 这样 filepath就以那个文件夹(application)为基准. 例如, 如果你的脚本放在<dfn>application/hooks</dfn>下, 你可以把<samp>hooks</samp> 作为你的filepath. 如果你的脚本放在<dfn>application/hooks/utilities</dfn>下你可以把 <samp>hooks/utilities</samp>作为filepath. 注意后面没有"/".如果不放在根目录下可以根据相对路径的配置,来完成调用。这样就可以完成,多个应用共享一个钩子。</li>
+    <li><strong>params</strong>&nbsp; 你希望传递给脚本的任何参数. 此项是可选的.</li>
+</ul>
+<h2>同一挂钩点的多次引用</h2>
+<p>如果你想在同一个挂钩点引用多个脚本,最简单的方式就是把你的数组定义成二维的,像这样:</p>
+<p><code>$hook['pre_controller']<kbd>[]</kbd> = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'class'&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 'MyClass',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'function' =&gt; 'Myfunction',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'filename' =&gt; 'Myclass.php',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'filepath' =&gt; 'hooks',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'params'&nbsp;&nbsp;&nbsp;=&gt; array('beer', 'wine', 'snacks')<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$hook['pre_controller']<kbd>[]</kbd> = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'class'&nbsp;&nbsp;&nbsp;&nbsp;=&gt; 'MyOtherClass',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'function' =&gt; 'MyOtherfunction',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'filename' =&gt; 'Myotherclass.php',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'filepath' =&gt; 'hooks',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'params'&nbsp;&nbsp;&nbsp;=&gt; array('red', 'yellow', 'blue')<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</code></p>
+<p>注意在每个数组索引后面的中括号:</p>
+<p><code>$hook['pre_controller']<kbd>[]</kbd></code></p>
+<p>这允许你的多个脚本拥有相同的挂钩点。你定义数组的顺序将是程序执行的顺序.</p>
+<h2>挂勾点</h2>
+<p>以下是一组可用的挂钩点.</p>
+<ul>
+    <li><strong>pre_system</strong><br />
+    系统执行的早期调用.仅仅在benchmark 和 hooks&nbsp;类&nbsp;加载完毕的时候. 没有执行路由或者其它的过程.</li>
+    <li><strong>pre_controller</strong><br />
+    在调用你的任何控制器之前调用.此时所用的基础类,路由选择和安全性检查都已完成.</li>
+    <li><strong>post_controller_constructor</strong><br />
+    在你的控制器实例化之后,任何方法调用之前调用.</li>
+    <li><strong>post_controller</strong><br />
+    在你的控制器完全运行之后调用.</li>
+    <li><strong>display_override</strong><br />
+    覆盖<dfn>_display()</dfn>函数, 用来在系统执行末尾向web浏览器发送最终页面.这允许你用自己的方法来显示.注意,你需要通过 <dfn>$this-&gt;CI =&amp; get_instance()</dfn> 引用 CI 超级对象,然后这样的最终数据可以通过调用 <dfn>$this-&gt;CI-&gt;output-&gt;get_output()</dfn> 来获得。</li>
+    <li><strong>cache_override</strong><br />
+    可以让你调用自己的函数来取代output类中的<dfn>_display_cache()</dfn> 函数.这可以让你使用自己的缓存显示方法</li>
+    <li><strong>post_system</strong><br />
+    在最终渲染的页面发送到浏览器之后,浏览器接收完最终数据的系统执行末尾调用</li>
+</ul><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+anbutu, chouqiuqiu, dustin, elviscai, Hex, Jack, nardo, qixingyue, shishirui</div>
+<div id="DocDate">
+最后修改: 2014-02-14 14:59:24</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="core_classes.html">创建核心类</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="autoloader.html">自动装载资源</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 89 - 0
general/libraries.html

@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>使用 CodeIgniter 类库 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/libraries.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;使用 CodeIgniter 类库    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>使用 CodeIgniter 类库</h1>
+
+<p>所有的类库文件存放在<dfn>system/libraries</dfn> 文件夹。大多数情况下你需要预先在<a href="controllers.html">controller</a>中初始化后才能使用它们:</p>
+<code>$this-&gt;load-&gt;library('<var>class name</var>'); </code>
+<p><var>class name</var>是你想要使用的类名。例如,要载入“表单验证类”,你可以这样做:</p>
+<p><code>$this-&gt;load-&gt;library('<var>form_validation</var>'); </code></p>
+<p>一旦类库被载入,你就可以按照用户手册中的方法来使用它们。</p>
+
+<p>此外,多个类库可以通过传递包含类库的数组一次加载。</p>
+
+<code>$this-&gt;load-&gt;library(array('<var>email</var>', '<var>table</var>'));</code>
+
+<h2>创建类库</h2>
+<p>请阅读用户手册中关于 <a href="creating_libraries.html">创建你自己的类库</a> 的部分。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, IT不倒翁, lishen2, longbill</div>
+<div id="DocDate">
+最后修改: 2011-05-12 22:08:53</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="helpers.html">辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="creating_libraries.html">创建程序库</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 122 - 0
general/managing_apps.html

@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>管理你的应用程序 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/managing_apps.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;管理你的应用程序    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>管理你的应用程序</h1>
+
+<p>默认情况下,你会将应用程序放入<dfn>application/</dfn>中,并且可能用 CodeIgniter 只管理这一个应用程序。当然,多个应用程序共享一个 CodeIgniter, 甚至对 <dfn>application</dfn> 文件夹进行重命名或更换路径也是可行的。</p>
+
+<h2>对应用程序文件夹重命名</h2>
+
+<p>如果你要对 <dfn>application</dfn> 进行重命名, 你需要打开 <kbd>index.php</kbd> 文件,对变量 <samp>$application_folder</samp> 进行更改:</p>
+
+<code>$application_folder = "application";</code>
+
+<h2>更改你的应用程序的文件夹路径</h2>
+
+<p>你可以将 <dfn>application</dfn>文件夹从<kbd>system</kbd> 文件夹中挪放到服务器的其他的位置。但是你还要更改 <kbd>index.php</kbd> 文件里将<samp>$application_folder</samp>变量设置为<em>服务器的全路径</em>。</p>
+
+
+<code>$application_folder = "/Path/to/your/application";</code>
+
+
+<h2>在一个 CodeIgniter 下运行多个应用程序</h2>
+
+<p>如果你想要多个应用程序共享同一个 CodeIgniter, 你要将 <kbd>application</kbd> 下所有的文件夹放在不同的应用程序的文件夹内。</p>
+
+<p>例如,你要建立两个应用程序 "foo" 和 "bar",你的应用程序文件夹的结构可能会像下面的这样:</p>
+
+<code>applications/<var>foo</var>/<br />
+applications/<var>foo</var>/config/<br />
+applications/<var>foo</var>/controllers/<br />
+applications/<var>foo</var>/errors/<br />
+
+applications/<var>foo</var>/libraries/<br />
+applications/<var>foo</var>/models/<br />
+applications/<var>foo</var>/views/<br />
+applications/<samp>bar</samp>/<br />
+applications/<samp>bar</samp>/config/<br />
+
+applications/<samp>bar</samp>/controllers/<br />
+applications/<samp>bar</samp>/errors/<br />
+applications/<samp>bar</samp>/libraries/<br />
+applications/<samp>bar</samp>/models/<br />
+applications/<samp>bar</samp>/views/</code>
+
+
+<p>要选择使用某个应用程序,你需要打开主 <kbd>index.php</kbd> 文件,并且设置 <dfn>$application_folder</dfn> 变量为目标路径。例如,通过如下设置,就可以选择使用 "foo" 应用程序:</p>
+
+<code>$application_folder = "applications/foo";</code>
+
+<p class="important"><strong>注意:</strong>&nbsp; 每一个应用程序都会需要它自己的<dfn>index.php</dfn>文件来调用他的目标程序。你可以随意对 index.php 文件进行命名。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+aykirk, Hex, thankwsx, zhupeng</div>
+<div id="DocDate">
+最后修改: 2011-01-31 18:04:05</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="profiling.html">评测你的应用程序</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="alternative_php.html">PHP 替代语法</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 251 - 0
general/models.html

@@ -0,0 +1,251 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>模型 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/models.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;模型    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>模型</h1>
+
+<p>模型对于那些想用传统MVC方式的人来说是<strong>可选</strong>的。</p>
+
+<ul>
+<li><a href="#what">什么是模型?</a></li>
+<li><a href="#anatomy">剖析模型</a></li>
+<li><a href="#loading">载入模型</a></li>
+<li><a href="#auto_load_model">自动载入模型</a></li>
+<li><a href="#conn">连接数据库</a></li>
+
+</ul>
+
+
+<h2><a name="what"></a>什么是模型?</h2>
+
+<p>模型是专门用来和数据库打交道的PHP类。例如,假设你想用CodeIgniter来做一个Blog。你可以写一个模型类,里面包含插入、更新、删除Blog数据的方法。下面的例子将向你展示一个普通的模型类:</p>
+
+<code>
+class&nbsp;Blogmodel&nbsp;extends&nbsp;CI_Model&nbsp;&#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;var $title&nbsp;&nbsp; = '';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;var $content = '';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;var $date&nbsp;&nbsp;&nbsp; = '';<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;__construct()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;get_last_ten_entries()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$query = $this-&gt;db-&gt;get('entries', 10);<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $query-&gt;result();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;insert_entry()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;title&nbsp;&nbsp; = $_POST['title']; // 请阅读下方的备注<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;content = $_POST['content'];<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;date&nbsp;&nbsp;&nbsp; = time();<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;db-&gt;insert('entries',&nbsp;$this);<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;update_entry()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;title&nbsp;&nbsp; = $_POST['title'];<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;content = $_POST['content'];<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;date&nbsp;&nbsp;&nbsp; = time();<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;db-&gt;update('entries',&nbsp;$this, array('id' => $_POST['id']));<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+<br />
+&#125;</code>
+
+<p>注意: 上面用到的函数是 <a href="../database/active_record.html">Active Record</a> 数据库函数.</p>
+
+<p class="important"><strong>备注:</strong> 为了简单一点,我们直接使用了$_POST。不过,这不太好,平时我们应该使用 <a href="../libraries/input.html">输入类</a>:$this-&gt;input-&gt;post('title')</p>
+
+
+<h2><a name="anatomy"></a>剖析模型</h2>
+
+<p>模型类文件存放在 <dfn>application/models/</dfn> 文件夹。 如果你愿意,可以在里面建立子文件夹。</p>
+
+<p>最基本的模型类必须像这样:</p>
+
+
+<code>
+class&nbsp;<var>Model_name</var>&nbsp;extends&nbsp;CI_Model&nbsp;&#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;<var>__construct</var>()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct();<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;</code>
+
+<p><var>Model_name</var> 是模型类的名字。  类名的首字母<strong>必须</strong>大写,其他字母小写。
+并且确保你的类继承了基本模型类(Base Model Class)。</p>
+
+<p>文件名应该是模型类名的小写版。比如,如果你的类是:</p>
+
+<code>
+class&nbsp;<var>User_model</var>&nbsp;extends&nbsp;CI_Model&nbsp;&#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;<var>__construct</var>()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct();<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;</code>
+
+<p>类的文件名应该是:</p>
+
+<code>application/models/<var>user_model.php</var></code>
+
+
+<h2><a name="loading"></a>载入模型</h2>
+
+<p>模型可以在 <a href="controllers.html">控制器</a> 中被引用。
+就像这样:</p>
+
+<code>$this-&gt;load-&gt;model('<var>Model_name</var>');</code>
+
+<p>如果模型文件在子文件夹下,引用的时候要带上相对路径名。例如:如果你有一个模型 <dfn>application/models/blog/queries.php</dfn>。
+下面的代码可以引用它:</p>
+
+<code>$this-&gt;load-&gt;model('<var>blog/queries</var>');</code>
+
+
+<p>模型一旦被载入,你就能通过下面的方法使用它:</p>
+
+<code>
+$this-&gt;load-&gt;model('<var>Model_name</var>');<br />
+<br />
+$this-&gt;<var>Model_name</var>-&gt;function();
+</code>
+
+<p>在默认的情况下模型名称就直接被引入作为对象名,就如上面所示。当然,如果你愿意,可以起个更好记的对象名!那么,可以在加载模型函数中指定第二个参数来设定,例如:</p>
+
+<code>
+$this-&gt;load-&gt;model('<var>Model_name</var>', '<kbd>fubar</kbd>');<br />
+<br />
+$this-&gt;<kbd>fubar</kbd>-&gt;function();
+</code>
+
+<p>这里有个控制器的例子,加载一个模型,然后通过视图显示出来</p>
+
+
+
+<code>
+class&nbsp;Blog_controller&nbsp;extends&nbsp;CI_Controller&nbsp;&#123;<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;blog()<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;model('Blog');<br />
+<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['query'] = $this-&gt;Blog-&gt;get_last_ten_entries();<br /><br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('blog', $data);<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />
+&#125;</code>
+
+<h2><a name="auto_load_model" id="auto_load_model"></a>自动载入模型</h2>
+<p>如果您需要一个在整个项目中都起作用的特定模型,您可以让 CodeIgniter 在初始化时自动装载它。实现的方法是打开 application/config/autoload.php 文件,然后在自动装载数组中添加上这个模型。</p>
+<p class="important"><strong>备注:</strong> 经过测试(以加载一个模型为例)自动加载模型和手动载入模型时,消耗的内存情况是一样的!但是当加载模型越多消耗内存就会越大。自动加载模型是要牺牲内存消耗换取的,所以尽量不要自动加载不必要贯穿全站项目的模型!</p>
+</ul>
+<h2><a name="conn"></a>连接到数据库</h2>
+
+<p>当一个模型被载入时,它并不会自动连接数据库。以下方法可以使您连接数据库:</p>
+
+<ul>
+<li>您可以使用标准方法来连接数据库(<a href="../database/connecting.html">说明</a>), 也可以通过控制器或者您的自定义模型。</li>
+<li>您可以把第三个参数设置为TRUE来使模型装载函数自动连接数据库,连接配置可以在您的数据库配置文件中可以定义:</li>
+
+ <code>$this-&gt;load-&gt;model('<var>Model_name</var>', '', <kbd>TRUE</kbd>);</code> 
+
+<li>您可以手动设定第三个参数来载入您的自定义数据库配置:
+
+  <code>$config['hostname'] = "localhost";<br />
+  $config['username'] = "myusername";<br />
+  $config['password'] = "mypassword";<br />
+  $config['database'] = "mydatabase";<br />
+  $config['dbdriver'] = "mysql";<br />
+  $config['dbprefix'] = "";<br />
+  $config['pconnect'] = FALSE;<br />
+  $config['db_debug'] = TRUE;<br />
+  <br />
+  $this-&gt;load-&gt;model('<var>Model_name</var>', '', <kbd>$config</kbd>);</code></li>
+
+  <p class="important"><strong>备注:</strong> 经过友好链接测试(也即只连接数据库不涉及查询),自动连接数据库和手动连接数据库时,消耗的内存情况是一样的,我本人的本机测试是0.67M</p>
+</ul><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+analyzer, crazyant_ps2, Hex, levin, liuhuyydy, li_star, longbill, longjianghu, ripen, shishirui, soyota, tinsn</div>
+<div id="DocDate">
+最后修改: 2014-06-10 13:37:44</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="views.html">视图</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="helpers.html">辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 175 - 0
general/profiling.html

@@ -0,0 +1,175 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>调试你的应用程序 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/profiling.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;调试你的应用程序    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>调试你的应用程序</h1>
+
+<p>该分析器将在页面下方显示基准测试结果,运行过的 SQL 语句,以及 $_POST 数据。这些信息有助于开发过程中的调试和优化。</p>
+
+
+<h2>初始化类</h2>
+
+<p class="important"><strong>注意:</strong>&nbsp; 此分析器<kbd>无须</kbd>手动初始化.如果已按照下面的方式激活,他将被<a href="../libraries/output.html">输出类</a>自动装载。</p>
+
+<h2>激活分析器</h2>
+
+<p>在<a href="controllers.html">控制器</a>中设置以下方法以激活该分析器</p>
+<code>$this-&gt;output-&gt;enable_profiler(TRUE);</code>
+
+<p>分析器激活后将产生一个报告并插入您的页面底部</p>
+
+<p>使用以下方法禁用该分析器:</p>
+<code>$this-&gt;output-&gt;enable_profiler(FALSE);</code>
+
+<h2>设定基准点</h2>
+
+<p>为了让该分析器编译和显示你的测试数据,你必须使用特定的语法命名基准点。</p>
+
+<p>请在<a href="../libraries/benchmark.html">基准测试类</a>部分阅读关于设置基准点的资料。</p>
+
+<h2>启用和禁用分析数据中的字段</h2>
+
+<p>分析数据中的每个字段可通过设置相应的控制变量<var>TRUE</var> or <var>FALSE</var>来启用和禁用. 其中的一个方法是:你可以在<dfn>application/config/profiler.php</dfn> 配置文件里设置整个程序的全局默认值.</p>
+
+  <code>$config['config']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FALSE;<br />
+  $config['queries']&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= FALSE;<br /></code>
+
+  <p>另一种方法是:你可以在控制器中通过调用<kbd>set_profiler_sections()</kbd> 来覆盖全局设置和默认设置,详细可见: <a href="../libraries/output.html">Output class</a>:</p>
+
+  <code>$sections = array(<br />
+  &nbsp;&nbsp;&nbsp;&nbsp;'config' &nbsp;=> TRUE,<br />
+  &nbsp;&nbsp;&nbsp;&nbsp;'queries' => TRUE<br />
+  &nbsp;&nbsp;&nbsp;&nbsp;);<br />
+  <br />
+  $this-&gt;output-&gt;set_profiler_sections($sections);</code>
+
+  <p>下表列出了可用的分析器数据字段和用来访问这些字段的key。</p>
+
+  <table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+    <tr>
+    <th>Key</th>
+    <th>Description</th>
+    <th>Default</th>
+    </tr>
+    <tr>
+    <td class="td"><strong>benchmarks</strong></td>
+    <td class="td">在各个计时点花费的时间以及总时间</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+    <td class="td"><strong>config</strong></td>
+    <td class="td">CodeIgniter 配置变量</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+    <td class="td"><strong>controller_info</strong></td>
+    <td class="td">被调用的method及其所属的控制器类</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+    <td class="td"><strong>get</strong></td>
+    <td class="td">在request中传递的所有GET参数</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+    <td class="td"><strong>http_headers</strong></td>
+    <td class="td">本次请求的 HTTP 头</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+    <td class="td"><strong>memory_usage</strong></td>
+    <td class="td">本次请求消耗的内存(byte为单位)</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+    <td class="td"><strong>post</strong></td>
+    <td class="td">在request中传递的所有POST参数</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+    <td class="td"><strong>queries</strong></td>
+    <td class="td">列出执行的数据库操作语句及其消耗的时间</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+    <td class="td"><strong>uri_string</strong></td>
+    <td class="td">本次请求的URI</td>
+    <td class="td">TRUE</td>
+    </tr>
+    <tr>
+      <td class="td"><strong>query_toggle_count</strong></td>
+      <td class="td">指定显示多少个数据库查询语句,剩下的则默认折叠起来。</td>
+      <td class="td">25</td>
+    </tr>
+  </table><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+amos, chouqiuqiu, Hex, teamoustar</div>
+<div id="DocDate">
+最后修改: 2013-03-23 03:19:52</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="caching.html">缓存</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="managing_apps.html">管理应用程序</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 80 - 0
general/quick_reference.html

@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>快速参考图 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/quick_reference.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;快速参考图    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>快速参考图</h1>
+
+<p>此图的 PDF 版本,<a href="#">单击这里</a>。</p>
+
+<p><img src="../images/ci_quick_ref.png" width="763" height="994" border="0" /></p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2014-06-10 13:44:58</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+<a href="#top">页首</a>
+  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 80 - 0
general/requirements.html

@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>服务器要求 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/requirements.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;服务器要求    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>服务器要求</h1>
+<ul>
+ <li><a href="#" target="_blank">PHP</a> 版本 5.1.6 或更新的banben。</li>
+ <li>大多数 Web 应用程序需要数据库。当前支持的数据库为:MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite 和 ODBC。</li>
+</ul><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+asimon, elevenliu, Hex, nameleq, wuzeaibaozi</div>
+<div id="DocDate">
+最后修改: 2014-07-20 17:41:04</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="../license.html">许可协议</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 131 - 0
general/reserved_names.html

@@ -0,0 +1,131 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>保留字 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/reserved_names.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;保留字    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>保留字</h1>
+
+<p>为了便于编程,CodeIgniter使用了一系列的函数和名称来完成操作。所以,有些名称不能被程序员使用。下面是不能被程序员使用的保留字列表。</p>
+
+<h3>控制器名称</h3>
+<p>因为你的控制器类将继承主程序控制器,所以你的函数命名一定不能和主程序控制器类中的函数名相同,否则你的局部函数将会覆盖他们。下面列出了已经保留的名称,请不要将你的控制器命名为这些:</p>
+<ul>
+ <li>Controller</li>
+ <li>CI_Base</li>
+ <li>_ci_initialize</li>
+ <li>Default</li>
+ <li>index</li>
+</ul>
+
+<h3>函数</h3>
+<ul>
+ <li>is_really_writable()</li>
+ <li>load_class()</li>
+ <li>get_config()</li>
+ <li>config_item()</li>
+ <li>show_error()</li>
+
+ <li>show_404()</li>
+ <li>log_message()</li>
+ <li>_exception_handler()</li>
+ <li>get_instance()</li>
+ </ul>
+<h3>变量</h3>
+<ul>
+
+ <li>$config</li>
+ <li>$mimes</li>
+ <li>$lang</li>
+</ul>
+<h3>常量</h3>
+<ul>
+ <li>ENVIRONMENT</li>
+ <li>EXT</li>
+ <li>FCPATH</li>
+ <li>SELF</li>
+ <li>BASEPATH</li>
+ <li>APPPATH</li>
+ <li>CI_VERSION</li>
+ <li>FILE_READ_MODE</li>
+ <li>FILE_WRITE_MODE</li>
+ <li>DIR_READ_MODE</li>
+ <li>DIR_WRITE_MODE</li>
+ <li>FOPEN_READ</li>
+ <li>FOPEN_READ_WRITE</li>
+ <li>FOPEN_WRITE_CREATE_DESTRUCTIVE</li>
+ <li>FOPEN_READ_WRITE_CREATE_DESTRUCTIVE</li>
+ <li>FOPEN_WRITE_CREATE</li>
+ <li>FOPEN_READ_WRITE_CREATE</li>
+ <li>FOPEN_WRITE_CREATE_STRICT</li>
+ <li>FOPEN_READ_WRITE_CREATE_STRICT</li>
+</ul><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, lishen2</div>
+<div id="DocDate">
+最后修改: 2012-02-05 23:33:59</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="controllers.html">控制器</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="views.html">视图</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 166 - 0
general/routing.html

@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>URI 路由 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/routing.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;URI 路由    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>URI 路由</h1>
+<p>一般来说,URI字符串有着和它唯一对应的控制器(controller)类/方法。URI的各个部分是如下模式(pattern):</p>
+
+<code>example.com/<dfn>class</dfn>/<samp>function</samp>/<var>id</var>/</code>
+
+<p>然而在一些例子中,你也许想重定向这种关系来调用一个不同的类/方法(class/function),而不是与URL一一对应(的调用).</p>
+
+<p>例如,你可能想使你的URL采用这种原型(prototype):</p>
+
+
+<p>
+example.com/product/1/<br />
+example.com/product/2/<br />
+example.com/product/3/<br />
+example.com/product/4/
+</p>
+
+<p>一般情况下,URL的第二个部分表示方法名,不过在上面的例子中,它表示一个产品的ID。CodeIgniter可以实现这个功能,让用户可以重新定向(remap)URI处理程序.</p>
+
+<h2>设定你自己的路由规则</h2>
+
+<p>路由规则定义在<var>application/config/routes.php</var> 文件中.  在此文件中,你可以看到一个名为 <dfn>$route</dfn>的数组,它可以让你定义你自己的路由规则。  定义可以用两种方式: <dfn>通配符(wildcards)</dfn> 或者 <dfn>正则表达式(Regular Expressions)</dfn></p>
+
+<h2>通配符</h2>
+
+<p>一个典型的通配符路由看起来是这样的:</p>
+
+<code>$route['product/(:num)'] = "catalog/product_lookup";</code>
+
+<p>在一个路由中,数组的键包含着被匹配的URI,而数组的值包含着路由将被重定向的目的地.在上面的例子中,如果单词“product”出现在URL的第一个部分中,而且数字(:num)出现在URI的第二个部分中,"catalog"类和"product_lookup"方法将被替代使用(即将被重定向).</p>
+
+<p>你可以匹配文字的值或者使用以下两种通配符类型:</p>
+
+<p><strong>:num</strong> 将匹配一个只包含有数字的segment(段).<br />
+    <strong>:any</strong> 将匹配任何字符(可以是多个segment段).<strong>可以匹配多个值,</strong>如:<br />
+    <code>$route['product/(:any)'] = "catalog/product_lookup/$1/$2/$3/$4/$5";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//将整条url上的每一个参数全部传递给catalog控制器下的 product_lookup方法。</code>
+</p>
+
+<p class="important"><strong>注意:</strong> 路由将会按照定义的顺序来运行.高层的路由总是优先于低层的路由.</p>
+
+
+<h2>例子</h2>
+
+<p>下面是一些简单的例子:</p>
+
+<code>$route['journals'] = "blogs";</code>
+<p>如果URL的第一个分段(类名)是关键字"journals",那么将会重定向到"blogs"类中处理.</p>
+
+<code>$route['blog/joe'] = "blogs/users/34";</code>
+<p>如果URL的前两个分段是"blog"和"joe",那么将会重定向到"blogs"类的"users"方法中处理.并且将ID"34"设为参数.</p>
+
+
+<code>$route['product/(:any)'] = "catalog/product_lookup";</code>
+<p>当"product"作为URL中第一个分段时, 无论第二分段是什么都将被重定向到"catalog"类的"product_lookup"方法.</p>
+
+<code>$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";</code>
+<p>当“product”作为 URL 中第一个分段时,如果第二分段是数字,则将被重定向到“catalog”类,并传递所匹配的内容到“product_lookup_by_id”方法中。</p>
+
+<p class="important"><strong>重要提示:</strong> 不要在前面或后面加"/".</p>
+
+<h2>正则表达式</h2>
+
+<p>如果你喜欢可以使用正则表达式来自定义你的路由规则.  任何有效的正则表达式都是被允许的, 甚至逆向引用.</p>
+
+<p class="important"><strong>注意:</strong>&nbsp; 如果你使用逆向引用请将双反斜线语法替换为美元符语法(\\1 替换为 $1).</p>
+
+<p>一个典型的正则表达式看起来像下面的样子:</p>
+
+<code>$route['products/([a-z]+)/(\d+)'] = "$1/id_$2";</code>
+
+<p>上例中, 类似于 <dfn>products/shirts/123</dfn> 的URI 将换成调用 <dfn>shirts</dfn> 控制器类的 <dfn>id_123</dfn> 方法.</p>
+
+<p>你也可以混合使用通配符与正则表达式.</p>
+
+<h2>系统保留的路由</h2>
+
+<p>系统会保留两个路由:</p>
+
+<p>第一个为系统默认的路由:</p>
+
+<code>$route['default_controller'] = 'welcome';</code>
+
+<p>这个路由表明了当URI中不包含要访问的类和控制器信息的(即只访问根目录的情况,如http://localhost/ci)将要加载哪个控制器。上例中,系统将加载 "welcome" 这个类(控制器)。你应该保证设置一个默认路由,不然你的首页将会显示 404 错误。</p>
+
+<p>第二个为404页面的路由:</p>
+
+<code>$route['404_override'] = '';</code>
+
+<p>这个路由标识了如果请求的控制器无法访问的时候将加载哪个控制器。它相当于覆盖了默认的404错误页面(即提供了自己定义404页面的功能)。但它不会影响<samp>show_404()</samp>这个方法,这个方法依然会加载默认的位于<var>application/errors/error_404.php</var>的<dfn>error_404.php</dfn>页面。</p>
+
+<p class="important"><strong>重要:</strong> 保留的路由应该在所有通配符或正则表达式路由之前定义。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+architectcom, caesarjuly, caincheung, chouqiuqiu, dren_a, Hex, IT不倒翁, lijun14992560, nardo, shnwqshnwq, ssxdw, test_88, 志明</div>
+<div id="DocDate">
+最后修改: 2014-04-10 09:25:51</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="common_functions.html">公共函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="errors.html">错误处理</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 152 - 0
general/security.html

@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>安全 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/security.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;安全    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>安全</h1>
+
+<p>本页描述了一些关于 Web 安全的“最佳实践”,并详细说明了 CodeIgniter 的内部安全特性。</p>
+
+
+<h2>URI 安全</h2>
+
+<p>CodeIgniter 严格限制 URI 中所能包含的字符,以此帮助你设计的程序减少被恶意数据入侵的可能。URI 一般只包含下列内容:
+</p>
+
+<ul>
+<li>字母和数字(Alpha-numeric text)</li>
+<li>波浪符(Tilde): ~ </li>
+<li>句号(Period): .</li>
+<li>冒号(Colon): :</li>
+<li>下划线(Underscore): _</li>
+<li>破折号(Dash): -</li>
+</ul>
+
+
+<h2>Register_globals</h2>
+
+<p>系统初始化期间所有的全局变量都被 unset,除了那些在 $_GET、$_POST 和 $_COOKIE 数组中的数据。实际上 unsetting 实例程序的作用与register_globals = off 相同。</p>
+
+<a name="error_reporting"></a>
+<h2>error_reporting</h2>
+
+<p>
+  在生产环境中,往往有必要通过设置内部的error_reporting值为0来禁用PHP错误报告。
+  这可以防止可能含有敏感信息的原始PHP错误报告输出。
+</p>
+
+<p>
+  在 index.php 设置CodeIgniter的 <kbd>ENVIRONMENT</kbd> 常量为 '<kbd>production</kbd>' 
+  将会关闭这些错误(报告)。在开发模式下,推荐设为 '<kbd>development</kbd>'。
+  更多关于各环境间区别的信息可以在<a href="environments.html">处理多环境</a>一章找到。
+</p>
+
+
+<h2>magic_quotes_runtime</h2>
+
+<p>在系统初始化期间 magic_quotes_runtime 指令被关闭以便在数据库检索数据时不必去掉反斜线。</p>
+
+<h1>最佳实践</h1>
+
+<p>在接收任何数据到你的程序之前,不管是表单提交的 POST 数据、COOKIE 数据、URI 数据、XML-RPC 数据、还是 SERVER 数组中的数据,我们都推荐你实践下面的三个步骤:</p>
+
+<ol>
+
+<li>过滤不良数据.</li>
+<li>验证数据以确保符合正确的类型, 长度, 大小等. (有时这一步骤也可取代第一步骤)</li>
+<li>在提交数据到你的数据库之前将其转换.</li>
+
+</ol>
+
+<p>CodeIgniter 提供了下列函数以辅助这个过程:</p>
+
+<ul>
+
+<li><h2>XSS 过滤</h2>
+
+<p>CodeIgniter带有一个跨站脚本过滤器. 这个过滤器会查找那些用通常手段嵌入到你数据中恶意的Javascript,或其它一些试图欺骗cookie类型的或者做其它恶意事情的代码. XSS Filter的详细描述在 <a href="../libraries/security.html">这里</a>.
+</p>
+</li>
+
+<li><h2>验证数据</h2>
+
+<p>CodeIgniter 有一个<a href="../libraries/form_validation.html">表单验证类</a>用来帮助验证、过滤和预处理数据。</p>
+</li>
+
+<li><h2>插入数据库之前转义所有数据</h2>
+
+<p>不要插入未转义的信息到你的数据库中。要了解更多信息请参阅<a href="../database/queries.html">查询</a>章节。</p>
+
+</li>
+
+</ul><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, IT不倒翁, lishen2, shnwqshnwq, xwjie</div>
+<div id="DocDate">
+最后修改: 2012-02-11 00:35:08</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="alternative_php.html">PHP 替代语法</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="styleguide.html">开发规范</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 644 - 0
general/styleguide.html

@@ -0,0 +1,644 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>开发规范 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/styleguide.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;开发规范    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><style type="text/css" media="screen">code {white-space: pre;}</style><!-- START CONTENT -->
+<div id="content">
+<h1>常用风格和语法</h1>
+
+<p>下面将描述采用CI开发中的编码的规范.</p>
+
+
+<h2>内容列表</h2>
+<ul class="minitoc">
+ <li><a href="#file_format">文件格式</a></li>
+ <li><a href="#php_closing_tag">PHP 闭合标签</a></li>
+ <li><a href="#class_and_method_naming">类和方法的命名</a></li>
+ <li><a href="#variable_names">变量命名</a></li>
+ <li><a href="#commenting">注释</a></li>
+ <li><a href="#constants">常量</a></li>
+ <li><a href="#true_false_and_null">TRUE, FALSE, 和NULL</a></li>
+ <li><a href="#logical_operators">逻辑运算符</a></li>
+ <li><a href="#comparing_return_values_and_typecasting">比较返回值和类型映射</a></li>
+ <li><a href="#debugging_code">调试代码</a></li>
+ <li><a href="#whitespace_in_files">空行分割</a></li>
+ <li><a href="#compatibility">兼容性</a></li>
+ <li><a href="#class_and_file_names_using_common_words">用常规词做类名和文件名</a></li> 
+ <li><a href="#database_table_names">数据库表名</a></li>
+ <li><a href="#one_file_per_class">一个文件一个类</a></li>
+ <li><a href="#whitespace">空白</a></li>
+ <li><a href="#line_breaks">断行</a></li>
+ <li><a href="#code_indenting">代码缩进</a></li>
+  <li><a href="#bracket_spacing">Bracket and Parenthetic Spacing</a></li>
+ <li><a href="#localized_text">Localized Text</a></li>
+ <li><a href="#private_methods_and_variables">私有方法和变量</a></li>
+ <li><a href="#php_errors">PHP 错误</a></li>
+ <li><a href="#short_open_tags">短标签</a></li>
+ <li><a href="#one_statement_per_line">每行一条语句</a></li>
+ <li><a href="#strings">字符串</a></li>
+ <li><a href="#sql_queries">SQL 查询</a></li>
+ <li><a href="#default_function_arguments">缺省函数参数</a></li>
+</ul>
+
+
+  <h2><a name="file_format"></a>文件格式</h2>
+  <div class="guidelineDetails">
+   <p>文件应该使用 Unicode (UTF-8) 编码保存。同时<strong>不要</strong>使用 <abbr title="BOM(Byte Order Mark)">字节序标记(BOM)</abbr>
+    。与 UTF-16 和 UTF-32 不同,UTF-8 编码的文件不需要指明字节序,而且 <abbr title="BOM(Byte Order Mark)">字节序标记(BOM)</abbr> 在PHP中会产生预期之外的输出,阻止了应用程序设置它自己的<abbr title="header">头信息</abbr>。应该使用Unix 格式的行结束符(LF)。</p>
+   
+   <p>以下是在一些常见的文本编辑器中更改这些设置的方法。针对你的编辑器,方法也许会有所不同;请参考你的编辑器的说明。</p>
+  
+   <h5>TextMate</h5>
+  
+   <ol>
+    <li>Open the Application Preferences</li>
+    <li>Click Advanced, and then the "Saving" tab</li>
+    <li>In "File Encoding", select "UTF-8 (recommended)"</li>
+    <li>In "Line Endings", select "LF (recommended)"</li>
+    <li><em>Optional:</em> Check "Use for existing files as well" if you wish to modify the line
+     endings of files you open to your new preference.</li>
+   </ol>
+  
+   <h5>BBEdit</h5>
+  
+   <ol>
+    <li>Open the Application Preferences</li>
+    <li>Select "Text Encodings" on the left.</li>
+    <li>In "Default text encoding for new documents", select "Unicode (UTF-8, no BOM)"</li>
+    <li><em>Optional:</em> In "If file's encoding can't be guessed, use", select
+     "Unicode (UTF-8, no BOM)"</li>
+    <li>Select "Text Files" on the left.</li>
+    <li>In "Default line breaks", select "Mac OS X and Unix (LF)"</li>
+   </ol>
+  </div>
+
+  <h2><a name="php_closing_tag"></a>PHP 闭合标签</h2>
+  <div class="guidelineDetails">
+   <p>PHP闭合标签“?&gt;”在PHP中对PHP的分析器是可选的。 但是,如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该<strong>省略</strong>这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。</p>
+<code><strong>不当的</strong>:
+&lt;?php
+
+echo "Here's my code!";
+
+?&gt;
+
+<strong>适当的</strong>:
+&lt;?php
+
+echo "Here's my code!";
+
+/* End of file myfile.php */
+/* Location: ./system/modules/mymodule/myfile.php */
+</code>
+  </div>
+
+ 
+  <h2><a name="class_and_method_naming"></a>类和方法(函数)的命名规则</h2>
+  <div class="guidelineDetails">
+   <p>类名的首字母应该大写。如果名称由多个词组成,词之间要用下划线分隔,不要使用骆驼命名法。类中所有其他方法的名称应该完全小写并且名称能明确指明这个函数的用途,最好用动词开头。尽量避免过长和冗余的名称</p>
+
+ <code><strong>不当的</strong>:
+class superclass
+class SuperClass
+
+<strong>适当的</strong>:
+class Super_class</code>
+
+ <code>class Super_class &#123;
+
+ function __construct()
+ &#123;
+
+ &#125;
+&#125;</code>
+
+   <p>不当的和适当的方法名称的示例:</p>
+
+ <code><strong>不当的</strong>:
+function fileproperties()  // 方法名没有清晰的描述以及下划线分割单词
+function fileProperties()  // 方法名没有清晰的描述以及使用了驼峰法命名
+function getfileproperties()  // 还可以!但是忘记了下划线分割单词
+function getFileProperties()  // 使用了驼峰法命名
+function get_the_file_properties_from_the_file&#40;&#41; // 方法名太冗长
+
+<strong>适当的</strong>:
+function get_file_properties() // 清晰的方法名描述,下划线分割单词,全部使用小写字母</code>
+
+  </div>
+ 
+ 
+  <h2><a name="variable_names"></a>变量命名</h2>
+  <div class="guidelineDetails">
+   <p>变量的命名规则与方法的命名规则十分相似。就是说,变量名应该只包含小写字母,用下划线分隔,并且能适当地指明变量的用途和内容。那些短的、无意义的变量名应该只作为迭代器用在for()循环里。</p>
+<code><strong>不当的</strong>:
+$j = &apos;foo&apos;;  // 单字符变量应该只作为for()的循环变量使用
+$Str   // 使用了大写字母
+$bufferedText  // 使用了驼峰命名,而且变量名应该更短,并有清晰的语法含义
+$groupid  // 多个词组,应该使用下划线分割
+$name_of_last_city_used // 太长了
+
+<strong>适当的</strong>:
+for ($j = 0; $j &lt; 10; $j++)
+$str
+$buffer
+$group_id
+$last_city
+</code>
+  </div>
+ 
+ 
+  <h2><a name="commenting"></a>注释</h2>
+  <div class="guidelineDetails">
+   <p>通常,代码应该被详细地注释。这不仅仅有助于给缺乏经验的程序员描述代码的流程和意图,而且有助于给你提供丰富的内容以让你在几个月后再看自己的代码时仍能很好的理解。 注释没有强制规定的格式,但是我们建议以下的形式。</p>
+
+   <p><a href="#">文档块(DocBlock)</a> 式的注释要写在类和方法的声明前,这样它们就能被集成开发环境(IDE)捕获:</p>
+
+<code>/**
+ * Super Class
+ *
+ * @package Package Name
+ * @subpackage Subpackage
+ * @category Category
+ * @author Author Name
+ * @link http://example.com
+ */
+class Super_class &#123;</code>
+
+<code>/**
+ * Encodes string for use in XML
+ *
+ * @access public
+ * @param string
+ * @return string
+ */
+function xml_encode($str)</code>
+
+   <p>使用行注释时,在大的注释块和代码间留一个空行。</p>
+
+<code>// break up the string by newlines
+$parts = explode("\n", $str);
+
+// A longer comment that needs to give greater detail on what is
+// occurring and why can use multiple single-line comments.  Try to
+// keep the width reasonable, around 70 characters is the easiest to
+// read.  Don't hesitate to link to permanent external resources
+// that may provide greater detail:
+//
+// http://example.com/information_about_something/in_particular/
+
+$parts = $this-&gt;foo($parts);
+</code>
+  </div>
+ 
+ 
+  <h2><a name="constants"></a>常量</h2>
+  <div class="guidelineDetails">
+   <p>常量命名除了要全部用大写外,其他的规则都和变量相同。<em>在适当的时候,始终使用CodeIgniter常量,例如LASH, LD, RD, PATH_CACHE等等.</em></p>
+<code><strong>不当的</strong>:
+myConstant // 未使用下划线分割单词,未全部使用大写字母
+N  // 不能使用单个字母作为常量
+S_C_VER  // 常量名没有清晰的含义
+$str = str_replace('&#123;foo&#125;', 'bar', $str); // should use LD and RD constants
+
+<strong>恰当的</strong>:
+MY_CONSTANT
+NEWLINE
+SUPER_CLASS_VERSION
+$str = str_replace(LD.'foo'.RD, 'bar', $str);
+</code>
+  </div>
+ 
+ 
+  <h2><a name="true_false_and_null"></a>TRUE, FALSE, 和 NULL</h2>
+  <div class="guidelineDetails">
+   <p><strong>TRUE</strong>, <strong>FALSE</strong>, 和 <strong>NULL</strong> 关键字应该总是完全大写的。</p>
+<code><strong>不当的</strong>:
+if ($foo == true)
+$bar = false;
+function foo($bar = null)
+
+<strong>恰当的</strong>:
+if ($foo == TRUE)
+$bar = FALSE;
+function foo($bar = NULL)</code>
+  </div>
+ 
+
+ 
+  <h2><a name="logical_operators"></a>逻辑操作符</h2>
+  <div class="guidelineDetails">
+   <p><strong>||</strong> 有时让人底气不足,不容易辨识,因为在某些输出设备上它不够清晰(可能看起来像数字11).
+    <strong>&amp;&amp;</strong> 要优先于 <strong>AND</strong> ,不过两者都可以被接受, 使用 <strong>!</strong> 时要在其前后都加一个空格。</p>
+<code><strong>不当的</strong>:
+if ($foo || $bar)
+if ($foo AND $bar)  // 可以,但有时不被常用的语法程序高亮推荐(高亮标识)
+if (!$foo)
+if (! is_array($foo))
+
+<strong>恰当的</strong>:
+if ($foo OR $bar)
+if ($foo && $bar) // 推荐
+if ( ! $foo)
+if ( ! is_array($foo))
+</code>
+  </div>
+ 
+ 
+ 
+  <h2><a name="comparing_return_values_and_typecasting"></a>比较返回值与类型映射</h2>
+  <div class="guidelineDetails">   
+    <p>部分PHP函数执行失败时返回 FALSE, 但也可能有一个有效的返回值 "" 或 0, 它在松散比较中会被计算为FALSE. 在条件语句中使用这些返回值的时候,为了确保返回值是你所预期的类型而不是一个有着松散类型的值,请进行显式的比较。</p>
+    <p>在返回和检查你自己的变量时也要遵循这种严格的方法,必要时使用<strong>===</strong> 和 <strong>!==</strong>。</p>
+
+<code><strong>不当的</strong>:
+// 如果 'foo' 位于此字符串的起始处,strpos将返回 0,
+// 此处条件判断的结果为TRUE
+if (strpos($str, 'foo') == FALSE)
+
+<strong>恰当的</strong>:
+if (strpos($str, 'foo') === FALSE)
+</code>
+
+<code><strong>不当的</strong>:
+function build_string($str = "")
+&#123;
+ if ($str == "") // uh-oh!  如果传递的参数是FALSE或者整数0那会怎么样?
+ &#123;
+
+ &#125;
+&#125;
+
+<strong>恰当的</strong>:
+function build_string($str = "")
+&#123;
+ if ($str === "")
+ &#123;
+
+ &#125;
+&#125;</code>
+
+  <p>See also information regarding <a href="#">typecasting</a>, which can be quite useful.  Typecasting has a slightly different effect which may be desirable.  When casting a variable as a string, for instance, NULL and boolean FALSE variables become empty strings, 0 (and other numbers) become strings of digits, and boolean TRUE becomes "1":</p>
+    <p> <strong>试译:</strong>另见<a href="#">类型映射</a>的信息,也会非常有用。类型映射的结果稍微有些不同,但也是可用的。比如,你把一个变量映射为字符串的时候,NULL以及布尔值FALSE会变成空字符串,0(以及其它数字)变成包含数字的字符串,布尔值TRUE变成 "1":</p>
+<code>$str = (string) $str; // 将 $str 映射为字符串</code>
+
+  </div>
+ 
+ 
+  <h2><a name="debugging_code"></a>调试代码</h2>
+  <div class="guidelineDetails">
+    <p>No debugging code can be left in place for submitted add-ons unless it is commented out, i.e. no var_dump(), print_r(), die(), and exit() calls that were used while creating the add-on, unless they are commented out.</p>
+   <p><strong>试译:</strong>在已提交的附加组件所在的地方不能有调试代码,它们被注释掉的情况除外,例如,创建附加组件时不能调用 var_dump(), print_r(), die(), 以及 exit() ,除非它们已经被注释掉了。</p>
+
+<code>// print_r($foo);</code>
+  </div>
+ 
+
+ 
+  <h2><a name="whitespace_in_files"></a>文件中的空格</h2>
+  <div class="guidelineDetails">
+   <p>No whitespace can precede the opening PHP tag or follow the closing PHP tag.  Output is buffered, so whitespace in your files can cause output to begin before CodeIgniter outputs its content, leading to errors and an inability for CodeIgniter to send proper headers.  In the examples below, select the text with your mouse to reveal the incorrect whitespace.</p>
+    <p><strong>试译:</strong>在PHP开始标记之前和结束标记之后都不能有空格。输出已经被缓存,所以文件中的空格会导致CodeIgniter在输出自己的内容之前就开始了输出,这会使CodeIgniter出错且无法输出正确的header。在下面的例子中,使用鼠标选中这些文本,你就能看到那些不应该有的空格。</p>
+
+   <p><strong>不当的</strong>:</p>
+<code>     
+&lt;?php
+ // ...在PHP开始标记上面有空格和换行符
+ // 并且在PHP结束标记后面也有空格
+?&gt;    
+</code>
+   <p><strong>恰当的</strong>:</p>
+<code>&lt;?php
+ // 本例中,PHP开始标记之前和结束标记之后就没有空格
+?&gt;</code>
+
+  </div>
+ 
+ 
+  <h2><a name="compatibility"></a>兼容性</h2>
+  <div class="guidelineDetails">
+   <p>Unless specifically mentioned in your add-on's documentation, all code must be compatible with PHP version 4.3+.  Additionally, do not use PHP functions that require non-default libraries to be installed unless your code contains an alternative method when the function is not available, or you implicitly document that your add-on requires said PHP libraries.</p>
+    <p> <strong>试译:</strong>除非你的附加组件的文档中有特别说明,否则所有代码必须与PHP 5.1以上版本兼容。此外,不要使用那些依赖于非默认安装的库的函数,除非你的代码中包含了该函数不可用时的替代方法,或者你在文档中明确说明了你的附加组件需要某些库。</p>
+  </div>
+  
+
+ 
+  <h2><a name="class_and_file_names_using_common_words"></a>使用常见词语来命名类和文件</h2>
+  <div class="guidelineDetails">
+   <p>When your class or filename is a common word, or might quite likely be identically named in another PHP script, provide a unique prefix to help prevent collision.  Always realize that your end users may be running other add-ons or third party PHP scripts.  Choose a prefix that is unique to your identity as a developer or company.</p>
+    <p><strong>试译:</strong>当你的类或文件名是一个常见词语时,或者是很可能与另一个PHP脚本同名时,使用一个唯一的前缀来避免冲突。你必须始终明白这一点:你的最终用户可能会运行其它第三方的附加组件或者PHP脚本。选择一个能够唯一标识开发者或公司的前缀。</p>
+
+<code><strong>不当的</strong>:
+class Email  pi.email.php
+class Xml  ext.xml.php
+class Import  mod.import.php
+
+<strong>恰当的</strong>:
+class Pre_email  pi.pre_email.php
+class Pre_xml  ext.pre_xml.php
+class Pre_import mod.pre_import.php
+</code>
+  </div>
+ 
+ 
+  <h2><a name="database_table_names"></a>数据库表名</h2>
+  <div class="guidelineDetails">
+   <p>Any tables that your add-on might use must use the 'exp_' prefix, followed by a prefix uniquely identifying you as the developer or company, and then a short descriptive table name.  You do not need to be concerned about the database prefix being used on the user's installation, as CodeIgniter's database class will automatically convert 'exp_' to what is actually being used.</p>
+    <p>你的附加组件所用到的任何表都必须使用 'exp_' 这个前缀,然后是一个能够唯一标识开发者或公司的前缀,最后才是一个简短的描述性的表名。你不需要担心用户安装时所使用的数据库前缀,因为CodeIgniter的数据库类将根据实际情况自动地对 'exp_' 进行转换。</p>
+
+<code><strong>不当的</strong>:
+email_addresses  // 缺少这两个前缀
+pre_email_addresses // 缺少 exp_ 前缀
+exp_email_addresses // 缺少唯一前缀
+
+<strong>恰当的</strong>:
+exp_pre_email_addresses
+</code>
+
+   <p class="important"><strong>NOTE:</strong> Be mindful that MySQL has a limit of 64 characters for table names.  This should not be an issue as table names that would exceed this would likely have unreasonable names.  For instance, the following table name exceeds this limitation by one character.  Silly, no? <strong>exp_pre_email_addresses_of_registered_users_in_seattle_washington</strong>
+     <p class="important"><strong>说明:</strong> 请注意MySQL对表名的限制是不能多于64个字符。会超出这个限制的那些表名都是不合理的,因此这应该不是问题。例如,下面的这个些表名比最大限制多出一个字符。这很傻,不是吗?  <strong>exp_pre_email_addresses_of_registered_users_in_seattle_washington</strong>
+
+       </div>
+ 
+
+ 
+  <h2><a name="one_file_per_class"></a>一个文件一个类</h2>
+  <div class="guidelineDetails">
+   <p>Use separate files for each class your add-on uses, unless the classes are <em>closely related</em>.  An example of CodeIgniter files that contains multiple classes is the Database class file, which contains both the DB class and the DB_Cache class, and the Magpie plugin, which contains both the Magpie and Snoopy classes.</p>
+    <p>对于你的附加组件所使用的类应当遵循一个文件一个类的原则,除非这些类是紧密相关的。CodeIgniter的文件中包含多个类的一个例子是数据库类文件,其中包含了DB类和DB_Cache类,还有Magpie插件,其中包含了Magpie和Snoopy类。</p>
+    
+
+  </div>
+ 
+
+ 
+  <h2><a name="whitespace"></a>空格</h2>
+  <div class="guidelineDetails">
+   <p>Use tabs for whitespace in your code, not spaces.  This may seem like a small thing, but using tabs instead of whitespace allows the developer looking at your code to have indentation at levels that they prefer and customize in whatever application they use.  And as a side benefit, it results in (slightly) more compact files, storing one tab character versus, say, four space characters.</p>
+    <p>在代码中使用tab代替空格。这虽然看起来像是小事,但是使用tab代替空格有利于那些阅读你的代码的开发者在他们各自所使用的应用程序中自定义缩进方式。此外还有一个好处是,使用这种方式保存的文件稍微紧凑一点。</p>
+  </div>
+ 
+
+ 
+  <h2><a name="line_breaks"></a>换行</h2>
+  <div class="guidelineDetails">
+   <p>文件必须使用Unix换行符保存。这对于那些在Windows下的开发者来说更为重要,但无论如何,确保你的文本编辑器已经设置为使用Unix换行符来保存文件。</p>
+  </div>
+ 
+
+ 
+  <h2><a name="code_indenting"></a>代码缩进</h2>
+  <div class="guidelineDetails">
+   <p>使用 Allman 风格缩进。除了类声明以外,括号总是独占一行,且缩进与“属于”它的控制语句同级。</p>
+
+
+<code><strong>不恰当的</strong>:
+function foo($bar) &#123;
+ // ...
+&#125;
+
+foreach ($arr as $key => $val) &#123;
+ // ...
+&#125;
+
+if ($foo == $bar) &#123;
+ // ...
+&#125; else &#123;
+ // ...
+&#125;
+
+for ($i = 0; $i &lt; 10; $i++)
+ &#123;
+ for ($j = 0; $j &lt; 10; $j++)
+  &#123;
+  // ...
+  &#125;
+ &#125;
+
+<strong>恰当的</strong>:
+function foo($bar)
+&#123;
+ // ...
+&#125;
+
+foreach ($arr as $key => $val)
+&#123;
+ // ...
+&#125;
+
+if ($foo == $bar)
+&#123;
+ // ...
+&#125;
+else
+&#123;
+ // ...
+&#125;
+
+for ($i = 0; $i &lt; 10; $i++)
+&#123;
+ for ($j = 0; $j &lt; 10; $j++)
+ &#123;
+  // ...
+ &#125;
+&#125;</code>
+  </div>
+ 
+
+ <h2><a name="bracket_spacing"></a>方括号及圆括号内的空格符</h2>
+  <div class="guidelineDetails">
+   <p>通常情况下,不要在方括号"[]"和圆括号"()"内增加任何空格符。唯一的例外就是为了提高可读性和区别开它们与函数,在接受参数的PHP语法控制结构所使用的括号里,需要增加空格符(declare, do-while, elseif, for, foreach, if, switch, while)。</p>
+    
+   
+<code>不恰当的:
+$arr[ $foo ] = 'foo';
+
+正确的:
+$arr[$foo] = 'foo'; // 数组键值的方括号内没有空格
+
+
+不恰当的:
+function foo ( $bar )
+&#123;
+ 
+&#125;
+
+正确的:
+function foo($bar) // 函数声明的圆括号内没有空格
+&#123;
+ 
+&#125;
+
+
+不恰当的:
+foreach( $query-&gt;result() as $row ) // PHP语法控制结构之后有空格,但不是在圆括号内
+
+正确的:
+foreach ($query-&gt;result() as $row)
+</code>
+  </div>
+ 
+ 
+ 
+  <h2><a name="localized_text"></a>本地化文本</h2>
+  <div class="guidelineDetails">
+   <p>Any text that is output in the control panel should use language variables in your lang file to allow localization.</p>
+   <p>所有在控制面板输出的文本都应该使用 lang 文件里的语言变量来允许本地化。</p>
+<code>INCORRECT:
+return "Invalid Selection";
+
+CORRECT:
+return $this-&gt;lang-&gt;line('invalid_selection');</code>
+  </div>
+ 
+
+ 
+  <h2><a name="private_methods_and_variables"></a>私有方法和变量</h2>
+  <div class="guidelineDetails">
+   <p>代码里像一些只是为了被类里其他公开函数所调用而封装的工具/辅助类方法,应该以一个下划线做前缀来命名。</p>
+
+<code>convert_text()  // 公开方法
+_convert_text()  // 私有方法</code>
+  </div>
+ 
+
+ 
+  <h2><a name="php_errors"></a>PHP Errors</h2>
+  <div class="guidelineDetails">
+   <p>Code must run error free and not rely on warnings and notices to be hidden to meet this requirement.  For instance, never access a variable that you did not set yourself (such as $_POST array keys) without first checking to see that it isset().</p>
+
+   <p>Make sure that while developing your add-on, error reporting is enabled for ALL users, and that display_errors is enabled in the PHP environment.  You can check this setting with:</p>
+
+<code>if (ini_get('display_errors') == 1)
+&#123;
+ exit "Enabled";
+&#125;</code>
+
+   <p>On some servers where display_errors is disabled, and you do not have the ability to change this in the php.ini, you can often enable it with:</p>
+
+<code>ini_set('display_errors', 1);</code>
+
+   <p class="important"><strong>NOTE:</strong> Setting the <a href="#">display_errors</a> setting with ini_set() at runtime is not identical to having it enabled in the PHP environment.  Namely, it will not have any effect if the script has fatal errors</p>
+  </div>
+ 
+
+ 
+  <h2><a name="short_open_tags"></a>短标记</h2>
+  <div class="guidelineDetails">
+   <p>一直使用 PHP 完整标记,以免服务器不支持短标记,也就是未打开 short_open_tag 。(IT不倒翁注释:这条已经不成立,因为新版本的 CI 已经解决了服务器不支持短标记的问题,不过还是建议使用完整标记)</p>
+
+<code><strong>不正确的</strong>:
+&lt;? echo $foo; ?&gt;
+
+&lt;?=$foo?&gt;
+
+<strong>正确的</strong>:
+&lt;?php echo $foo; ?&gt;</code>
+  </div>
+ 
+
+ 
+  <h2><a name="one_statement_per_line"></a>每行一条语句</h2>
+  <div class="guidelineDetails">
+   <p>切记不要在一行写多条语句</p>
+
+<code><strong>不正确</strong>:
+$foo = 'this'; $bar = 'that'; $bat = str_replace($foo, $bar, $bag);
+
+<strong>正确</strong>:
+    $foo = 'this';<br/>
+    $bar = 'that';<br />
+$bat = str_replace($foo, $bar, $bag);
+</code>
+  </div>
+ 
+
+ 
+  <h2><a name="strings"></a>字符串</h2>
+  <div class="guidelineDetails">
+   <p>一直使用单引号除非你需要解析变量,如果需要解析变量请使用大括号, to prevent greedy token parsing.  如果字符串包含单引号的话你可以使用双引号,这样就不用转义了。</p>
+
+<code><strong>INCORRECT</strong>:
+"My String"     // 没有解析变量,不需要使用双引号
+"My string $foo"    // 解析变量需要使用括号
+'SELECT foo FROM bar WHERE baz = \'bag\'' // 需要转义单引号''时这样写比较难看,可以使用双引号
+
+<strong>CORRECT</strong>:
+'My String'
+"My string &#123;$foo&#125;"
+"SELECT foo FROM bar WHERE baz = 'bag'"</code>
+  </div>
+ 
+
+ 
+       <h2><a name="sql_queries"></a>SQL 查询</h2>     <div class="guidelineDetails">       <p>MySQL的关键词都是大写: SELECT, INSERT, UPDATE, WHERE, AS, JOIN, ON, IN, 等。</p>        <p>考虑到易读性,把长的查询分成多行,最好是每行只有一个从句或子从句。</p>  <code><strong>不正确的</strong>: //<br /> 关键词是小写并且一行中的查询太长(...表示行的继续)<br />  $query = $this-&gt;db-&gt;query("select foo, bar, baz, foofoo, foobar as raboof, foobaz from exp_pre_email_addresses ...where foo != 'oof' and baz != 'zab' order by foobaz limit 5, 100");  <br /><strong>正确的</strong>: <br />$query = $this-&gt;db-&gt;query("SELECT foo, bar, baz, foofoo, foobar AS raboof, foobaz<br />         FROM exp_pre_email_addresses<br />         WHERE foo != 'oof'<br />         AND baz != 'zab'<br />         ORDER BY foobaz<br />         LIMIT 5, 100");</code>     </div>
+     
+      <h2><a name="default_function_arguments"></a>缺省函数参数</h2>     <div class="guidelineDetails">       <p>适当的时候,提供函数参数的缺省值,这有助于防止因错误的函数调用引起的PHP错误,另外提供常见的备选值可以节省几行代码 例如:</p>  <code>function foo($bar = '', $baz = FALSE)</code>     </div><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+alsove, bnlt, chenshenghan, crazyfriday, fzdxstf, Hex, ianyang, IT不倒翁, levin, neversaylate, shallow, xxx1052, yinzhili, 杜建宇, 笼中</div>
+<div id="DocDate">
+最后修改: 2014-01-10 13:48:32</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="security.html">安全</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 118 - 0
general/urls.html

@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>URL - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/urls.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;URL    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>CodeIgniter URL</h1>
+<p>默认情况下,CodeIgniter 中的 URL 被设计成对搜索引擎和人类友好。不同于使用标准&ldquo;查询字符串&rdquo;方法的是,CodeIgniter 使用<strong>基于段</strong>的方法:</p>
+<code>example.com/<var>news</var>/<dfn>article</dfn>/<samp>my_article</samp></code>
+<p class="important"><strong>注意:</strong>查询字符串形式的 URL 是可选的,分述如下。</p>
+<h2>URI 段</h2>
+<p>根据模型-视图-控制器模式,在此 URL 段一般以如下形式表示:</p>
+<code>example.com/<var>class</var>/<dfn>function</dfn>/<samp>ID</samp></code>
+<ol>
+    <li>第一段表示调用控制器<strong>类</strong>。</li>
+    <li>第二段表示调用类中的<strong>函数</strong>或方法。</li>
+    <li>第三及更多的段表示的是传递给控制器的参数,如 ID 或其它各种变量。</li>
+</ol>
+<p><a href="../libraries/uri.html">URI 类</a>和 <a href="../helpers/url_helper.html">URL 辅助函数</a>中的函数可以使你的 URI 更简单的工作。另外,使用 <a href="routing.html">URI 路由</a>特性可以将你的 URL 重定向,以获得更大的灵活性。</p>
+<h2>删除 index.php 文件</h2>
+<p>默认情况下,<strong>index.php</strong> 文件将被包含在你的 URL 中:</p>
+<code>example.com/<var>index.php</var>/news/article/my_article</code>
+<p>你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用&ldquo;negative&rdquo;方法将非指定内容进行重定向:</p>
+<p><code>RewriteEngine on<br /><br>
+    RewriteCond %&#123;REQUEST_FILENAME&#125; !-f<br>
+ RewriteCond %&#123;REQUEST_FILENAME&#125; !-d  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//此处有大坑。加上这两句可保证一般css、js文件正常加载。(注意删掉这句注释哦)<br /><br>
+RewriteCond $1 !^(index\.php|images|robots\.txt)<br />
+RewriteRule ^(.*)$ /index.php/$1 [L]</code></p>
+<p class="important"><strong>注意:</strong>如果你的项目不在根目录请把上面这一句改为:<strong>RewriteRule ^(.*)$ index.php/$1 [L]</strong></p>
+<p>在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。</p>
+<h2>添加 URL 后缀</h2>
+<p>通过设置 <dfn>config/config.php</dfn> 文件,你可以为 CodeIgniter 生成的 URL 添加一个指定的文件后缀。举例来说,如果 URL 是这样的:</p>
+<code>example.com/index.php/products/view/shoes</code>
+<p>你可以随意添加一个后缀,例如 <kbd>.html</kbd>,使其显示为:</p>
+<code>example.com/index.php/products/view/shoes.html</code>
+<p>(icebird注:英文中由于参数可直接看懂其含义,并未说明应修改哪个参数,在这里应修改$config['url_suffix']这个参数。)</p>
+<h2>启用查询字符串</h2>
+<p>在一些情况下你需要在 URL 中使用查询字符串:</p>
+<code>index.php?c=products&amp;m=view&amp;id=345</code>
+<p>CodeIgniter 支持这个功能是可选的,可以在 <dfn>application/config/config.php</dfn> 文件中进行设置。如果你打开 config 文件可以看到如下内容:</p>
+<p><code>$config['enable_query_strings'] = FALSE;<br />
+  $config['controller_trigger'] = 'c'; //控制器名<br />
+  $config['function_trigger'] = 'm'; //方法名<br />
+  $config['directory_trigger']='d'; //若控制器在子目录下,URL中需带有这个参数,指定控制器所在子目录名称
+
+  </code></p>
+<p>如果你将 enable_query_strings 更改为 TRUE ,那么这个功能就被激活了。此时,你就可以通过关键字来调用需要的控制器和方法了:</p>
+<code>index.php?c=controller&amp;m=method</code>
+<p class="important"><strong>请注意:</strong>如果你使用查询字符串,那么就必须使用自己建立的 URL ,而且不能使用URL 辅助函数(或是其他生成 URL 的辅助函数,例如表单辅助函数),因为这些都是根据分段 URL 设计的。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+awinlei, dren_a, Hex, icebird, levin, longjianghu, lp_ci, zhupeng, 笼中</div>
+<div id="DocDate">
+最后修改: 2014-02-08 22:34:25</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="controllers.html">控制器</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 254 - 0
general/views.html

@@ -0,0 +1,254 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>视图 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/general/views.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;视图    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>视图</h1>
+<p>简而言之,一个<dfn>视图</dfn>就是一个网页,或是网页的部分,如头部,底部,侧边栏等等。事实上,如果你需要这种层次类型,视图可以很灵活的嵌入到其他视图中。</p>
+<p>视图从不直接调用,必须被一个<a href="controllers.html">控制器</a>来调用。记住,在一个 MVC 框架中,控制器扮演着交通警察的角色,那么,他有责任去取回某一特定的视图。如果你还没有阅读过控制器页面的话,你应该事先阅读<a href="controllers.html">控制器</a>页面。</p>
+<p>下面使用你在<a href="controllers.html">控制器</a>页面已经创建过的示例控制器,让我们来给他添加个视图。</p>
+<h2>创建视图</h2>
+<p>使用你的文本编辑器,创建一个名为 <dfn>blogview.php </dfn>的文件,写入以下代码:</p>
+<p><textarea cols="50" rows="10" style="width: 100%;" class="textarea">
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;My Blog&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+ <h1>Welcome to my Blog!</h1>
+&lt;/body&gt;
+&lt;/html&gt;
+</textarea></p>
+<p>然后保存文件到 <dfn>application/views/</dfn>  文件夹。</p>
+<h2>载入视图</h2>
+<p>你必须使用下面的函数来载入一个视图文件:</p>
+<p><code>$this-&gt;load-&gt;view('<var>name</var>');</code></p>
+<p>上面的 <var>name</var> 便是你的视图文件的名字。注意:.php 文件的扩展名(后缀名)没有必要专门写出,除非你使用了其他的扩展名。</p>
+<p>现在, 打开你先前写的名为  <dfn>blog.php</dfn>  控制器文件,并且使用视图载入函数替换echo段代码:</p>
+<p><textarea cols="50" rows="10" style="width: 100%;" class="textarea">&lt;?php
+class Blog extends CI_Controller &#123;
+
+ function index()
+ &#123;
+  $this-&gt;load-&gt;view('blogview');
+ &#125;
+&#125;
+?&gt;  </textarea></p>
+<p>如果你使用先前你用的 URL 浏览你的网站,你将会看到你的新视图. URL 与下面的类似:</p>
+<code>example.com/index.php/<var>blog</var>/</code>
+
+<h2>载入多个视图</h2>
+<p>CodeIgniter 能智能的处理多个从控制器发起的视图载入函数调用 $this-&gt;load-&gt;view。如果有多个调用,那么他们将会被合并到一起。例如,你可能希望有一个标题视图、一个菜单视图、一个内容视图、和一个页脚视图。他们看起来应该是这样:</p>
+
+<p><code>&lt;?php<br />
+<br />
+class Page extends CI_Controller &#123;<br /><br />
+
+ &nbsp;&nbsp;&nbsp;function index()<br />
+&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['page_title'] =  'Your title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('header');<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('menu');<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('content', $data);<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('footer');<br />
+&nbsp;&nbsp;&nbsp;&#125;<br />
+<br />
+&#125;<br />
+
+    ?&gt;</code></p>
+<p>在上面的例子中,我们使用了“动态添加数据”,你将在下面看到。</p>
+
+<h2>用子文件夹存储视图</h2>
+<p>如果你想让文件更有组织性,你也可以用子文件夹来存储你的视图文件.. 当你在载入视图时,必须加上子文件夹的名字. 示例如下:</p>
+<p><code>$this-&gt;load-&gt;view('<kbd>folder_name</kbd>/<var>file_name</var>');</code></p>
+<h2>给视图添加动态数据</h2>
+<p>数据通过控制器以一个<strong>数组</strong>或是<strong>对象</strong>的形式传入视图 , 这个数组或对象作为视图载入函数的第二个参数 .下面便是使用数组的示例:</p>
+<p><code>$data = array(<br />
+               'title' => 'My Title',<br />
+               'heading' => 'My Heading',<br />
+               'message' => 'My Message'<br />
+          );<br />
+<br />
+$this-&gt;load-&gt;view('blogview', <var>$data</var>);</code></p>
+<p>这里是使用对象的示例:</p>
+<p><code>$data = new Someclass();<br />
+$this-&gt;load-&gt;view('blogview', <var>$data</var>);</code></p>
+<p>当我们一次性载入多个视图的时候,你只需在第一个视图传入数据就可以了(header视图显示title,content视图显示message),比如:</p>
+<p><code><br />
+&lt;?php<br />
+<br />
+class Page extends CI_Controller &#123;<br /><br />
+
+ &nbsp;&nbsp;&nbsp;function index()<br />
+&nbsp;&nbsp;&nbsp;&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['title'] =  'Your title';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data['message'] =  'Your message';<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('header',$data);<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('content');<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;load-&gt;view('footer');<br />
+&nbsp;&nbsp;&nbsp;&#125;<br />
+<br />
+&#125;<br />
+
+    ?&gt;</code></p>
+<p>注意:如果你使用一个对象,那么类变量将转换为数组元素。</p>
+<p>好了,让我们用你的控制器试试。打开控制器并添加以下代码:</p>
+<p><textarea cols="50" rows="14" style="width: 100%;" class="textarea">&lt;?php
+class Blog extends CI_Controller &#123;
+
+ function index()
+ &#123;
+  $data['title'] = "My Real Title";
+  $data['heading'] = "My Real Heading";
+  
+  $this-&gt;load-&gt;view('blogview', $data);
+ &#125;
+&#125;
+?&gt; </textarea></p>
+<p>现在,打开你的视图文件,将其中的文本替换成与数组对应的变量:</p>
+<p><textarea rows="10" cols="50" style="width: 100%;" class="textarea">
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;&lt;?php echo $title;?&gt;&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+ <h1>&lt;?php echo $heading;?&gt;</h1>
+&lt;/body&gt;
+&lt;/html&gt;
+</textarea></p>
+<p>然后使用你先前用过的URL载入页面,你将看到变量已经被替换。</p>
+
+<h2>创建循环</h2>
+<p>你传入视图文件的数据,不仅仅局限于简单的变量。你可以传递多维数组。例如:你从数据库里面取出数据就是典型的多维数据。</p>
+<p>这里是个简单的示例。添加以下代码到你的控制器:</p>
+<p><textarea cols="50" rows="17" style="width: 100%;" class="textarea">&lt;?php
+class Blog extends CI_Controller &#123;
+
+ function index()
+ &#123;
+  $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
+
+  $data['title'] = "My Real Title";
+  $data['heading'] = "My Real Heading";
+  
+  $this-&gt;load-&gt;view('blogview', $data);
+ &#125;
+&#125;
+?&gt; </textarea></p>
+<p>现在打开你的视图文件,创建一个循环:</p>
+<textarea class="textarea" style="width:100%" cols="50" rows="24">
+&lt;html&gt;
+&lt;head&gt;
+&lt;title>&lt;?php echo $title;?&gt;&lt;/title>
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1>&lt;?php echo $heading;?&gt;&lt;/h1>
+ 
+<h3>My Todo List</h3> 
+
+<ul>
+&lt;?php foreach ($todo_list as $item):?&gt;
+
+&lt;li>&lt;?php echo $item;?&gt;&lt;/li>
+
+&lt;?php endforeach;?&gt;
+</ul>
+ 
+&lt;/body&gt;
+&lt;/html&gt;
+</textarea>
+<p><strong>注意:</strong> 上面的例子中我们使用PHP替代语法。如果你对这种语法不熟悉,可以在<a href="alternative_php.html">这里</a>阅读。</p>
+
+<h2>获取视图内容</h2>
+
+<p>view函数第三个<strong>可选</strong>参数可以改变函数的行为,让数据作为字符串返回而不是发送到浏览器。如果想用其它方式对数据进一步处理,这样做很有用。如果将view第三个参数设置为<dbd>true</dbd>(布尔)则函数返回数据。view函数缺省行为是 <dbd>false</dbd>, 将数据发送到浏览器。如果想返回数据,记得将它赋到一个变量中:</p>
+
+<code>$string = $this-&gt;load-&gt;view('<var>myfile</var>', '', <kbd>true</kbd>);</code>
+
+<p>例子:有些情况下,你并不想直接输出视图,而是仅仅想得到视图的内容以备后用。那么可以参考如下代码。</p>
+<p><textarea cols="50" rows="13" style="width: 100%;" class="textarea">&lt;?php
+class Blog extends CI_Controller &#123;
+
+ function index()
+ &#123;
+  $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
+
+  $data['title'] = "My Real Title";
+  $data['heading'] = "My Real Heading";
+  
+  $buffer = $this-&gt;load-&gt;view('blogview', $data, true);
+ &#125;
+&#125;
+?&gt; </textarea></p>
+<p>view方法中的第三个参数表示不输出视图,而只是将结果返回给一个变量。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+34333432, hewenxiang, Hex, ianyang, irini, lishen2, longjianghu, sydcurie, thankwsx, zhupeng</div>
+<div id="DocDate">
+最后修改: 2012-02-05 23:43:50</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="reserved_names.html">保留字</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="models.html">模型</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 167 - 0
helpers/array_helper.html

@@ -0,0 +1,167 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数组辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/array_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;数组辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>数组辅助函数</h1>
+<p>数组辅助函数的文件涵盖了一些用于辅助数组操作的函数。</p>
+<h2>装载本辅助函数</h2>
+<p>本辅助函数的装载通过如下代码完成:</p>
+<p><code>$this-&gt;load-&gt;helper('array');</code></p>
+<p>可用的函数如下:</p>
+<h2>element()</h2>
+<p>获取数组中的元素。本函数测试数组的索引是否已设定并含有数值。如果已设有数值则返回该数值,否则返回 FALSE,或任何你设定的默认数值(函数第三个参数)。范例:</p>
+<p><code> $array = array('color' =&gt; 'red', 'shape' =&gt; 'round', 'size' =&gt; '');<br />
+<br />
+// 返回 &quot;red&quot;<br />
+echo element('color', $array);<br />
+<br />
+// 返回 NULL<br />
+echo element('size', $array, NULL); </code></p>
+<h2>random_element()</h2>
+<p>根据提供的数组,随机返回该数组内的一个元素。使用范例:</p>
+<p><code>$quotes = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;I find that the harder I work, the more luck I seem to have. - Thomas Jefferson&quot;,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Don't stay in bed, unless you can make money in bed. - George Burns&quot;,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;We didn't lose the game; we just ran out of time. - Vince Lombardi&quot;,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;If everything seems under control, you're not going fast enough. - Mario Andretti&quot;,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Reality is merely an illusion, albeit a very persistent one. - Albert Einstein&quot;,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Chance favors the prepared mind - Louis Pasteur&quot;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+echo random_element($quotes);</code></p>
+
+<h2>elements()</h2>
+
+<p>Lets you fetch a number of items from an array.  The function tests whether each of the array indices is set.  If an index does not exist
+it is set to FALSE, or whatever you've specified as the default value via the third parameter.  Example:</p>
+
+<p><strong>试译:</strong>该函数从一个数组中取得若干元素。该函数测试(传入)数组的每个键值是否在(目标)数组中已定义;如果一个键值不存在,该键值所对应的值将被置为FALSE,或者你可以通过传入的第3个参数来指定默认的值。例如:</p>
+
+<code>
+$array = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'color' => 'red',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'shape' => 'round',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'radius' => '10',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'diameter' => '20'<br />
+);<br />
+<br />
+$my_shape = elements(array('color', 'shape', 'height'), $array);<br />
+</code>
+
+<p>The above will return the following array:</p>
+
+<p><strong>试译:</strong>上面的程序将返回下面的数组:</p>
+
+<code>
+array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'color' => 'red',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'shape' => 'round',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'height' => FALSE<br />
+);
+</code>
+
+<p>You can set the third parameter to any default value you like:</p>
+
+<p><strong>试译:</strong>你可以将第3个参数设为任何你想要的默认值:</p>
+
+<code>
+$my_shape = elements(array('color', 'shape', 'height'), $array, NULL);<br />
+</code>
+
+<p>The above will return the following array:</p>
+
+<p><strong>试译:</strong>上面的程序将返回下面的数组:</p>
+
+<code>
+array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'color' => 'red',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'shape' => 'round',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'height' => NULL<br />
+);
+</code>
+
+<p>This is useful when sending the <kbd>$_POST</kbd> array to one of your Models.  This prevents users from
+sending additional POST data to be entered into your tables:</p>
+
+<p><strong>试译:</strong>这(种方法)在将 <kbd>$_POST</kbd> 数组传入你的模型时非常有用。通过这种方式可以防止用户发送的额外的 POST 数据进入你的数据表:</p>
+
+<code>
+$this-&gt;load-&gt;model('post_model');<br />
+<br />
+$this-&gt;post_model-&gt;update(elements(array('id', 'title', 'content'), $_POST));
+</code>
+
+<p>This ensures that only the id, title and content fields are sent to be updated.</p>
+
+<p><strong>试译:</strong>这样保证了只有 id, title 和 content 字段被发送以进行更新。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+canglan, Hex, zhaosusen</div>
+<div id="DocDate">
+最后修改: 2012-02-05 23:45:13</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="../libraries/javascript.html">Javascript 类</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="captcha_helper.html">CAPTCHA 辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 195 - 0
helpers/captcha_helper.html

@@ -0,0 +1,195 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>验证码辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/captcha_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;验证码辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>CAPTCHA 辅助函数</h1>
+
+<p>验证码辅助函数用来生成图片验证码</p>
+
+
+<h2>加载辅助函数</h2>
+
+<p>用下面的代码加载验证码辅助函数:</p>
+<code>$this-&gt;load-&gt;helper('captcha');</code>
+
+<p>可用的函数如下:</p>
+
+<h2>create_captcha(<var>$data</var>)</h2>
+
+<p>根据你指定的一系列参数创建验证码图像, 返回值是一个包含此图像数据的数组.</p>
+
+<code>[array]<br />
+(<br />
+&nbsp;&nbsp;'image' => IMAGE TAG<br />
+
+&nbsp;&nbsp;'time'  => TIMESTAMP (毫秒)<br />
+&nbsp;&nbsp;'word'  => CAPTCHA WORD<br />
+)</code>
+
+  <p>"image"是实际存在image标记:
+<code>&lt;img src=&quot;http://example.com/captcha/12345.jpg&quot; width=&quot;140&quot; height=&quot;50&quot; /&gt;</code></p>
+
+  <p>这里的"time"是一个毫秒级的时间戳,作为图片文件名(不包含扩展名). 就像这样:  1139612155.3422</p>
+
+  <p>"word"是验证码, 如果不提供, 将是一个随机字符串.</p>
+
+  <h3>使用验证码辅助函数:</h3>
+
+  <p>加载后你可以向这样产生一个验证码:</p>
+
+<code>$vals = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'word'     => 'Random word',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'img_path'   => './captcha/',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'img_url'   => 'http://example.com/captcha/',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'font_path'   => './path/to/fonts/texb.ttf',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'img_width'   => '150',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'img_height' => 30,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'expiration' => 7200<br />
+&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+
+<br />
+$cap = create_captcha($vals);<br />
+echo $cap['image'];</code>
+
+  <ul>
+    <li>验证码辅助函数必须需要GD库.</li>
+    <li>只有 img_path 和 img_url 参数是必须的.</li>
+    <li>如果"word"未提供, 将自动产生一个ASCII字符串.  你也可以使用自己的词库,从里面随机挑选.</li>
+
+    <li>如果未提供TRUE TYPE字体的路径, 将会使用GD自带的字体.</li>
+    <li> "captcha" 目录必须可写(666, or 777)</li>
+    <li>"expiration" (秒) 指定了验证码图片的超时删除时间.  默认是2小时.</li>
+  </ul>
+
+  <h3>配合数据库</h3>
+
+  <p>为了在提交表单时用到验证,你需要将<kbd>create_captcha()</kbd>生成的结果保存到数据库。这样,当用户提交表单时,你就可以验证数据库里是否有此验证码或是否过期。</p>
+
+  <p>这是一个数据表的例子:</p>
+
+<code>CREATE TABLE captcha (<br />
+&nbsp;captcha_id bigint(13) unsigned NOT NULL auto_increment,<br />
+&nbsp;captcha_time int(10) unsigned NOT NULL,<br />
+&nbsp;ip_address varchar(16) default '0' NOT NULL,<br />
+&nbsp;word varchar(20) NOT NULL,<br />
+&nbsp;PRIMARY KEY `captcha_id` (`captcha_id`),<br />
+
+&nbsp;KEY `word` (`word`)<br />
+);</code>
+
+  <p>这是一个使用数据库的例子.  一个带验证码的页面显示如下:</p>
+
+<code>$this-&gt;load-&gt;helper(&#x27;captcha&#x27;);<br />
+$vals = array(<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&#x27;img_path&#x27;   =&gt; &#x27;./captcha/&#x27;,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#x27;img_url&#x27;   =&gt; &#x27;http://example.com/captcha/&#x27;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$cap = create_captcha($vals);<br />
+
+<br />
+$data = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#x27;captcha_time&#x27;  =&gt; $cap[&#x27;time&#x27;],<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&#x27;ip_address&#x27;  =&gt; $this-&gt;input-&gt;ip_address(),<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&#x27;word&#x27;      =&gt; $cap[&#x27;word&#x27;]<br />
+&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$query = $this-&gt;db-&gt;insert_string(&#x27;captcha&#x27;, $data);<br />
+
+$this-&gt;db-&gt;query($query);<br />
+<br />
+echo &#x27;提交下面的验证码:&#x27;;<br />
+echo $cap[&#x27;image&#x27;];<br />
+echo &#x27;&lt;input type=&quot;text&quot; name=&quot;captcha&quot; value=&quot;&quot; /&gt;&#x27;;</code>
+
+  <p>然后页面提交后如下处理:</p>
+
+<code>// 首先删除旧的验证码<br />
+$expiration = time()-7200; // 2小时限制<br />
+$this-&gt;db-&gt;query(&quot;DELETE FROM captcha WHERE captcha_time &lt; &quot;.$expiration);  <br />
+<br />
+
+// 然后再看是否有验证码存在:<br />
+$sql = &quot;SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time &gt; ?&quot;;<br />
+$binds = array($_POST[&#x27;captcha&#x27;], $this-&gt;input-&gt;ip_address(), $expiration);<br />
+$query = $this-&gt;db-&gt;query($sql, $binds);<br />
+
+$row = $query-&gt;row();<br />
+<br />
+if ($row-&gt;count == 0)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;你必须提交图像上显示的验证码&quot;;<br />
+&#125;</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+CosyBoy, Hex, LSvKing, 杜建宇</div>
+<div id="DocDate">
+最后修改: 2012-02-05 23:50:26</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="array_helper.html">数组辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="cookie_helper.html">Cookie 辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 105 - 0
helpers/cookie_helper.html

@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>Cookie 辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/cookie_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;Cookie 辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Cookie Helper</h1>
+
+<p>Cookie Helper 中包含了多个cookie辅助函数.</p>
+
+<h2>装载这个 helper</h2>
+
+<p>这个 helper 可以通过下面的方法来装载:</p>
+
+<code>$this-&gt;load-&gt;helper('cookie');</code>
+
+<p>下面这种方法同样可以:</p>
+
+<h2>set_cookie()</h2>
+
+
+<p>这个辅助函数给你一种优雅的体验来设置浏览器的cookie。 参考 <a href="../libraries/input.html">Input 类</a>的用途描述, 这个辅助函数可以这样调用 $this-&gt;input-&gt;set_cookie().</p>
+
+
+<h2>get_cookie()</h2>
+
+<p>这个辅助函数给你一种优雅的体验来获取浏览器的cookie。参考 <a href="../libraries/input.html">Input 类</a>的用途描述, 这个辅助函数可以这样调用:$this-&gt;input-&gt;cookie().</p>
+<h2>delete_cookie()</h2>
+
+<p>可以让你删除一个cookie,除非你设置了一个自定义的路径或者其他变量,否则只要给出cookie的名字就行了:</p>
+
+<code>delete_cookie("name");</code>
+
+<p>这个函数与<dfn>set_cookie()</dfn>函数比较像, 除了它没有值和超时参数.  你可以把一个数组作为第一个参数提交,也可以像下面这样,设置独立的参数.</p>
+
+<code>delete_cookie($name, $domain, $path, $prefix)</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+498621, billycui, Hex, pipi95, qixingyue, tonera, 李虎头</div>
+<div id="DocDate">
+最后修改: 2013-09-10 12:01:05</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="captcha_helper.html">CAPTCHA 辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="date_helper.html">日期辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 374 - 0
helpers/date_helper.html

@@ -0,0 +1,374 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>日期辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/date_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;日期辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>日期辅助函数</h1>
+
+<p>日期辅助函数的文件涵盖了一些用于辅助日期数组操作的函数。</p>
+
+
+<h2>装载本辅助函数</h2>
+
+<p>本辅助函数的装载通过如下代码完成:</p>
+
+<code>$this-&gt;load-&gt;helper('date');</code>
+
+
+<p>可用的函数如下:</p>
+
+<h2>now()</h2>
+
+<p>返回当前的 Unix 时间戳,根据你的config文件中"time reference"设定返回服务器当前时间或者GMT时间。如果你没有计划使用GMT时间(通常是你准备在站点中允许用户选择时区设置),则此函数跟PHP中time()函数等同。</p>
+
+
+
+
+<h2>mdate()</h2>
+
+<p>这个函数跟PHP的内部函数<a href="#">date()</a>几乎是一样的,区别在于,这个函数允许你使用在每个代码字母前带有百分号“%”的MySQL时间表达形式:  %Y %m %d 等。</p>
+
+<p>采用这种方式处理时间数据的优点在于,避免了你在使用date()函数时经常担心漏掉那些非时间的字符的问题。例如:</p>
+
+<code>$datestring = "Year: %Y Month: %m Day: %d - %h:%i %a";<br />
+$time = time();<br />
+<br />
+echo mdate($datestring, $time);</code>
+
+<p>如果第二参数中不包含时间戳则使用当前时间。</p>
+
+
+<h2>standard_date()</h2>
+
+<p>允许你从一些标准格式生成日期字符串。例子:</p>
+
+<code>
+$format = 'DATE_RFC822';<br />
+$time = time();<br />
+<br />
+
+echo standard_date($format, $time);
+</code>
+
+<p>第一个参数必须包含格式,第二个参数必须使用unix时间戳。</p>
+
+<p>支持格式:</p>
+
+<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+ <tr>
+  <th>常量</th>
+  <th>描述</th>
+  <th>例子</th>
+ </tr>
+ <tr> 
+  <td>DATE_ATOM</td>
+  <td>Atom</td>
+  <td>2005-08-15T16:13:03+0000</td>
+ </tr>
+ <tr>
+  <td>DATE_COOKIE</td>
+  <td>HTTP Cookies</td>
+  <td>Sun, 14 Aug 2005 16:13:03 UTC</td>
+ </tr>
+ <tr>
+  <td>DATE_ISO8601</td>
+  <td>ISO-8601</td>
+  <td>2005-08-14T16:13:03+00:00</td>
+ </tr>
+ <tr>
+  <td>DATE_RFC822</td>
+  <td>RFC 822</td>
+  <td>Sun, 14 Aug 05 16:13:03 UTC</td>
+ </tr>
+ <tr>
+  <td>DATE_RFC850</td>
+  <td>RFC 850</td>
+  <td>Sunday, 14-Aug-05 16:13:03 UTC</td>
+ </tr>
+ <tr>
+  <td>DATE_RFC1036</td>
+  <td>RFC 1036</td>
+  <td>Sunday, 14-Aug-05 16:13:03 UTC</td>
+ </tr>
+ <tr>
+  <td>DATE_RFC1123</td>
+  <td>RFC 1123</td>
+  <td>Sun, 14 Aug 2005 16:13:03 UTC</td>  
+ </tr>
+ <tr>
+  <td>DATE_RFC2822</td>
+  <td>RFC 2822</td>
+  <td>Sun, 14 Aug 2005 16:13:03 +0000</td>
+ </tr>
+ <tr>
+  <td>DATE_RSS</td>
+  <td>RSS</td>
+  <td>Sun, 14 Aug 2005 16:13:03 UTC</td>
+ </tr>
+ <tr>
+  <td>DATE_W3C</td>
+  <td>World Wide Web Consortium</td>
+  <td>2005-08-14T16:13:03+0000</td>
+ </tr>
+</table>
+
+
+<h2>local_to_gmt()</h2>
+
+<p>将unix时间戳转换为GMT。例子:</p>
+
+<code>$now = time();<br />
+<br />
+$gmt = local_to_gmt($now);</code>
+
+
+<h2>gmt_to_local()</h2>
+
+<p>输入一个GMT的unix时间戳,根据时区、夏时制转换为本地时间戳。例子:</p>
+
+<code>
+$timestamp = '1140153693';<br />
+$timezone  = 'UM8';<br />
+$daylight_saving = TRUE;<br />
+<br />
+echo gmt_to_local($timestamp, $timezone, $daylight_saving);</code>
+
+<p><strong>注意:</strong>时区列表请参考本页末。</p>
+
+<h2>mysql_to_unix()</h2>
+
+<p>将MySQL时间戳转换为unix时间戳。例子:</p>
+
+<code>$mysql = '20061124092345';<br />
+<br />
+$unix = mysql_to_unix($mysql);</code>
+
+
+<h2>unix_to_human()</h2>
+
+<p>将unix时间戳转为如下人类可阅读格式:</p>
+
+<code>YYYY-MM-DD HH:MM:SS AM/PM</code>
+
+<p>本函数可用于需要作为表单提交的地方。</p>
+
+<p>时间可以设置为含或者不含秒数,而且可以设为欧洲或美国格式。如果只有时间戳,则格式化为不含秒数的美国格式。例子:</p>
+
+<code>$now = time();<br />
+<br />
+echo unix_to_human($now); // U.S. time, no seconds<br />
+<br />
+echo unix_to_human($now, TRUE, 'us'); // U.S. time with seconds<br />
+
+<br />
+echo unix_to_human($now, TRUE, 'eu'); // Euro time with seconds</code>
+
+
+<h2>human_to_unix()</h2>
+
+<p>跟上面函数相反,这个函数将“人类”的时间表示方式(如,2008-12-31 04:38 PM)转换成unix的时间表示方式(如:1230713116)。这个函数在你接收一个从表单提交而来的“人类”的时间格式时会很有用。如果传递给这个函数的参数不是如上所说的“人类”时间格式的字符串,哪么它将返回FALSE (boolean)。例如:</p>
+
+<code>$now = time();<br />
+<br />
+$human = unix_to_human($now);<br />
+<br />
+
+$unix = human_to_unix($human);</code>
+
+<h2>timespan()</h2>
+
+<p>格式化unix时间戳使其看起来像这样:</p>
+
+<code>1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes</code>
+
+<p>第一参数必须是unix时间戳,第二个参数是一个大于第一参数的时间戳。如果第二参数空缺,则使用当前时间。这个函数的用途通常是计算过去某一个时间点到现在的时间之间的时间差。例如:</p>
+
+<code>$post_date = '1079621429';<br />
+$now = time();<br />
+<br />
+echo timespan($post_date, $now);</code>
+
+<p class="important"><strong>Note:</strong>由本函数生成的文字可以在以下语言文件中找到: language/&lt;your_lang&gt;/date_lang.php</p>
+
+
+<h2>days_in_month()</h2>
+
+<p>对给出的年月值返回天数。这个函数的实现已经考虑了存在闰年和平年的情况。例如:</p>
+<code>echo days_in_month(06, 2005);</code>
+
+<p>如果省略第二参数则使用当前年。</p>
+
+<h2>timezones()</h2>
+<p>根据给定的时区参考(有效时区列表请参见下面的“时区参考”)返回跟UTC的相差值。</p>
+
+<p><code>echo timezones('UM5');</code></p>
+<p>本函数最有用是在使用timezone_menu()函数时. </p>
+
+<h2>timezone_menu()</h2>
+<p>生成一个时区下拉选单,像这样:</p>
+
+<img src="../images/timezone_menu.gif" alt="">
+
+<p>在你需要向你的网站会员提供他们所在时区的设置选项时这个选单会很有用的。</p>
+
+<p>第一个参数让你设置选单的“已选”状态。例如,你想将美国西部标准时间设为默认时间,你可以这样做:</p>
+
+<code>echo timezone_menu('UM8');</code>
+
+<p>要得到这个选单的各个具体值,请看下面的时区参考表。</p>
+
+<p>第二个参数让你为选单设置CSS的类名。</p>
+
+<p class="important"><strong>注意:</strong>上面选单里的每个条目可以在这个文件语言文件里找到: language/&lt;your_lang&gt;/date_lang.php</p>
+
+
+
+<h2>时区参考</h2>
+
+<p>下面的表说明了各个时区值以及该值对应的地点</p>
+
+<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+
+<tr>
+<th>时区</th>
+<th>位置</th>
+</tr><tr>
+
+<td class="td">UM12</td><td class="td">(UTC - 12:00) 埃尼威托克, 夸贾林环礁</td>
+</tr><tr>
+<td class="td">UM11</td><td class="td">(UTC - 11:00) 诺姆, 中途岛, 萨摩亚</td>
+</tr><tr>
+<td class="td">UM10</td><td class="td">(UTC - 10:00) 夏威夷</td>
+
+</tr><tr>
+<td class="td">UM9</td><td class="td">(UTC - 9:00) 阿拉斯加</td>
+</tr><tr>
+<td class="td">UM8</td><td class="td">(UTC - 8:00) 太平洋时间(美国西部标准时间)</td>
+</tr><tr>
+<td class="td">UM7</td><td class="td">(UTC - 7:00) 山地时间(美国中西部时间)</td>
+</tr><tr>
+<td class="td">UM6</td><td class="td">(UTC - 6:00) 美国中部时间, 墨西哥城</td>
+</tr><tr>
+
+<td class="td">UM5</td><td class="td">(UTC - 5:00) 美国东部时间, 波哥大, 利马, 基多</td>
+</tr><tr>
+<td class="td">UM4</td><td class="td">(UTC - 4:00) 大西洋时间, 加拉加斯, 拉巴斯</td>
+</tr><tr>
+<td class="td">UM25</td><td class="td">(UTC - 3:30) 纽芬兰</td>
+</tr><tr>
+<td class="td">UM3</td><td class="td">(UTC - 3:00) 巴西, 布宜诺斯艾利斯, 乔治城, 福克兰群岛</td>
+</tr><tr>
+<td class="td">UM2</td><td class="td">(UTC - 2:00) 中部大西洋时间, 亚森欣岛, 圣赫勒拿</td>
+
+</tr><tr>
+<td class="td">UM1</td><td class="td">(UTC - 1:00) 亚速尔群岛, 佛得角群岛</td>
+</tr><tr>
+<td class="td">UTC</td><td class="td">(UTC) 卡萨布兰卡, 都柏林, 爱丁堡, 伦敦, 里斯本, 蒙罗维亚</td>
+</tr><tr>
+<td class="td">UP1</td><td class="td">(UTC + 1:00) 柏林, 布鲁塞尔, 哥本哈根, 马德里, 巴黎, 罗马</td>
+</tr><tr>
+<td class="td">UP2</td><td class="td">(UTC + 2:00) 加里宁格勒, 南非, 华沙</td>
+</tr><tr>
+
+<td class="td">UP3</td><td class="td">(UTC + 3:00) 巴格达, 利雅得, 莫斯科, 内罗毕</td>
+</tr><tr>
+<td class="td">UP25</td><td class="td">(UTC + 3:30) 德黑兰</td>
+</tr><tr>
+<td class="td">UP4</td><td class="td">(UTC + 4:00) 阿布扎比, 巴库, 马斯喀特, 第比利斯</td>
+</tr><tr>
+<td class="td">UP35</td><td class="td">(UTC + 4:30) 喀布尔</td>
+</tr><tr>
+<td class="td">UP5</td><td class="td">(UTC + 5:00) 伊斯兰堡, 卡拉奇, 塔什干</td>
+
+</tr><tr>
+<td class="td">UP45</td><td class="td">(UTC + 5:30) 孟买, 加尔各答, 马德拉斯, 新德里</td>
+</tr><tr>
+<td class="td">UP6</td><td class="td">(UTC + 6:00) 阿拉木图, 哥伦巴, 达卡</td>
+</tr><tr>
+<td class="td">UP7</td><td class="td">(UTC + 7:00) 曼谷, 河内, 雅加达</td>
+</tr><tr>
+<td class="td">UP8</td><td class="td">(UTC + 8:00) 北京, 香港, 佩斯, 新加坡, 台北</td>
+</tr><tr>
+
+<td class="td">UP9</td><td class="td">(UTC + 9:00) 大阪, 札幌, 汉城, 东京, 雅库茨克</td>
+</tr><tr>
+<td class="td">UP85</td><td class="td">(UTC + 9:30) 阿德莱德, 达尔文</td>
+</tr><tr>
+<td class="td">UP10</td><td class="td">(UTC + 10:00) 墨尔本, 巴布亚新几内亚, 悉尼, 海参崴</td>
+</tr><tr>
+<td class="td">UP11</td><td class="td">(UTC + 11:00) 马加丹, 新喀里多尼亚, 所罗门群岛</td>
+</tr><tr>
+<td class="td">UP12</td><td class="td">(UTC + 12:00) 奥克兰, 惠灵顿, 斐济, 马绍尔群岛</td>
+
+</tr>
+</table><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, mchong, pipi95, yinzhili</div>
+<div id="DocDate">
+最后修改: 2011-02-01 00:10:12</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="cookie_helper.html">Cookie 辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="directory_helper.html">目录辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 125 - 0
helpers/directory_helper.html

@@ -0,0 +1,125 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>目录辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/directory_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;目录辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>目录辅助函数</h1>
+<p>目录辅助函数文件包含处理目录的函数。</p>
+
+
+<h2>载入这个辅助函数</h2>
+
+<p>请使用如下代码载入这个辅助函数:</p>
+<code>$this-&gt;load-&gt;helper('directory');</code>
+<p>以下函数可以使用:</p>
+
+
+<h2>directory_map('<var>source directory</var>')</h2>
+
+<p>这个函数将读取第一个参数所给出的路径的目录,并且返回该目录所包含文件的数据。示例如下:</p>
+<code>$map = directory_map('./mydirectory/');</code>
+<p class="important"><strong>注意:</strong> 路径总是相对于你的index.php文件。</p>
+<p>如果目录含有子文件夹,也将被列出。你可以使用第二个参数(整数)来控制递归的深度。如果深度为 1,则只列出根目录:</p>
+<code>$map = directory_map('./mydirectory/', 1);</code>
+
+<p>默认情况下,返回的数组中不会包括那些隐藏文件。为了覆盖此行为(即显示隐藏的文件--译者加),你可以设置第三个参数为 <var>true</var> (boolean):</p>
+
+<code>$map = directory_map('./mydirectory/', FALSE, TRUE);</code>
+
+<p>每一个文件夹的名字都将作为数组的索引,文件夹所包含的文件将以数字作为索引。下面有个典型的数组示例:</p>
+<code>Array<br />
+(<br />
+&nbsp;&nbsp;&nbsp;[libraries] =&gt; Array<br />
+&nbsp;&nbsp;&nbsp;(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[0] =&gt; benchmark.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[1] =&gt; config.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[database] =&gt; Array<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[0] =&gt; active_record.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[1] =&gt; binds.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[2] =&gt; configuration.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[3] =&gt; connecting.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[4] =&gt; examples.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[5] =&gt; fields.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[6] =&gt; index.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[7] =&gt; queries.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[2] =&gt; email.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[3] =&gt; file_uploading.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[4] =&gt; image_lib.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[5] =&gt; input.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[6] =&gt; language.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[7] =&gt; loader.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[8] =&gt; pagination.html<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[9] =&gt; uri.html<br />
+)</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, slqingqing, sydcurie, yinzhili</div>
+<div id="DocDate">
+最后修改: 2013-08-01 10:42:49</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="date_helper.html">日期辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="download_helper.html">下载辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 110 - 0
helpers/download_helper.html

@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>下载辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/download_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;下载辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>下载辅助函数</h1>
+
+<p>下载辅助函数可以下载数据到你的桌面</p>
+
+
+<h2>加载这个辅助函数</h2>
+
+<p>用下面的代码加载这个辅助函数</p>
+
+<code>$this-&gt;load-&gt;helper('download');</code>
+
+<p>下面的函数就有效:</p>
+
+<h2>force_download('<var>filename</var>', '<var>data</var>')</h2>
+
+<p>服务器产生能下载数据到你桌面的头. 这对你下载文件有帮助.
+第一个参数是<strong>下载文件的文件名</strong>, 第二个参数是文件数据.
+Example:</p>
+
+<code>
+$data = 'Here is some text!';<br />
+$name = 'mytext.txt';<br />
+<br />
+force_download($name, $data);
+</code>
+
+<p>如果你想在你的服务器上下载一个存在文件,你需要将它读到一个字符串中:</p>
+
+<code>
+$data = file_get_contents&#40;"/path/to/photo.jpg"&#41;; // 读文件内容<br />
+$name = 'myphoto.jpg';<br />
+
+<br />
+force_download($name, $data);
+</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, moonster</div>
+<div id="DocDate">
+最后修改: 2008-02-02 20:28:04</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="directory_helper.html">目录辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="email_helper.html">Email 辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 102 - 0
helpers/email_helper.html

@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>Email 辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/email_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;Email 辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Email 辅助函数</h1>
+
+<p>Email 辅助函数提供了一些辅助功能,用于电子邮件的相关操作。若要了解更多的电子邮件解决方案,请参阅 CodeIgniter 的 <a href="../libraries/email.html">Email 类</a>。</p>
+
+<h2>装载这个辅助函数</h2>
+
+<p>本辅助函数的装载通过如下代码完成:</p>
+<p><code>$this-&gt;load-&gt;helper('email');</code></p>
+
+<p>可用的函数如下:</p>
+
+<h2>valid_email('<var>email</var>')</h2>
+
+<p>检查 email 是否是一个正确的 email 地址格式。请注意,这实际上并不表示这个地址能接收邮件,只是简单地说明这是一个有效的地址格式。</p>
+<p>这个函数返回 TRUE/FALSE</p>
+<code> $this-&gt;load-&gt;helper('email');<br />
+<br />
+if (valid_email('email@somesite.com'))<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo 'email is valid';<br />
+&#125;<br />
+else<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo 'email is not valid';<br />
+&#125;</code>
+<h2>send_email('<var>recipient</var>', '<var>subject</var>', '<var>message</var>')</h2>
+<p>使用 PHP 的本地 <a href="#">mail()</a> 函数发送一封 Email。如果需要更强大的 Email 解决方案,请参考 CodeIgniter 的 <a href="../libraries/email.html">Email 类</a>。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, jzfx, odayou</div>
+<div id="DocDate">
+最后修改: 2013-04-25 17:48:04</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="download_helper.html">下载辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="file_helper.html">文件辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 178 - 0
helpers/file_helper.html

@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>文件辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/file_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;文件辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>文件辅助函数</h1>
+
+<p>文件辅助函数文件包含若干对文件进行操作的函数。</p>
+
+
+<h2>加载</h2>
+
+<p>使用以下代码:</p>
+
+<code>$this-&gt;load-&gt;helper('file');</code>
+
+<p>加载后可用以下函数:</p>
+
+<h2>read_file&#40;'<var>path</var>'&#41;</h2>
+
+<p>返回路径为path的文件内容。例:</p>
+
+<code>$string = read_file&#40;'./path/to/file.php'&#41;;</code>
+
+<p>可以是相对或者绝对的服务器的路径。如果函数执行失败则返回 FALSE(boolean类型)。</p>
+
+<p class="important"><strong>提示:</strong> 这里的路径是相对于该站点的index.php所在的路径,而不是当前所在的控制器或视图文件的路径。这是因为CodeIgniter使用的前端控制器(front controller)所以,所有的路径永远都是相对于index.php所在路径。</p>
+
+<p>如果你的服务器打开了 open_basedir 限制,你可能无法通过上面的方法访问一个文件。</p>
+
+<h2>write_file&#40;'<var>path</var>', <kbd>$data</kbd>&#41;</h2>
+
+<p>写进数据到path所指向文件。如果文件不存在则创建之。例:</p>
+
+<code>
+$data = 'Some file data';<br />
+<br />
+if ( ! write_file&#40;'./path/to/file.php', $data&#41;)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp; echo 'Unable to write the file';<br />
+&#125;<br />
+
+else<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp; echo 'File written!';<br />
+&#125;</code>
+
+<p>你可以通过可选的第三个参数来设置文件的读写属性:</p>
+
+<code>write_file&#40;'./path/to/file.php', $data, <var>'r+'</var>&#41;;</code>
+
+<p>默认读写属性是 <kbd>wb</kbd>。更多关于文件读写属性参数的内容请参考:<a href="#">PHP user guide</a>。</p>
+
+<p>注意:要使用此函数写进数据,当前用户对此文件应该是“可写”的,如果该文件不存在则该用户应该对包含该文件的目录有写权限。(即*nux系统下的666,777等)。</p>
+
+<p class="important"><strong>提示:</strong> 这里的路径是相对于该站点的index.php所在的路径,而不是当前所在的控制器或视图文件的路径。这是因为CodeIgniter使用的前端控制器(front controller)所以,所有的路径永远都是相对于index.php所在路径。</p>
+
+
+<h2>delete_files('<var>path</var>')</h2>
+
+<p>删除所有包含于path下的文件。例:</p>
+<code>delete_files('./path/to/directory/');</code>
+
+<p>如果第二个参数设为 <kbd>true</kbd>, 则所有在path下的文件夹也会被删除掉。例:</p>
+
+<code>delete_files('./path/to/directory/', TRUE);</code>
+
+<p class="important"><strong>提示:</strong> 要被删除的文件必须是当前系统用户所有或者是当前用户对之具有写权限。</p>
+
+
+<h2>get_filenames('<var>path/to/directory/</var>')</h2>
+
+<p>获取path/to/directory目录下所有文件名组成的数组。如果需要文件名中有其完整路径则可以设置可选的第二个参数为TRUE。</p>
+
+<h2>get_dir_file_info('<var>path/to/directory/</var>', <kbd>$top_level_only</kbd> = TRUE)</h2>
+
+<p>获取path/to/directory/目录下的所有文件的文件名,文件大小,日期,文件权限等,并将这些内容保存到返回的数组当中。Sub-folders contained within the specified path are only read if forced
+  by sending the second parameter, <kbd>$top_level_only</kbd> to <samp>FALSE</samp>, as this can be an intensive operation.</p>
+
+<h2>get_file_info('<var>path/to/file</var>', <kbd>$file_information</kbd>)</h2>
+
+<p>通过给定的路径和文件名,获取到文件path/to/file的文件名,文件大小,文件更改日期等。第二个参数允许你说明需要返回的信息,这个参数的选项包括'name', 'server_path', 'size', 'date', 'readable', 'writable', 'executable', 'fileperms'。如果文件不存在则返回FALSE。</p>
+
+<p class="important"><strong>注意:</strong> 参数 &quot;writable&quot; 是使用PHP内部的 is_writable() 函数来得到文件读写权限信息的,而这个函数在IIS服务器上存在众所周知的问题。为此,可以考虑使用PHP内部的另一个函数来替换,这个函数就是fileperms()。</p>
+<h2>get_mime_by_extension('<var>file</var>')</h2>
+
+<p>将文件后缀所代表的文件类型按照config/mimes.php里所指明的对应类型进行解释。如果不能决定文件类型,或者不能打开mime配置文件则返回 FALSE。</p>
+<p>
+<code>$file = &quot;somefile.png&quot;;<br />
+echo $file . ' is has a mime type of ' . get_mime_by_extension($file);</code>
+</p>
+<p class="critical"><strong>注意:</strong> 这并不是一个准确判断文件类型的方式,而仅仅是一种方便的判别方式。不应当在涉及安全问题时使用这种方式。</p>
+
+<h2>symbolic_permissions(<kbd>$perms</kbd>)</h2>
+
+<p>将数字式的权限表示方式(如<kbd>fileperms()</kbd>函数所返回值)转换成采用标准符号的标示方式,例如:"33279"转换成"-rwxrwxrwx")。</p>
+
+<code>echo symbolic_permissions(fileperms('./index.php'));<br />
+<br />
+// -rw-r--r--</code>
+
+<h2>octal_permissions(<kbd>$perms</kbd>)</h2>
+
+<p>将数字式的权限表示方式(如<kbd>fileperms()</kbd>函数所返回值)转换成采用三字符的八进制的标示方式,例如:"33279"转换成"777")。</p>
+
+<code>echo octal_permissions(fileperms('./index.php'));<br />
+<br />
+// 644</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, iptton, pipi95, szlinz</div>
+<div id="DocDate">
+最后修改: 2011-02-01 00:18:20</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="directory_helper.html">目录辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="form_helper.html">表单辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 457 - 0
helpers/form_helper.html

@@ -0,0 +1,457 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>表单辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/form_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;表单辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>表单辅助函数</h1>
+
+<p>表单辅助函数文件包含那些帮助你使用表单的函数。</p>
+
+
+<h2>载入辅助函数</h2>
+
+<p>用下面的代码载入该辅助函数:</p>
+<code>$this-&gt;load-&gt;helper('form');</code>
+
+<p>下列函数才可用:</p>
+
+
+
+<h2>form_open()</h2>
+<p>创建一个开始form标签,相对于你的<strong>配置文档</strong>中的基础URL。允许你添加一些form属性和一些隐藏表单,并且他会基于你的 config.php 文件里设置的编码,自动生成 <kbd>accept-charset</kbd> 这个属性。</p>
+<p>使用这个函数而不是直接硬编码HTML的主要的优势是使你的程序可以方便的转换,如果你的URL变化的话。</p>
+
+<p>下面是一个例子:</p>
+
+<code>echo form_open('email/send');</code>
+
+<p>上面的例子会创建一个form提交至你的基础URL加上"email/send" URI片段,像这样:</p>
+
+<code>&lt;form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" /></code>
+
+<h4>添加一些属性</h4>
+
+<p>可以在第二个参数里传递一个关联数组来达到这一目的, 像这样:</p>
+
+<code>
+$attributes = array('class' => 'email', 'id' => 'myform');<br />
+<br />
+echo form_open('email/send', $attributes);</code>
+
+<p>上面的例子会创建一个这样的form标签:</p>
+
+<code>&lt;form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" &nbsp;class="email" &nbsp;id="myform" /></code>
+
+<h4>增加隐藏域</h4>
+
+<p>隐藏域可以使用数组加在第三个参数上,就像这样:</p>
+
+<code>
+$hidden = array('username' => 'Joe', 'member_id' => '234');<br />
+<br />
+echo form_open('email/send', '', $hidden);</code>
+
+<p>上面的例子会创建一个这样的form标签和这些隐藏域:</p>
+
+<code>&lt;form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send"><br />
+&lt;input type="hidden" name="username" value="Joe" /><br />
+&lt;input type="hidden" name="member_id" value="234" /></code>
+
+
+<h2>form_open_multipart()</h2>
+
+<p>这个函数和上面的<dfn>form_open()</dfn>函数完全一样,不同之处在于它多了一个multipart属性。如果你要制作一个上传文件的表单,这个属性是必须的。</p>
+
+<h2>form_hidden()</h2>
+
+<p>可以使你创建一个隐藏输入栏。你可以输入name和value来创建一个:</p>
+
+<code>echo form_hidden('username', 'johndoe');<br />
+
+<br />
+// 将产生:<br /><br />
+&lt;input type="hidden" name="username" value="johndoe" /></code>
+
+<p>或者你也可以使用数组来联合创建它们:</p>
+
+<code>$data = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name'&nbsp;&nbsp;=> 'John Doe',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'email' => 'john@example.com',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'url'&nbsp;&nbsp;&nbsp;=> 'http://example.com'<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+echo form_hidden($data);<br />
+<br />
+// 将产生:<br /><br />
+&lt;input type="hidden" name="name" value="John Doe" /><br />
+&lt;input type="hidden" name="email" value="john@example.com" /><br />
+&lt;input type="hidden" name="url" value="http://example.com" /></code>
+
+
+
+
+<h2>form_input()</h2>
+
+<p>可以使你创建一个标准输入栏。你可以在第一和第二个参数里输入name和value来创建一个:</p>
+
+<code>echo form_input('username', 'johndoe');</code>
+
+<p>或者你也可以用关联数组来添加你想加入的内容:</p>
+
+<code>$data = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'username',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'username',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'value'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'johndoe',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'maxlength'&nbsp;&nbsp;&nbsp;=> '100',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'size'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> '50',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'style'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; => 'width:50%',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+echo form_input($data);<br />
+<br />
+// 将产生:<br /><br />
+&lt;input type="text" name="username" id="username" value="johndoe" maxlength="100" size="50" style="width:50%" /></code>
+
+<p>如果你想加入一些额外的内容,例如Javascript,你可以在第三个参数里输入字符串来创建它:</p>
+
+<code>$js = 'onClick="some_function()"';<br />
+<br />
+echo form_input('username', 'johndoe', $js);</code>
+
+<h2>form_password()</h2>
+
+<p>此函数除了是设置type为“password”外和上面的 <dfn>form_input()</dfn> 函数完全一样。</p>
+
+<h2>form_upload()</h2>
+
+<p>此函数与上面的 <dfn>form_input()</dfn> 函数几乎完全相同,唯一的区别是此函数所设置的 type 为 "file",用来上传文件。</p>
+
+<h2>form_textarea()</h2>
+
+<p>此函数与上面的 <dfn>form_input()</dfn> 函数几乎完全相同,唯一的区别是此函数所生成的是一个"textarea"。说明:上面的范例中所指定的 "maxlength" 和 "size" 属性在这里变成了 "rows" 和 "cols"。</p>
+
+
+<h2>form_dropdown()</h2>
+
+<p>创建一个标准的下拉列表字段。第一个参数是字段名,第二个参数是一个包含各个选项的关联数组,第三个参数是你想要设置为默认被选中的值。第三个参数也可以是一个包含多个项目的数组,CI 将为你创建多选下拉列表。例如:</p>
+
+<code>$options = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'small'&nbsp;&nbsp;=> 'Small Shirt',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'med'&nbsp;&nbsp;&nbsp;&nbsp;=> 'Medium Shirt',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'large'&nbsp;&nbsp; => 'Large Shirt',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'xlarge' => 'Extra Large Shirt',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$shirts_on_sale = array('small', 'large');<br />
+<br />
+echo form_dropdown('shirts', $options, 'large');<br />
+<br />
+// 将会生成:<br />
+<br />
+&lt;select name=&quot;shirts&quot;&gt;<br />
+&lt;option value=&quot;small&quot;&gt;Small Shirt&lt;/option&gt;<br />
+&lt;option value=&quot;med&quot;&gt;Medium  Shirt&lt;/option&gt;<br />
+&lt;option value=&quot;large&quot; selected=&quot;selected&quot;&gt;Large Shirt&lt;/option&gt;<br />
+&lt;option value=&quot;xlarge&quot;&gt;Extra Large Shirt&lt;/option&gt;<br />
+&lt;/select&gt;<br />
+<br />
+echo form_dropdown('shirts', $options, $shirts_on_sale);<br />
+<br />
+// 将会生成:<br />
+<br />
+&lt;select name=&quot;shirts&quot; multiple=&quot;multiple&quot;&gt;<br />
+&lt;option value=&quot;small&quot; selected=&quot;selected&quot;&gt;Small Shirt&lt;/option&gt;<br />
+&lt;option value=&quot;med&quot;&gt;Medium  Shirt&lt;/option&gt;<br />
+&lt;option value=&quot;large&quot; selected=&quot;selected&quot;&gt;Large Shirt&lt;/option&gt;<br />
+&lt;option value=&quot;xlarge&quot;&gt;Extra Large Shirt&lt;/option&gt;<br />
+&lt;/select&gt;</code>
+
+
+<p>如果你希望 &lt;select&gt; 开始标签包含一些额外的属性,例如 <kbd>id</kbd> 属性以及JavaScript,你可以将一个字符串作为第四个参数传递过去:</p>
+
+<code>$js = 'id="shirts" onChange="some_function();"';<br />
+<br />
+echo form_dropdown('shirts', $options, 'large', $js);</code>
+
+<p>如果$options参数是一个多维数组,form_dropdown() 函数将使用数组的键作为 label值生成一个 &lt;optgroup&gt; 标签。</p>
+
+
+<h2>form_multiselect()</h2>
+
+<p>该函数可以生成标准的复选列表。第一个参数给出表单项的名称;第二个参数用一个关联数组给出该表单项的全部可选项列表;第三个参数规定哪几项是默认已选取的。这些参数的用法跟上面的<kbd>form_dropdown()</kbd>完全一样。当然,由于是复选的,在处理传值的时候,我们要使用数组的语法。数组语法的例子:<samp>foo[]</samp>。</p>
+
+<h2>form_fieldset()</h2>
+
+<p>帮助你生成fieldset/legend标签。</p>
+<code>echo form_fieldset('Address Information');<br />
+echo &quot;&lt;p&gt;fieldset content here&lt;/p&gt;\n&quot;;<br />
+echo form_fieldset_close();
+<br />
+<br />
+// 生成<br />
+&lt;fieldset&gt; 
+<br />
+&lt;legend&gt;Address Information&lt;/legend&gt;  
+<br />
+&lt;p&gt;form content here&lt;/p&gt;  
+<br />
+&lt;/fieldset&gt;</code>
+<p>与其它函数类似,在第二个参数你可以传递一个关联数组来添加你自己想要的自定义的属性。</p>
+<p><code>$attributes = array('id' =&gt; 'address_info', 'class' =&gt; 'address_info');<br />
+    echo form_fieldset('Address Information', $attributes);<br />
+echo &quot;&lt;p&gt;fieldset content here&lt;/p&gt;\n&quot;;<br />
+echo form_fieldset_close(); <br />
+<br />
+// 生成<br />
+&lt;fieldset id=&quot;address_info&quot; class=&quot;address_info&quot;&gt; <br />
+&lt;legend&gt;Address Information&lt;/legend&gt; <br />
+&lt;p&gt;form content here&lt;/p&gt; <br />
+&lt;/fieldset&gt;</code></p>
+<h2>form_fieldset_close()</h2>
+<p>生成一个结束的fieldset标签。唯一的优势是,使用该函数,你可以传递数据,这些数据会附加在这个标签的后面。例如:</p>
+<code>$string = &quot;&lt;/div&gt;&lt;/div&gt;&quot;;<br />
+<br />
+echo form_fieldset_close($string);<br />
+<br />
+// 会生成:<br />
+&lt;/fieldset&gt;<br />
+&lt;/div&gt;&lt;/div&gt;</code>
+
+<h2>form_checkbox()</h2>
+<p>作用是生成一个复选框。简单范例如下:</p>
+<code>echo form_checkbox('newsletter', 'accept', TRUE);<br />
+<br />
+// 将会生成:<br />
+<br />
+&lt;input type=&quot;checkbox&quot; name=&quot;newsletter&quot; value=&quot;accept&quot; checked=&quot;checked&quot; /&gt;</code>
+<p>第三个参数为 TRUE/FALSE 布尔值,决定复选框是否被默认选中。</p>
+<p>与其它表单辅助函数相似的是,你可以把包含了属性值的数组作为参数传递给本函数:</p>
+
+<code>$data = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'name'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'newsletter',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'id'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'newsletter',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'value'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'accept',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'checked'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> TRUE,<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'style'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; => 'margin:10px',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+echo form_checkbox($data);<br />
+<br />
+// 将会生成:<br /><br />
+&lt;input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" /></code>
+
+<p>与其它函数相似的,如果你希望此标签包含额外的数据,例如JavaScript,你可以将一个字符串作为第四个参数传递过去:</p>
+
+<code>$js = 'onClick="some_function()"';<br />
+<br />
+ echo form_checkbox('newsletter', 'accept', TRUE, $js)</code>
+
+
+<h2>form_radio()</h2>
+<p>此函数与上面的 <dfn>form_checkbox()</dfn> 函数几乎完全相同,唯一的区别是此函数生成的是 "radio" 单选框。</p>
+
+
+<h2>form_submit()</h2>
+
+<p>帮助你生成一个标准的submit按钮。示例如下:</p>
+<code>echo form_submit('mysubmit', 'Submit Post!');<br />
+<br />
+// 会生成:<br />
+<br />
+&lt;input type=&quot;submit&quot; name=&quot;mysubmit&quot; value=&quot;Submit Post!&quot; /&gt;</code>
+<p>与其它函数类似,第一个参数你可以传递一个关联数组来设置你所需要的属性。第三个参数允许你添加一些额外的内容到生成的HTML代码里。</p>
+
+<h2>form_label()</h2>
+<p>帮助你生成一个label.示例如下:</p>
+<code>echo form_label('你的名字是?','username');<br />
+<br />
+// 会生成:
+<br />
+&lt;label for=&quot;username&quot;&gt;你的名字是?&lt;/label&gt;</code>
+<p>与其它函数类似,你可以在第三个参数传入一个关联数组来增加一些额外的属性值。</p>
+<p><code>$attributes = array(<br />
+      'class' =&gt; 'mycustomclass',<br />
+      'style' =&gt; 'color: #000;',<br />
+);<br />
+    echo form_label('你的名字是?', 'username', $attributes);<br />
+        <br />
+// 会生成: <br />
+&lt;label for=&quot;username&quot; class=&quot;mycustomclass&quot; style=&quot;color: #000;&quot;&gt;你的名字是?&lt;/label&gt;</code></p>
+<h2>form_reset()</h2>
+
+<p>作用是生成一个标准的 reset 按钮。此函数用法与 <dfn>form_submit()</dfn> 完全相同。</p>
+
+
+<h2>form_button()</h2>
+
+<p>作用是生成一个标准的按钮。你至少要给出两个参数,它们分别是按钮的名称和内容:</p>
+<code>
+echo form_button('name','content');<br />
+<br />
+// 将会生成<br />
+&lt;button name="name" type="button"&gt;Content&lt;/button&gt;
+</code>
+
+或者你也可以将一个包含有任何你想要的数据的关联数组作为参数传递过去:
+<code>
+$data = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'name' => 'button',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'id' => 'button',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'value' => 'true',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'type' => 'reset',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;'content' => 'Reset'<br />
+);<br />
+<br />
+echo form_button($data);<br />
+<br />
+// 将会生成:<br />
+&lt;button name="button" id="button" value="true" type="reset"&gt;Reset&lt;/button&gt;
+</code>
+
+如果你希望表单包含一些额外的数据,例如JavaScript,你可以将一个字符串作为第三个参数传递过去:
+<code>
+$js = 'onClick="some_function()"';<br /><br />
+echo form_button('mybutton', 'Click Me', $js);
+</code>
+
+
+<h2>form_close()</h2>
+
+<p>作用是生成一个关闭 &lt;/form> 标签。使用此函数的唯一好处是,你可以将这个标签之后要添加的数据也传递过去。例如:</p>
+
+<code>$string = "&lt;/div>&lt;/div>";<br />
+<br />
+echo form_close($string);<br />
+<br />
+// 将会生成:<br />
+<br />
+&lt;/form><br />
+&lt;/div>&lt;/div></code>
+
+
+
+
+
+<h2>form_prep()</h2>
+
+<p>允许你放心地在表单元素中使用HTML字符(例如引号),不必担心破坏表单。考虑一下下面这个范例:</p>
+
+<code>$string = 'Here is a string containing <strong>"quoted"</strong> text.';<br />
+<br />
+&lt;input type="text" name="myform" value="&lt;var&lt;$string&lt;/var&lt;" /></code>
+
+<p>因为上面的字符串中包含了引号,因而导致表单被破坏。form_prep()函数会转换HTML,因此可以放心使用:</p>
+
+<code>&lt;input type="text" name="myform" value="&lt;var&lt;&lt;?php echo form_prep($string); ?&gt;&lt;/var&lt;" /></code>
+
+<p class="important"><strong>说明:</strong> 如果你使用的是表单辅助函数中的任何一个,数据都会自动的进行预处理,所以没有必要调用本函数。只有当你手动创建表单元素时,你才需要本函数。</p>
+
+
+
+<h2>set_value()</h2>
+
+<p>允许你设置 input 或者 textarea 字段的值。你必须在第一个参数中指定字段名称。第二个参数是可选的,允许你给字段设置一个默认值。例如:</p>
+
+<code>&lt;input type="text" name="quantity" value="&lt;?php echo set_value('quantity', '0'); ?&gt;" size="50" /></code>
+
+<p>当上面的表单元素第一次加载时将会显示"0"。</p>
+
+<h2>set_select()</h2>
+
+<p>如果你使用 <dfn>&lt;select></dfn> 下拉菜单,此函数允许你显示选中的菜单项。第一个参数必须包含下拉菜单的名称,第二个参数必须包含每个菜单项的值。第三个参数是可选的,作用是设置菜单项为默认选中状态(使用TRUE/FALSE布尔值)。</p>
+
+<p>范例:</p>
+
+<code>
+&lt;select name="myselect"><br />
+&lt;option value="one" <dfn>&lt;?php echo  set_select('myselect', 'one', TRUE); ?&gt;</dfn> >One&lt;/option><br />
+&lt;option value="two" <dfn>&lt;?php echo  set_select('myselect', 'two'); ?&gt;</dfn> >Two&lt;/option><br />
+&lt;option value="three" <dfn>&lt;?php echo  set_select('myselect', 'three'); ?&gt;</dfn> >Three&lt;/option><br />
+&lt;/select>
+</code>
+
+
+<h2>set_checkbox()</h2>
+
+<p>允许你显示一个处于提交状态的复选框。第一个参数必须包含此复选框的名称,第二个参数必须包含它的值,第三个参数是可选的,作用是设置复选框为默认选中状态(使用TRUE/FALSE布尔值)。例如:</p>
+
+<code>&lt;input type="checkbox" name="mycheck" value="1" <dfn>&lt;?php echo set_checkbox('mycheck', '1'); ?&gt;</dfn> /><br />
+&lt;input type="checkbox" name="mycheck" value="2" <dfn>&lt;?php echo set_checkbox('mycheck', '2'); ?&gt;</dfn> /></code>
+
+
+<h2>set_radio()</h2>
+
+<p>允许你显示那些处于提交状态的单选框。这个函数与前面的 <strong>set_checkbox()</strong> 是相同的。</p>
+
+<code>&lt;input type="radio" name="myradio" value="1" <dfn>&lt;?php echo  set_radio('myradio', '1', TRUE); ?&gt;</dfn> /><br />
+&lt;input type="radio" name="myradio" value="2" <dfn>&lt;?php echo  set_radio('myradio', '2'); ?&gt;</dfn> /></code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+billycui, Fanbin, Hex, IT不倒翁, longjianghu, pw_2012, soaringup, soyota, thankwsx, yinzhili, zehee</div>
+<div id="DocDate">
+最后修改: 2013-03-18 12:55:01</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="file_helper.html">文件辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="html_helper.html">HTML 辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 399 - 0
helpers/html_helper.html

@@ -0,0 +1,399 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>HTML 辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/html_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;HTML 辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>HTML辅助函数</h1>
+
+<p>HTML 辅助函数涵盖了一些用于 HTML 操作的函数。</p>
+
+<ul>
+ <li><a href="#br">br()</a></li>
+ <li><a href="#heading">heading()</a></li>
+ <li><a href="#img">img()</a></li>
+ <li><a href="#link_tag">link_tag()</a></li>
+ <li><a href="#nbs">nbs()</a></li>
+ <li><a href="#ol_and_ul">ol() 和 ul()</a></li>
+ <li><a href="#meta">meta()</a></li>
+ <li><a href="#doctype">doctype()</a></li>
+</ul>
+
+<h2>装载辅助函数</h2>
+
+<p>本辅助函数的装载通过如下代码完成:</p>
+
+<code>$this-&gt;load-&gt;helper('html');</code>
+
+<p>可用的函数如下:</p>
+
+<h2><a name="br"></a>br()</h2>
+<p>生成指定个数的换行标签 (&lt;br />) 。例如:</p>
+<code>echo br(3);</code>
+<p>如上代码将显示: &lt;br />&lt;br />&lt;br /></p>
+
+<h2><a name="heading"></a>heading()</h2>
+<p>帮助你创建 HTML &lt;h1> 标签.  第一个字段用于标记显示内容,第二个字段用于标该标签所用字号。例如:</p>
+<code>echo heading('Welcome!', 3);</code>
+<p>如上代码将显示:  &lt;h3>Welcome!&lt;/h3></p>
+
+<p>Additionally, in order to add attributes to the heading tag such as HTML classes, ids or inline styles, a third parameter is available.</p>
+<code>echo heading('Welcome!', 3, 'class="pink"')</code>
+<p>The above code produces: &lt;h3 class="pink">Welcome!&lt;h3></p>
+
+
+<h2><a name="img"></a>img()</h2>
+<p>帮助你创建 HTML &lt;img /&gt; 标签。  第1个参数包含的是图片文件的路径。 例如:</p>
+<code>echo img('images/picture.jpg');<br />
+// 生成 &lt;img src=&quot;http://site.com/images/picture.jpg&quot; /&gt;</code>
+<p>第2个参数是可选的, 其值为TRUE或者FALSE, 作用是决定该函数生成的图片地址中是否包含由$config['index_page']所设置的起始页面。 一般来说, 当你使用媒体控制器时才使用这个。</p>
+<p><code>echo img('images/picture.jpg', TRUE);<br />
+// 生成 &lt;img src=&quot;http://site.com/index.php/images/picture.jpg&quot; alt=&quot;&quot; /&gt;</code></p>
+<p>此外, 关联数组也能够被作为参数传递到 img() 函数中, 用来实现对所有属性和值的完全控制。如果没指定 alt 属性,则 CodeIgniter 将产生一个空字符串。</p>
+<p><code> $image_properties = array(<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'src' =&gt; 'images/picture.jpg',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'alt' =&gt; 'Me, demonstrating how to eat 4 slices of pizza at one time',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'class' =&gt; 'post_images',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'width' =&gt; '200',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'height' =&gt; '200',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' =&gt; 'That was quite a night',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'rel' =&gt; 'lightbox',<br />
+    );<br />
+    <br />
+    echo img($image_properties);<br />
+    // &lt;img src=&quot;http://site.com/index.php/images/picture.jpg&quot; alt=&quot;Me, demonstrating how to eat 4 slices of pizza at one time&quot; class=&quot;post_images&quot; width=&quot;200&quot; height=&quot;200&quot; title=&quot;That was quite a night&quot; rel=&quot;lightbox&quot; /&gt;</code></p>
+
+<h2><a name="link_tag"></a>link_tag()</h2>
+<p>帮助你创建 HTML &lt;link /> 标签。在链接样式表以及其他内容时非常有用。参数包括 href 以及可选的 rel, type, title, media 以及 index_page。index_page 是一个TRUE/FALSE 值,作用是决定该函数生成的 href 地址中是否包含由 $config['index_page']所设置的起始页面。<code>
+echo link_tag('css/mystyles.css');<br />
+// 生成 &lt;link href=&quot;http://site.com/css/mystyles.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; /&gt;</code></p>
+<p>更多示例:</p>
+
+<code>
+    echo link_tag('favicon.ico', 'shortcut icon', 'image/ico');<br />
+    // &lt;link href=&quot;http://site.com/favicon.ico&quot; rel=&quot;shortcut icon&quot; type=&quot;image/ico&quot; /&gt; 
+    <br />
+    <br />
+    echo link_tag('feed', 'alternate', 'application/rss+xml', 'My RSS Feed');<br />
+    // &lt;link href=&quot;http://site.com/feed&quot; rel=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;My RSS Feed&quot; /&gt; </code>
+<p>此外,关联数组也能够被作为参数传递到 link_tag() 函数中, 用来实现对所有属性和值的完全控制。</p>
+<p><code>
+    $link = array(<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'href' =&gt; 'css/printer.css',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'rel' =&gt; 'stylesheet',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'type' =&gt; 'text/css',<br />
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'media' =&gt; 'print'<br />
+    );<br />
+    <br />
+    echo link_tag($link);<br />
+    // &lt;link href=&quot;http://site.com/css/printer.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;print&quot; /&gt;</code></p>
+    
+<h2><a name="nbs"></a>nbs()</h2>
+<p>生成不换行的指定个数的空格标签(&amp;nbsp;)。例如:</p>
+<code>echo nbs(3);</code>
+<p>如上代码将显示: &amp;nbsp;&amp;nbsp;&amp;nbsp;</p>
+
+<h2><a name="ol_and_ul"></a>ol()&nbsp; 和&nbsp; ul()</h2>
+
+<p>允许你通过简单或多维的数组生成有序或无序的HTML列表。例如:</p>
+
+<code>
+
+$this-&gt;load-&gt;helper('html');<br />
+<br />
+$list = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'red', <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'blue', <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'green',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'yellow'<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$attributes = array(<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'class' => 'boldlist',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id'&nbsp;&nbsp;&nbsp;&nbsp;=> 'mylist'<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+echo ul($list, $attributes);<br />
+</code>
+
+<p>如上代码将显示:</p>
+
+<code>
+&lt;ul&nbsp;class="boldlist"&nbsp;id="mylist"><br />
+
+&nbsp;&nbsp;&lt;li>red&lt;/li><br />
+&nbsp;&nbsp;&lt;li>blue&lt;/li><br />
+&nbsp;&nbsp;&lt;li>green&lt;/li><br />
+&nbsp;&nbsp;&lt;li>yellow&lt;/li><br />
+&lt;/ul>
+</code>
+
+<p>这是一个更复杂的例子,应用了多维数组:</p>
+
+<code>
+$this-&gt;load-&gt;helper('html');<br />
+<br />
+$attributes = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'class' => 'boldlist',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id'&nbsp;&nbsp;&nbsp;&nbsp;=> 'mylist'<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+$list = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'colors' => array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'red',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'blue',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'green'<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'shapes' => array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'round', <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'square',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'circles' => array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'ellipse', <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'oval', <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'sphere'<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'moods'&nbsp;&nbsp;&nbsp;&nbsp;=> array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'happy', <br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'upset' => array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'defeated' => array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'dejected',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'disheartened',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'depressed'<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;),<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'annoyed',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'cross',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'angry'<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+<br />
+echo ul($list, $attributes);</code>
+
+<p>如上代码将显示:</p>
+
+<code>
+&lt;ul&nbsp;class="boldlist"&nbsp;id="mylist"&gt;<br />
+&nbsp;&nbsp;&lt;li&gt;colors<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;red&lt;/li&gt;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;blue&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;green&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
+&nbsp;&nbsp;&lt;/li&gt;<br />
+&nbsp;&nbsp;&lt;li&gt;shapes<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;round&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;suare&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;circles<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;elipse&lt;/li&gt;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;oval&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;sphere&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
+&nbsp;&nbsp;&lt;/li&gt;<br />
+&nbsp;&nbsp;&lt;li&gt;moods<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;happy&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;upset<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;defeated<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ul&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;dejected&lt;/li&gt;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;disheartened&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;depressed&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;annoyed&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;cross&lt;/li&gt;<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;li&gt;angry&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/li&gt;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ul&gt;<br />
+&nbsp;&nbsp;&lt;/li&gt;<br />
+&lt;/ul&gt;
+</code>
+
+
+
+<h2><a name="meta"></a>meta()</h2>
+
+<p>帮助你创建meta标签.  你可以将字符串、简单数组或者多维数组传递给函数. 例如:</p>
+
+<code>
+echo meta('description', 'My Great site');<br />
+// 生成:  &lt;meta name="description" content="My Great Site" /><br />
+<br /><br />
+
+echo meta('Content-type', 'text/html; charset=utf-8', 'equiv'); // 注意第3个参数.,可以是 "equiv" 或者 "name"<br />
+// 生成:  &lt;meta http-equiv="Content-type" content="text/html; charset=utf-8" /><br />
+
+<br /><br />
+
+echo meta(array('name' => 'robots', 'content' => 'no-cache'));<br />
+// 生成:  &lt;meta name="robots" content="no-cache" /><br />
+
+<br /><br />
+
+$meta = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('name' => 'robots', 'content' => 'no-cache'),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('name' => 'description', 'content' => 'My Great Site'),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('name' => 'keywords', 'content' => 'love, passion, intrigue, deception'),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('name' => 'robots', 'content' => 'no-cache'),<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array('name' => 'Content-type', 'content' => 'text/html; charset=utf-8', 'type' => 'equiv')<br />
+&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+echo meta($meta);
+<br />
+// 生成:  <br />
+// &lt;meta name="robots" content="no-cache" /><br />
+// &lt;meta name="description" content="My Great Site" /><br />
+// &lt;meta name="keywords" content="love, passion, intrigue, deception" /><br />
+// &lt;meta name="robots" content="no-cache" /><br />
+// &lt;meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+</code>
+
+
+<h2><a name="doctype"></a>doctype()</h2>
+
+<p>帮助你创建文档类型声明以及DTD。默认值是 XHTML 1.0 Strict ,但你也可以指定其他很多文档类型。</p>
+
+<code>
+echo doctype();<br />
+// &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />
+<br />
+echo doctype('html4-trans');<br />
+// &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
+</code>
+
+<p>下面是支持的文档类型列表。它们都是可灵活配置的,可以在 <samp>application/config/doctypes.php</samp> 中配置。</p>
+
+<table cellpadding="0" cellspacing="1" border="0" style="width:100%" class="tableborder">
+ <tr>
+ <th>文档类型</th>
+ <th>选项</th>
+ <th>结果</th>
+ </tr>
+ <tr>
+ <td class="td">XHTML 1.1</td>
+ <td class="td">doctype('xhtml11')</td>
+ <td class="td">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;</td>
+ </tr>
+ <tr>
+ <td class="td">XHTML 1.0 Strict</td>
+ <td class="td">doctype('xhtml1-strict')</td>
+ <td class="td">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</td>
+ </tr>
+ <tr>
+ <td class="td">XHTML 1.0 Transitional</td>
+ <td class="td">doctype('xhtml1-trans')</td>
+ <td class="td">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</td>
+ </tr>
+ <tr>
+ <td class="td">XHTML 1.0 Frameset</td>
+ <td class="td">doctype('xhtml1-frame')</td>
+ <td class="td">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;</td>
+ </tr>
+ <tr>
+ <td class="td">HTML 5</td>
+ <td class="td">doctype('html5')</td>
+ <td class="td">&lt;!DOCTYPE html&gt;</td>
+ </tr>
+ <tr>
+ <td class="td">HTML 4 Strict</td>
+ <td class="td">doctype('html4-strict')</td>
+ <td class="td">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;</td>
+ </tr>
+ <tr>
+ <td class="td">HTML 4 Transitional</td>
+ <td class="td">doctype('html4-trans')</td>
+ <td class="td">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;</td>
+ </tr>
+ <tr>
+ <td class="td">HTML 4 Frameset</td>
+ <td class="td">doctype('html4-frame')</td>
+ <td class="td">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"&gt;</td>
+ </tr>
+</table><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, szlinz, yinzhili</div>
+<div id="DocDate">
+最后修改: 2012-02-05 23:58:58</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="form_helper.html">表单辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="path_helper.html">路径辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 104 - 0
helpers/inflector_helper.html

@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>Inflector 辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/inflector_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;Inflector 辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Inflector 辅助函数</h1>
+<p>Inflector 辅助函数文件包含允许你把单词更改为复数、单数或骆驼拼写法等形式的函数。</p>
+<h2>装载辅助函数</h2>
+<p>使用以下代码装载辅助函数:</p>
+<p><code>$this-&gt;load-&gt;helper('inflector');</code></p>
+<p>以下函数可用:</p>
+<h2>singular()</h2>
+<p>把一个单词的复数形式更改为单数形式。例如:</p>
+<p><code>$word = &quot;dogs&quot;;<br />
+echo singular($word); // Returns &quot;dog&quot; </code></p>
+<h2>plural()</h2>
+<p>把一个单词的单数形式更改为复数形式。例如:</p>
+<p><code>$word = &quot;dog&quot;;<br />
+echo plural($word); // Returns &quot;dogs&quot; </code></p>
+<p>强制单词以&ldquo;es&rdquo;结尾,则把第二个参数置为&ldquo;true&rdquo;。</p>
+<p><code>$word = &quot;pass&quot;;<br />
+echo plural($word, TRUE); // Returns &quot;passes&quot; </code></p>
+<h2>camelize()</h2>
+<p>把一个以空格或下划线分隔的单词字符串更改为骆驼拼写法。例如:</p>
+<p><code>$word = &quot;my_dog_spot&quot;;<br />
+echo camelize($word); // Returns &quot;myDogSpot&quot; </code></p>
+<h2>underscore()</h2>
+<p>把以空格分隔的多个单词更改为以下划线分隔。例如:</p>
+<p><code>$word = &quot;my dog spot&quot;;<br />
+echo underscore($word); // Returns &quot;my_dog_spot&quot; </code></p>
+<h2>humanize()</h2>
+<p>把以下划线分隔的多个单词更改为以空格分隔,并且每个单词以大写开头。例如:</p>
+<p><code>$word = &quot;my_dog_spot&quot;;<br />
+echo humanize($word); // Returns &quot;My Dog Spot&quot; </code></p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2008-06-28 13:38:13</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="html_helper.html">HTML 辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="number_helper.html">数字辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 94 - 0
helpers/language_helper.html

@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>语言辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/language_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;语言辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>语言辅助函数</h1>
+
+<p>语言辅助函数文件包含一些用于辅助处理语言文件的函数。</p>
+
+
+<h2>加载此辅助函数</h2>
+
+<p>此辅助函数使用如下代码加载:</p>
+
+<code>$this-&gt;load-&gt;helper('language');</code>
+
+<p>下面的函数就可以使用了:</p>
+
+<h2>lang('<var>language line</var>', '<var>element id</var>')</h2>
+
+<p>此函数使用简单的语法从已加载的语言文件中返回一行文本。这种语法在视图文件中可能比调用 <kbd>$this-&gt;lang-&gt;line()</kbd> 更表意。可选的第二个参数还将为你输出一个表单Label。例如:</p>
+
+<code>echo lang('<samp>language_key</samp>', '<samp>form_item_id</samp>');<br />
+// 变成 &lt;label for="form_item_id"&gt;language_key&lt;/label&gt;</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Fanbin, Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-28 14:05:48</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="date_helper.html">日期辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="download_helper.html">下载辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 112 - 0
helpers/number_helper.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>数字辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/number_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;数字辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>数字辅助函数</h1>
+
+<p>数字辅助函数可以协助您处理数字资料</p>
+
+
+<h2>载入数字辅助函数</h2>
+
+<p>使用如下代码来载入路径辅助函数:</p>
+<code>$this-&gt;load-&gt;helper('number');</code>
+
+<p>可用函数:</p>
+
+
+<h2>byte_format()</h2>
+
+<p>将文件大小以字节(bytes)格式化,并添加适合的缩写单位。例如:</p>
+
+<code>
+echo byte_format(456); // Returns 456.0 Bytes<br />
+echo byte_format(4567); // Returns 4.5 KB<br />
+echo byte_format(45678); // Returns 44.6 KB<br />
+echo byte_format(456789); // Returns 447.8 KB<br />
+echo byte_format(3456789); // Returns 3.3 MB<br />
+echo byte_format(12345678912345); // Returns 1.8 GB<br />
+echo byte_format(123456789123456789); // Returns 11,228.3 TB
+</code>
+
+<p>第二个可选的参数允许你设置结果的精确度。</p>
+
+<code>
+echo byte_format(45678, 2); // Returns 44.61 KB
+</code>
+
+<p class="important">
+<strong>提示:</strong>
+这个函数生成的文本(译注:文本单位)可以在下面的语言文件里找到: language/&lt;your_lang>/number_lang.php
+</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, IT不倒翁, sankai, tonera</div>
+<div id="DocDate">
+最后修改: 2011-06-04 18:40:21</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="inflector_helper.html">Inflector 辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="path_helper.html">路径辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 104 - 0
helpers/path_helper.html

@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>路径辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/path_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;路径辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>路径辅助函数</h1>
+
+<p>路径辅助函可以让您使用服务器端的文件路径来工作。</p>
+
+
+<h2>载入辅助函数</h2>
+
+<p>使用如下代码来载入路径辅助函数:</p>
+<code>$this-&gt;load-&gt;helper('path');</code>
+
+<p>可用函数:</p>
+
+
+<h2>set_realpath()</h2>
+
+<p>检查路径是否有效。此函数会返回一个没有符号连接的服务器路径或相对目录结构,函数中的第二个参数为TRUE时,如果程序无法确定指定的路径,则会触发一个错误。</p>
+
+<code>$directory = '/etc/passwd';<br />
+echo set_realpath($directory);<br />
+// returns &quot;/etc/passwd&quot;<br />
+<br />
+$non_existent_directory = '/path/to/nowhere';<br />
+echo set_realpath($non_existent_directory, TRUE);<br />
+// returns an <strong>error</strong>, as the path could not be resolved
+<br /><br />
+echo set_realpath($non_existent_directory, FALSE);<br />
+// returns &quot;/path/to/nowhere&quot;
+</code>
+<h2>&nbsp;</h2><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, shishirui</div>
+<div id="DocDate">
+最后修改: 2009-02-21 18:26:01</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="number_helper.html">数字辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="security_helper.html">安全辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 124 - 0
helpers/security_helper.html

@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>安全辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/security_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;安全辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>安全辅助函数</h1>
+
+<p>这个安全辅助函数文件包含一系列和安全相关的函数。</p>
+
+
+<h2>加载这个辅助函数</h2>
+
+<p>辅助函数可以使用如下代码进行加载:</p>
+
+
+<code>$this-&gt;load-&gt;helper('security');</code>
+
+<p>可以使用下面的函数:</p>
+
+
+<h2>xss_clean()</h2>
+
+<p>这个函数提供了 XSS 过滤,其实它是<a href="../libraries/input.html">输入类</a>的一个别名,关于更多的信息可以到那里去查看。</p>
+
+<h2>sanitize_filename()</h2>
+
+<p>此函数对目录遍历提供保护.  其实它是
+<a href="../libraries/security.html">安全类</a>(下$this-&gt;security-&gt;sanitize_filename() 译者注)的一个别名.  更多信息可以到那里去查看.</p>
+
+<h2>do_hash()</h2>
+
+<p>允许你创建SHA1或者MD5加密. 可以参考如下例子:</p>
+
+<code>
+$str = do_hash($str); // SHA1<br />
+<br />
+$str = do_hash($str, 'md5'); // MD5
+</code>
+
+<p class="important"><strong>注:</strong>  该函数原名为<kbd>dohash()</kbd>, 已弃用。现在改为<kbd>do_hash()</kbd>.</p>
+
+
+<h2>strip_image_tags()</h2>
+
+<p>这个函数可以删除图片的一些不必要字符,目的是让图片的url以文本的形式存在,提高了安全性.</p>
+
+<code>$string = strip_image_tags($string);</code>
+
+
+<h2>encode_php_tags()</h2>
+
+<p>这个函数可以把PHP脚本标签强制转成实体对象. <b>Note:</b> 如果你使用了XSS过滤函数的话,会自动转换.</p>
+
+<code>$string = encode_php_tags($string);</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+felee, Hex, zehee, zhupeng</div>
+<div id="DocDate">
+最后修改: 2013-03-18 13:01:49</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="path_helper.html">路径辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="smiley_helper.html">表情辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 206 - 0
helpers/smiley_helper.html

@@ -0,0 +1,206 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>表情辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/smiley_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;表情辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>表情辅助函数</h1>
+
+<p>这个表情文件包含一系列管理表情的函数.</p>
+
+
+<h2>加载表情辅助函数</h2>
+
+<p>可以使用下面的代码加载此辅助函数:</p>
+
+<code>$this-&gt;load-&gt;helper('smiley');</code>
+
+<h2>总体来看</h2>
+
+<p>这些笑脸表情是用普通的文本来描述的,像 <dfn>:-)</dfn> 然后再将他们转换成真正的表情<img src="../images/smile.gif" width="19" height="19" border="0" alt="smile!"></p>
+
+<p>这里显示了许多表情图片,当你点击图片的时候,它们就会被插入到一个表单区域中.比如,你有一个允许用户评论并且可以插入表情的的博客,你的访问用户可以点击满意的表情图片,然后在javascript脚本的帮助下插入到相应的表单区域.</p>
+
+
+<h2>可点击的表情</h2>
+
+<p>这里有个案例将教给你如何在表单的旁边创建可以点击的各种表情.首先你需要下载并安装表情包,然后再建一个控制器和相应的视图作为描述文件.</p>
+
+<p class="important"><strong>重点提示:</strong>开始之前,请<a href="#">下载表情图片</a>然后把它们放在可以公开访问的服务器上.这个辅助函数采用数组的形式替换各种表情,在目录
+<dfn>application/config/smileys.php</dfn> 中可以查看</p>
+
+
+<h3>控制器</h3>
+
+<p>在你的<dfn>application/controllers/</dfn>目录中创建一个文件命名为<kbd>smileys.php</kbd> 然后加入下面的代码.</p>
+
+<p><strong>重点提示:</strong>修改你的表情url在函数<dfn>get_clickable_smileys()</dfn>的参数中,url指向你的<dfn>smiley</dfn>路径.</p>
+
+<p>可以看到添加表情的时候我们使用的是<a href="../libraries/table.html">Table Class</a>.</p>
+
+<textarea class="textarea" style="width:100%" cols="50" rows="25">
+&lt;?php
+
+class Smileys extends CI_Controller &#123;
+
+ function __construct()
+ &#123;
+  parent::__construct();
+ &#125;
+ 
+ function index()
+ &#123;
+  $this-&gt;load-&gt;helper('smiley');
+  $this-&gt;load-&gt;library('table');
+  
+  $image_array = get_clickable_smileys('http://localhost/images/smileys/', 'comments');
+
+  $col_array = $this-&gt;table-&gt;make_columns($image_array, 8);  
+   
+  $data['smiley_table'] = $this-&gt;table-&gt;generate($col_array);
+  
+  $this-&gt;load-&gt;view('smiley_view', $data);
+ &#125;
+ 
+&#125;
+?&gt;
+</textarea>
+
+<p>在你的<dfn>application/views/</dfn>文件夹下,创建一个名字为<kbd>smiley_view.php</kbd>的文件,然后加入下面的代码:</p>
+
+
+<textarea class="textarea" style="width:100%" cols="50" rows="20">
+&lt;html>
+&lt;head>
+&lt;title>Smileys&lt;/title>
+
+&lt;?php echo smiley_js(); ?&gt;
+
+&lt;/head>
+&lt;body>
+
+&lt;form name="blog">
+&lt;textarea name="comments" id="comments" cols="40" rows="4">&lt;/textarea>
+&lt;/form>
+
+&lt;p>Click to insert a smiley!&lt;/p>
+
+&lt;?php echo $smiley_table; ?&gt;
+
+&lt;/body>
+&lt;/html>
+</textarea>
+
+
+<p>当你创建完控制器和视图之后,就可以显示你的表情了 <dfn>http://localhost/index.php/smileys/</dfn></p>
+
+
+<h3>字段别名</h3>
+
+<p>当修改视图的时候,会牵扯到控制器中的id字段,带来不便。为了解决这一问题,你可以在视图中给表情一个别名,并将其映射到id字段。</p>
+<code>$image_array = get_smiley_links("http://localhost/images/smileys/", "comment_textarea_alias");</code>
+
+<p>将别名映射到id字段, 传递他们两个到smiley_js函数:</p>
+<code>$image_array = smiley_js("comment_textarea_alias", "comments");</code>
+
+
+<h1>函数参考</h1>
+
+
+<h2>get_clickable_smileys()</h2>
+
+<p>返回一个已经绑定了可点击表情的数组。你必须提供表情文件夹的 URL,还有表单域的 ID 或者表单域的别名。</p>
+
+<code>$image_array = get_smiley_links("http://localhost/images/smileys/", "comment");</code>
+<p class="important">Note: Usage of this function without the second parameter, in combination with js_insert_smiley has been deprecated.</p>
+
+
+<h2>smiley_js()</h2>
+
+<p>生成的 JavaScript 可以让图片点击后插入到表单域中。如果你在生成表情链接的时候提供了一个别名来代替id,你需要在函数中传入别名和相应的form id,
+此函数被设计为应放在你web页面的&lt;head&gt;区域</p>
+
+<code>&lt;?php echo smiley_js(); ?&gt;</code>
+<p class="important">Note: This function replaces js_insert_smiley, which has been deprecated.</p>
+
+
+<h2>parse_smileys()</h2>
+
+<p>输入一个文本字符串,用来替换任何已经被包含的空白文本表情,而两者是等效的.第一个参数必须包含你的字符串,第二个参数是你的表情的存放目录:</p>
+
+<code>
+$str = 'Here are some simileys: :-)  ;-)';<br />
+<br />
+$str = parse_smileys($str, "http://localhost/images/smileys/");<br />
+<br />
+echo $str;
+</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+felee, Hex, icebird, keeweihan, zehee, zhupeng</div>
+<div id="DocDate">
+最后修改: 2014-06-10 13:50:32</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="security_helper.html">安全辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="string_helper.html">字符串辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 186 - 0
helpers/string_helper.html

@@ -0,0 +1,186 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>字符串辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/string_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;字符串辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>字符串辅助函数</h1>
+
+<p>该字符串辅助函数为你提供对字符串类型的各种函数。</p>
+
+
+<h2>装载字符串辅助函数</h2>
+
+<p>采用如下方式装载该辅助函数:</p>
+<code>$this-&gt;load-&gt;helper('string');</code>
+
+<p>可用函数如下:</p>
+
+<h2>random_string()</h2>
+
+<p>根据你所指定的类型和长度产生一个随机字符串。可用于生成密码串或随机字串。</p>
+
+<p>第一个参数指定字符串类型,第二个参数指定其长度。以下为可选字符串类型:</p>
+
+ alpha, alunum, numeric, nozero, unique, md5, encrypt 和 sha1
+<ul>
+<li><strong>alpha</strong>:&nbsp; 含有大小写字母</li>
+<li><strong>alnum</strong>:&nbsp; 含有大小写字母以及数字。</li>
+<li><strong>numeric</strong>:&nbsp; 数字字符串。</li>
+<li><strong>nozero</strong>:&nbsp; 不含零的数字字符串。</li>
+<li><strong>unique</strong>:&nbsp; 用 MD5 和 uniqid()加密的字符串。注意:第二个长度参数在这种类型无效。均返回一个32位长度的字符串。</li>
+<li><strong>sha1</strong>:&nbsp; 使用<a href="security_helper.html">安全辅助函数</a>中的<kbd>do_hash()</kbd>生成的随机数加密值。</li>
+</ul>
+
+<p>范例:</p>
+
+<code>echo random_string('alnum', 16);</code>
+
+
+<h2>increment_string()</h2>
+
+<p>通过附加一个可以增加的数生成一个字符串。Increments a string by appending a number to it or increasing the number. Useful for creating "copies" or a file or duplicating database content which has unique titles or slugs.</p>
+
+<p>范例:</p>
+
+<code>echo increment_string('file', '_'); // "file_1"<br/>
+echo increment_string('file', '-', 2); // "file-2"<br/>
+echo increment_string('file-4'); // "file-5"<br/></code>
+
+
+<h2>alternator()</h2>
+
+<p>当执行一个循环时,让两个或两个以上的条目轮换使用。范例:</p>
+
+<code>for ($i = 0; $i < 10; $i++)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo alternator('string one', 'string two');<br />
+&#125;<br />
+</code>
+
+<p>你可以任意添加条目的数量,每一次循环后下一个条目将成为返回值。</p>
+
+<code>for ($i = 0; $i < 10; $i++)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;echo alternator('one', 'two', 'three', 'four', 'five');<br />
+&#125;<br />
+</code>
+
+<p><strong>注意:</strong>为了让多次调用该函数简单方便,调用该函数时请不要带上实参进行重预置。</p>
+
+
+
+<h2>repeater()</h2>
+<p>重复生成你所提交的数据。范例:</p>
+<code>$string = "\n";<br />
+echo repeater($string, 30);</code>
+
+<p>上面的例子将会产生30个空行。</p>
+<h2>reduce_double_slashes()</h2>
+<p>将字符串中的双斜线(//)转换为单斜线(/),但不转换形如(http://)的双斜线。范例:</p>
+<code>$string = &quot;http://example.com//index.php&quot;;<br />
+echo reduce_double_slashes($string); // results in &quot;http://example.com/index.php&quot;</code>
+<h2>trim_slashes()</h2>
+<p>去掉任何出现在字符串开头或结尾的斜线。范例:<br />
+    <br />
+    <code>$string = &quot;/this/that/theother/&quot;;<br />
+echo trim_slashes($string); // results in this/that/theother</code></p>
+
+
+<h2>reduce_multiples()</h2>
+<p>去掉多余的一个紧接着一个重复出现的特殊字符。范例:</p>
+<code>
+$string="Fred, Bill,, Joe, Jimmy";<br />
+$string=reduce_multiples($string,","); //results in "Fred, Bill, Joe, Jimmy"
+</code>
+<p>该函数可以接受如下的形参:
+<code>reduce_multiples(string: text to search in, string: character to reduce, boolean: whether to remove the character from the front and end of the string)</code>
+
+第一个形参用于传送你所要去掉重复的字符串。第二个形参用于传送你所要去掉的字符。第三个形参默认为 False。如果为True将会去掉出现在字符串开头或结尾的字符(即使字符不重复也去掉)。范例:
+
+<code>
+$string=",Fred, Bill,, Joe, Jimmy,";<br />
+$string=reduce_multiples($string, ", ", TRUE); //results in "Fred, Bill, Joe, Jimmy"
+</code>
+</p> 
+
+<h2>quotes_to_entities()</h2>
+<p>将字符串中的单引号和双引号转换为相应的 HTML 字符表示。范例:</p>
+<code>$string="Joe's \"dinner\"";<br />
+$string=quotes_to_entities($string); //results in "Joe&amp;#39;s &amp;quot;dinner&amp;quot;"
+</code>
+
+<h2>strip_quotes()</h2>
+<p>去掉字符串中的单引号和双引号。范例:</p>
+<code>$string="Joe's \"dinner\"";<br />
+$string=strip_quotes($string); //results in "Joes dinner"
+</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, kkorange, popcorner</div>
+<div id="DocDate">
+最后修改: 2014-06-05 11:29:39</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="smiley_helper.html">表情辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="text_helper.html">文本辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 203 - 0
helpers/text_helper.html

@@ -0,0 +1,203 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>文本辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/text_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;文本辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>文本辅助函数</h1>
+
+<p>文本辅助函数所包含的函数只能对文本进行处理。</p>
+
+
+<h2>装载文本辅助函数</h2>
+
+<p>采用如下方式装载该辅助函数:</p>
+
+<code>$this-&gt;load-&gt;helper('text');</code>
+
+<p>可用函数如下:</p>
+
+
+<h2>word_limiter()</h2>
+
+<p>根据指定的<strong>词语</strong>(由于是英语,对中文应该是以空格为判断标准,译者注)数目对一段字符串进行截取。范例:</p>
+
+<code>
+
+$string = "Here is a nice text string consisting of eleven words.";<br />
+<br />
+$string = word_limiter($string, 4);<br /><br />
+
+// Returns:  Here is a nice&#8230;
+</code>
+
+<p>第三个参数是一个可选的符号后缀,默认在截取段后加上省略号(…)。</p>
+
+
+<h2>character_limiter()</h2>
+
+<p>根据指定的<strong>字符</strong>数目对一段字符串进行截取。它将会保证单词的完整性(对英语单词而言,译者注),因此可能会造成截取后的字符数目与指定的有一点出入。范例:</p>
+
+<code>
+$string = "Here is a nice text string consisting of eleven words.";<br />
+<br />
+$string = character_limiter($string, 20);<br /><br />
+
+// Returns:  Here is a nice text string&#8230;
+</code>
+
+<p>第三个参数是一个可选的符号后缀,默认在截取段后加上省略号(…)。</p>
+
+
+
+<h2>ascii_to_entities()</h2>
+
+<p>将ASCII码转换为字符实体,包括那些在网页中使用时可能导致问题的高位ASCII码和微软Word字符,因此它们能够被正确地显示出来,不受浏览器设置或者数据库可靠存储的影响。本函数部分依赖于你的服务器对字符集的支持,因此并不是在任何情况下都100%的可靠,但在大多数情况下都可以正确地识别正常范围以外的字符(比如重音符号)。例如:</p>
+
+<code>$string = ascii_to_entities($string);</code>
+
+
+<h2>entities_to_ascii()</h2>
+
+<p>这个函数与ascii_to_entities()功能相反; 它将字符转变为ASC码.</p>
+
+<h2>convert_accented_characters()</h2>
+
+<p>Transliterates high ASCII characters to low ASCII equivalents, useful when non-English characters need to be used where only standard ASCII characters are safely used, for instance, in URLs.</p>
+
+<code>$string = convert_accented_characters($string);</code>
+
+<p>This function uses a companion config file <dfn>application/config/foreign_chars.php</dfn> to define the to and from array for transliteration.</p>
+
+<h2>word_censor()</h2>
+
+<p>让你可以对文本中的文字进行审核替换。第一个形参用于获取原始字符串。第二个形参用于存放你不允许的文字的数组。第三个形参(可选)用于存放一个替换不允许文字的字段。如果不指定则被替换为“磅”的表示符号:####。范例:</p>
+
+<code>
+$disallowed = array('darn', 'shucks', 'golly', 'phooey');<br />
+<br />
+$string = word_censor($string, $disallowed, 'Beep!');</code>
+
+
+<h2>highlight_code()</h2>
+
+<p>对一段代码(PHP,HTML等)进行着色。例如:</p>
+
+<code>$string = highlight_code($string);</code>
+
+<p>本函数使用PHP的 highlight_string() 函数,因此所使用的颜色是你在 php.ini 文件中指定的那些。</p>
+
+
+<h2>highlight_phrase()</h2>
+
+<p>对字符串内的一个短语进行突出显示。第一个参数是原始字符串,第二个参数是你想要突出显示的短语。如果要用HTML标签对短语进行标记,那么第三个和第四个参数分别是你想要对短语使用的HTML打开和关闭标签。例如:</p>
+
+<code>
+$string = "Here is a nice text string about nothing in particular.";<br />
+<br />
+$string = highlight_phrase($string, "nice text", '&lt;span style="color:#990000">', '&lt;/span>');
+</code>
+
+<p>以上内容将返回:</p>
+
+<p>Here is a <span style="color:#990000">nice text</span> string about nothing in particular.</p>
+
+
+
+<h2>word_wrap()</h2>
+
+<p>根据指定的<strong>字符</strong>数目对文本进行换行操作,并且保持词语的完整性(对英语单词而言,笔者注)。范例:</p>
+
+<code>$string = "Here is a simple string of text that will help us demonstrate this function.";<br />
+<br />
+echo word_wrap($string, 25);<br />
+
+<br />
+// Would produce:<br />
+<br />
+Here is a simple string<br />
+of text that will help<br />
+us demonstrate this<br />
+function</code>
+
+<h2>ellipsize()</h2>
+
+<p>过滤字符串中的标签,在指定的最大长度处切割字符串,并插入一个省略号。</p>
+<p>第一个参数是要被省略处理的字符串,第二个参数是目标字符串中字符的数目。第三个参数是省略号在目标字符串的位置,值为0 - 1,从左到右。例如,值为1时,省略号位于目标字符串的右端,值为.5时,位于中间,而值为0时位于左端。</p>
+<p>第四个参数是可选的,用于指明使用的省略符号类型,默认使用 <samp>&hellip;</samp> 。</p>
+
+<code>$str = 'this_string_is_entirely_too_long_and_might_break_my_design.jpg';<br />
+<br />
+echo ellipsize($str, 32, .5);</code>
+
+输出:
+<code>this_string_is_e&hellip;ak_my_design.jpg</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, hk_yuhe, kkorange, kntism, yinzhili</div>
+<div id="DocDate">
+最后修改: 2011-03-08 00:56:17</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="string_helper.html">字符串辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="typography_helper.html">排版辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 107 - 0
helpers/typography_helper.html

@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>排版辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/typography_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;排版辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>排版辅助函数</h1>
+
+<p>这个排版辅助函数文件里的函数能够让你按照相关词性对文本的格局进行排版。</p>
+
+<h2>载入这个辅助函数</h2>
+
+<p>请使用如下代码载入这个辅助函数:</p>
+
+<code>$this-&gt;load-&gt;helper('typography');</code>
+
+<p>以下函数可以使用:</p>
+
+
+<h2>auto_typography()</h2>
+
+<p>格式化文本,使其在语义和排版上是正确的HTML。更多信息请参考 <a href="../libraries/typography.html">排版类</a> 。</p>
+
+<p>例子:</p>
+
+<code>$string = auto_typography($string);</code>
+
+<p><strong>注意:</strong> 排版格式可能会增加处理器的负荷,特别是当你有大量的内容需要被处理时。
+如果选择使用这个函数的话,你可能需要考虑<a href="../general/caching.html">缓存</a>你的页面。</p>
+
+
+<h2>nl2br_except_pre()</h2>
+
+<p>如果换行不在标记符 &lt;pre&gt; 里的话,都会被转换成 &lt;br /&gt; 标记符。这个函数除了会忽略标记符&lt;pre&gt; 以外,和PHP自带函数<dfn>nl2br()</dfn>是相等的。</p>
+
+<p>例子:</p>
+
+<code>$string = nl2br_except_pre($string);</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+aykirk, Hex, hk_yuhe</div>
+<div id="DocDate">
+最后修改: 2011-03-08 20:47:55</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="text_helper.html">文本辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="url_helper.html">URL 辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 296 - 0
helpers/url_helper.html

@@ -0,0 +1,296 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>URL 辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/url_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;URL 辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>URL 辅助函数</h1>
+
+<p>URL 辅助函数文件包含一些在处理 URL 中很有用的函数</p>
+
+
+<h2>加载辅助函数</h2>
+
+<p>本辅助函数通过如下代码加载:</p>
+
+<code>$this-&gt;load-&gt;helper('url');</code>
+
+<p>可用函数如下:</p>
+
+<h2>site_url()</h2>
+
+<p>返回站点的URL, 如果在<dfn>config.php</dfn> 文件中指定了<dfn>base_url</dfn>会返回指定的值,否则自动获取。 当你将URI段作为参数传给这个函数时,index.php 文件名 &#40;或者是你在config中自定义的 <dfn>index_page</dfn> 文件名&#41; 会被加到URL后面, 而且会加上你在config中定义的 <dfn>url_suffix</dfn> 后缀。</p>
+
+<p>无论什么时候需要生成 URL ,都鼓励您使用该函数, 这样当您的根 URL 改变的时候更具有可移植性。[注:根 URL 指 config.php 中指定的 base_url 和 <dfn>index_page</dfn>--IT不倒翁]</p>
+
+<p>做为参数传递给该函数的 URI 段可以是一个字符串,也可以是一个数组. 下面是一个字符串的例子:</p>
+
+<code>echo site_url("news/local/123");</code>
+
+<p>上面的例子将返回: http://example.com/index.php/news/local/123</p>
+
+<p><kbd>注意:</kbd>如果config中开启了<kbd>enable_query_strings</kbd>,则连接符由/改为?,上面的url会返回这样:</p>
+<p>http://example.com/index.php<kbd>?</kbd>news/local/123</p>
+<p>所以这里要注意,如果你开启了get传值的话,请注意这里的变化。</p>
+
+<p>这是一个以数组形式传递 URI 段的例子:</p>
+
+<code>
+$segments = array('news', 'local', '123');<br />
+<br />
+
+echo site_url($segments);</code>
+
+
+<h2>base_url()</h2>
+<p>返回在 config.php 中设定的 base_url. 例:</p>
+<code>echo base_url();</code>
+
+<p>这个函数和site_url返回相同,只是 <dfn>index_page</dfn> 和 <dfn>url_suffix</dfn> 不再被追加。</p>
+
+<p>和site_url函数一样, 做为参数传递给该函数的 URI 段可以是一个字符串,也可以是一个数组. 下面是一个字符串的例子:</p>
+
+<code>echo base_url("blog/post/123");</code>
+
+<p>上面的例子将返回: http://example.com/blog/post/123</p>
+
+<p>这个函数非常有用,不像site_url()那样,你可以用它指定文件的路径,像是image路径或者css路径,例如: </p>
+
+<code>echo base_url("images/icons/edit.png");</code>
+
+<p>上面的例子将输出像这样的结果: http://example.com/images/icons/edit.png</p>
+
+
+<h2>current_url()</h2>
+<p>返回当前正在查看的页面的完整URL(包括段)。</p>
+
+
+<h2>uri_string()</h2>
+<p>返回任何包含了此函数的页面的URI段。比如说,要是你的URL是这样的:</p>
+<code>http://some-site.com/blog/comments/123</code>
+
+<p>此函数将会返回:</p>
+<code>/blog/comments/123</code>
+
+<p>注:我测试的结果:</p>
+<code>blog/comments/123</code>
+
+<h2>index_page()</h2>
+<p>返回在 config.php 中设定的 index_page. 例:</p>
+<code>echo index_page();</code>
+
+
+
+<h2>anchor()</h2>
+
+<p>创建基于你的本地站点URL的标准链接地址:【原翻译为锚链接,不妥。该函数实际上是用来快速生成&lt;a>标签链接用的-zehee】</p>
+
+<code>&lt;a href="http://example.com">Click Here&lt;/a>           //echo anchor('','Click Here','');</code>
+
+<p>它有三个可选参数:</p>
+
+<code>anchor(<var>uri segments</var>, <var>text</var>, <var>attributes</var>)</code>
+
+<p>第一个参数包含你想附加到URL的任何段.像上面的<dfn>site_url()</dfn> 函数一样,段可以是字符串或数组.</p>
+
+<p><strong>注意:</strong>&nbsp; 如果你创建在应用程序内部的链接没有包含基本URL(http://...),这个参数会从你配置文件信息中自动加载。只需要写上你的 URL 分段即可。</p>
+
+<p>第二个参数是你想给链接的内容(&lt;a>标签中间的内容).如果让它为空,将会由URL替代.</p>
+
+<p>第三个参数包含一组你想附加给链接的属性.这些属性可以是简单的字符串或相关的数组.</p>
+
+<p>这里有一些例子:</p>
+
+<code>echo anchor('news/local/123', 'My News', 'title="News title"');</code>
+
+<p>输出(链接名字'My News'): &lt;a href="http://example.com/index.php/news/local/123" title="News title">My News&lt;/a></p>
+
+<code>echo anchor('news/local/123', 'My News', array('title' => 'The best news!'));</code>
+
+<p>输出(鼠标放在上面会有'The best news!'提示): <a href="#" title="The best news!">My News</a></p>
+
+
+<h2>anchor_popup()</h2>
+
+<p>几乎和<dfn>anchor()</dfn> 函数相同,区别是它会在新窗口打开链接.
+
+你可以在第三个参数中指定JavaScript窗口属性来控制窗口的打开方式. 如果第三个参数没有设置,它会直接根据你的浏览器设置打开新窗口.这是一个属性设置的例子:</p>
+
+<code>
+
+$atts = array(<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'width'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> '800',<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'height'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> '600',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'scrollbars' => 'yes',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'status'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=> 'yes',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'resizable'&nbsp;&nbsp;=> 'yes',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'screenx'&nbsp;&nbsp;&nbsp;&nbsp;=> '0',<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'screeny'&nbsp;&nbsp;&nbsp;&nbsp;=> '0'<br />
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
+<br />
+echo anchor_popup('news/local/123', 'Click Me!', $atts);</code>
+
+<p>注意: 以上是函数默认设置,你只要根据自己需要设置不同.如果你想函数使用默认设置,直接传一个空数组给第三个参数就行了:</p>
+
+<code>echo anchor_popup('news/local/123', 'Click Me!', array());</code>
+
+
+<h2>mailto()</h2>
+
+<p>创建标准HTML电子邮件链接.习惯用例:</p>
+
+<code>echo mailto('me@my-site.com', 'Click Here to Contact Me');</code>
+
+<p>像上面的<dfn>anchor()</dfn> 一样, 你可以用第三个参数设置属性.</p>
+
+
+<h2>safe_mailto()</h2>
+
+<p>用法和上面的函数相同,区别是它用JavaScript写了基于顺序号码的不易识别的mailto版本标签,可以阻止email地址被垃圾邮件截获.</p>
+
+<h2>auto_link()</h2>
+
+<p>自动把包含URL和email地址的字串转换成链接. 例如:</p>
+
+<code>$string = auto_link($string);</code>
+
+<p>第二个参数决定URL和email是否都转换或其中一个转换.如果参数没有指定默认是两个都转换.Email links are encoded as safe_mailto() as shown above.</p>
+
+<p>只转换URL:</p>
+<code>$string = auto_link($string, 'url');</code>
+
+<p>只转换Email地址:</p>
+<code>$string = auto_link($string, 'email');</code>
+
+<p>第三个参数决定链接是否都在新窗口打开.参数值可以是TRUE 或 FALSE(boolean):</p>
+<code>$string = auto_link($string, 'both', TRUE);</code>
+
+
+<h2>url_title()</h2>
+<p>输入一个字符串并且创建用户友好的URL字串.举个例子,你有一个blog,而且你想在URL中使用条目的标题,这个函数就有用了.例如: </p>
+
+<code>$title = "What's wrong with CSS?";<br />
+<br />
+$url_title = url_title($title);<br />
+<br />
+// 输出:  Whats-wrong-with-CSS
+</code>
+
+
+<p>第2个参数指定单词之间的分隔符. 默认使用破折号'-'.</p>
+
+<code>$title = "What's wrong with CSS?";<br />
+<br />
+$url_title = url_title($title, '_');<br />
+<br />
+// 输出:  Whats_wrong_with_CSS
+</code>
+
+<p>第3个参数决定了是否强制转换为小写.默认情况下不会.参数类型为布尔值
+<dfn>TRUE</dfn>/<dfn>FALSE</dfn>:</p>
+
+<code>$title = "What's wrong with CSS?";<br />
+<br />
+$url_title = url_title($title, '_', TRUE);<br />
+<br />
+// Produces:  whats_wrong_with_css
+</code>
+
+<h2>prep_url()</h2>
+<p>在URL中没有<kbd>http://</kbd>的情况下,这个函数可以附加上.像这样把URL字串传递给函数:</p>
+<code>
+$url = "example.com";<br /><br />
+$url = prep_url($url);</code>
+
+
+
+
+<h2>redirect()</h2>
+
+<p>通过发送HTTP头,命令客户端转向到您指定的URL。您既可以指定一个完整的URL,也可以对于站内内容,指定基于网站根目录的相对URL。本函数会自动根据您的配置文件,构造出完整的URL。</p>
+
+<p>你可以设定第二个参数为 location 定位操作(默认)或者 refresh 刷新操作。定位操作比刷新操作执行速度快,但是在Windows服务器上有时会报错。可选的第3个参数允许你发送一个特定的HTTP请求返回码 - 举例来说这可以用来创建303请求重定向来服务于搜索引擎. 默认的请求返回码是302(临时重定向). 第3个参数<em>只</em>使用于'location'重定向, 而不是用于'refresh'. 范例:</p>
+
+<code>
+    //注意!!一定不要忘了加载 $this-&gt;load-&gt;helper('url');<br/>
+    <br/>if ($logged_in == FALSE)<br />
+&#123;<br />
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirect('/login/form/', 'refresh');<br />
+&#125;<br />
+<br />
+// with 301 redirect<br />
+redirect('/article/13', 'location', 301);</code>
+
+<p class="important"><strong>注意:</strong>由于此函数需要处理header头文件,因此它必须在向客户端输出任何内容之前调用。<br />
+<strong>注意:</strong>如果您想对HTTP头做更细致的设置,您可以使用<a href="../libraries/output.html">输出类</a>的 set_header() 函数。</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Deloz, dren_a, Hex, IT不倒翁, kkorange, linfj, LSvKing, mp5baby, mynameisjian, nardo, shamiao, tinsn, yeto, yinzhili, zehee, 大漠沙尘, 杜建宇</div>
+<div id="DocDate">
+最后修改: 2014-05-19 12:49:00</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="typography_helper.html">排版辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="xml_helper.html">XML 辅助函数</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 96 - 0
helpers/xml_helper.html

@@ -0,0 +1,96 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>XML 辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/helpers/xml_helper.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;XML 辅助函数    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>XML 辅助函数</h1>
+<p>xml助手函数文件包含了一些辅助处理xml数据的函数</p>
+
+<h2>加载该辅助函数</h2>
+
+<p>本辅助函数通过如下代码加载:</p>
+
+<code>$this-&gt;load-&gt;helper('xml');</code>
+
+<p>可用函数如下:</p>
+
+
+<h2>xml_convert('<var>string</var>')</h2>
+<p>以一个字符串(string)作为输入并且转换下列xml保留字符成为实体(entities):</p>
+<p>连字号: &<br />
+小于和大于号: < > <br />
+单引号和双引号: '  "<br />
+破折号: -</p>
+
+<p>该函数将忽略 & 如果他们是存在的字符实体的一部分。例如:</p>
+<code>$string = xml_convert($string);</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+baiyuxiong, fdasf, Hex, weide, zhupeng</div>
+<div id="DocDate">
+最后修改: 2010-01-04 13:32:41</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="url_helper.html">URL 辅助函数</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

BIN
images/appflowchart.gif


BIN
images/ci_logo_flame.jpg


BIN
images/ci_quick_ref.png


BIN
images/codeigniter_1.7.1_helper_reference.pdf


BIN
images/codeigniter_1.7.1_helper_reference.png


BIN
images/codeigniter_1.7.1_library_reference.pdf


BIN
images/codeigniter_1.7.1_library_reference.png


BIN
images/nav_toggle_darker.jpg


BIN
images/reactor-bullet.png


BIN
images/smile.gif


BIN
images/timezone_menu.gif


BIN
images/user_guide/arrow.gif


BIN
images/user_guide/nav_bg_darker.jpg


BIN
images/user_guide/nav_separator_darker.jpg


BIN
images/user_guide/reactor-bullet.png


+ 93 - 0
index.html

@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>CodeIgniter 用户指南 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/index.html" />
+<script type="text/javascript" src="nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('null');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+CodeIgniter 用户指南    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><div class="center"><img src="images/ci_logo_flame.jpg" width="150" height="164" border="0" alt="CodeIgniter" /></div><!-- START CONTENT -->
+<div id="content">
+<h2>欢迎使用 CodeIgniter</h2>
+
+<p>CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。它提供一套丰富的标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目开发。使用 CodeIgniter 可以减少代码的编写量,并将你的精力投入到项目的创造性开发上。</p>
+
+<h2>CodeIgniter 是为谁准备的?</h2>
+
+<p>CodeIgniter 就是你所需要的,如果...</p>
+<ul>
+    <li>你想要一个小巧的框架。</li>
+    <li>你需要出色的性能。</li>
+    <li>你需要广泛兼容标准主机上的各种 PHP 版本和配置。</li>
+    <li>你想要一个几乎只需 0 配置的框架。</li>
+    <li>你想要一个不需使用命令行的框架。</li>
+    <li>你想要一个不需坚守限制性编码规则的框架。</li>
+    <li>你不希望被迫学习一门模板语言(虽然可以选择你喜欢的模板解析器)。</li>
+    <li>你不喜欢复杂,热爱简单。</li>
+    <li>你需要清晰、完整的文档。</li>
+</ul><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2012-02-06 01:20:20</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+<a href="#top">页首</a>
+  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 119 - 0
installation/downloads.html

@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>下载 CodeIgniter - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/downloads.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;下载 CodeIgniter    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>下载 CodeIgniter</h1>
+
+<ul>
+  <li><a href="#">CodeIgniter V 2.2.0 (最新版本)</a></li>
+  <li><a href="#">CodeIgniter V 2.1.4</a></li>
+  <li><a href="#">CodeIgniter V 2.1.3</a></li>
+  <li><a href="#">CodeIgniter V 2.1.2</a></li>
+  <li><a href="#">CodeIgniter V 2.1.1</a></li>
+  <li><a href="#">CodeIgniter V 2.1.0</a></li>
+  <li><a href="#">CodeIgniter V 2.0.3</a></li>
+  <li><a href="#">CodeIgniter V 2.0.2</a></li>
+  <li><a href="#">CodeIgniter V 2.0.1</a></li>
+  <li><a href="#">CodeIgniter V 2.0.0</a></li>
+  <li><a href="#">CodeIgniter V 1.7.3</a></li>
+  <li><a href="#">CodeIgniter V 1.7.2</a></li>
+  <li><a href="#">CodeIgniter V 1.7.1</a></li>
+  <li><a href="#">CodeIgniter V 1.7.0</a></li>
+  <li><a href="#">CodeIgniter V 1.6.3</a></li>
+  <li><a href="#">CodeIgniter V 1.6.2</a></li>
+  <li><a href="#">CodeIgniter V 1.6.1</a></li>
+  <li><a href="#">CodeIgniter V 1.6.0</a></li>
+  <li><a href="#">CodeIgniter V 1.5.4</a></li>
+  <li><a href="#">CodeIgniter V 1.5.3</a></li>
+  <li><a href="#">CodeIgniter V 1.5.2</a></li>
+  <li><a href="#">CodeIgniter V 1.5.1</a></li>
+  <li><a href="#">CodeIgniter V 1.4.1</a></li>
+  <li><a href="#">CodeIgniter V 1.3.3</a></li>
+  <li><a href="#">CodeIgniter V 1.3.2</a></li>
+  <li><a href="#">CodeIgniter V 1.3.1</a></li>
+  <li><a href="#">CodeIgniter V 1.3</a></li>
+  <li><a href="#">CodeIgniter V 1.2</a></li>
+  <li><a href="#">CodeIgniter V 1.1</a></li>
+  <li><a href="#">CodeIgniter V 1.0</a></li>
+</ul>
+
+
+<h1 id="git">Git 服务器</h1>
+<p><a href="#">Git</a> is a distributed version control system.</p>
+
+<p>Public Git access is available at <a href="#">GitHub</a>.
+ Please note that while every effort is made to keep this code base functional, we cannot guarantee the functionality of code taken
+ from the tip.</p>
+
+<p>Beginning with version 2.0.3, stable tags are also available via GitHub, simply select the version from the Tags dropdown.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex, IT不倒翁, thestar</div>
+<div id="DocDate">
+最后修改: 2014-06-10 13:53:57</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="../general/credits.html">关于 CodeIgniter</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="index.html">安装指导</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 100 - 0
installation/index.html

@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>安装指导 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/index.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;安装指导    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>安装指导</h1>
+
+<p>CodeIgniter 安装分为四个步骤:</p>
+
+<ol>
+<li>解压缩安装包。</li>
+<li>把 CodeIgniter 文件夹和里面的文件上传到你的服务器。通常 index.php 在根目录。</li>
+<li>用任何文本编辑器打开 <dfn>application/config/config.php</dfn> 去设置你的网站根 URL。如果你打算使用加密或 Session,请设置你的加密密钥。</li>
+<li>如果你打算使用数据库,用任何文本编辑器打开 <dfn>application/config/database.php</dfn> 去设置你的数据库参数。</li>
+</ol>
+
+<p>如果你希望通过隐藏 CodeIgniter 文件的位置来增加安全性,你可以修改 <dfn>system</dfn> 和 <dfn>application</dfn> 目录的名字,把它改成任何你喜欢的名字。如果已经修改了名字,你必须打开主目录下面的 <kbd>index.php</kbd> 文件设置里面的 <samp>$system_path</samp> 和 <samp>$application_folder</samp> 变量,把它设成刚刚修改的新名字。</p>
+
+<p>为了安全考虑,<dfn>system</dfn>和<dfn>application</dfn>两个文件夹应放到网站根目录(Web Root)以外的地方,这样浏览器就不能够直接访问它们。在默认设置下, 在每个文件夹中都有一个 .htaccess 配置文件以拒绝直接访问, 但是当把代码部署到生产环境时最好移除他们,因为生产环境的 Web 服务可能会不支持 .htaccess 的配置。</p>
+
+<p>如果你移动了以上两个文件夹,请打开主目录下的<kdb>index.php</kdb>文件并编辑<samp>$system_path</samp>和<samp>$application_folder</samp>两个变量, 最好使用绝对路径进行替换, 例如:'<dfn>/www/MyUser/system</dfn>'.</p>
+
+<p>另外有一个附加的考虑就是,如果要在生产环境中使用,最好关闭PHP的错误报告以及其他任何与开发时有关的功能,
+在CodeIgniter中,可以设置 <kbd>ENVIRONMENT</kbd> 常量来实现这个功能。详细的文档请参阅 <a href="../general/security.html">安全</a> 章节。</p>
+
+<p>以上就是全部安装过程!</p>
+
+<p>如果你刚刚接触 CodeIgniter,请阅读用户指南的<a href="../overview/getting_started.html">开始</a>部分,开始学习如何构造动态的 PHP 应用。让我们享受这个过程吧!</p>
+
+<p>如果下载CodeIgniter之后,对于其中的英文注释看不明白,推荐您到<a href="#">CodeIgniter中国社区</a>学习一下,很多朋友都从那里学到了许多知识,相信您会得到的更多!</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+1294822, djc6914, greenlee, Hex, hutushen222, localtest, lp_ci, lw1001, thestar, 拉风的牛仔</div>
+<div id="DocDate">
+最后修改: 2014-06-05 10:27:02</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="../general/credits.html">关于 CodeIgniter</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="upgrading.html">从老版本升级</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 84 - 0
installation/troubleshooting.html

@@ -0,0 +1,84 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>疑难解答 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/troubleshooting.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;疑难解答    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>疑难解答</h1>
+
+<p>如果你发现不管你在 URL 里面写什么都只是出现缺省页面的话,有可能是你的服务器不支持 PATH_INFO 变量,它被用来提供搜索引擎友好的 URL。解决这个问题的第一步是打开 <dfn>application/config/config.php</dfn> 文件,查找 <kbd>URI Protocol</kbd> 信息。在那里推荐你去尝试一些其他的设置方法。如果这些方法都无效,你就需要让 CodeIgniter 去强行加一个问号去标记你的 URL。为了做到这点,打开你的 <kbd>application/config/config.php</kbd> 文件把里面的:</p>
+
+<code>$config['index_page'] = "index.php";</code>
+
+<p>修改成这样:</p>
+
+<code>$config['index_page'] = "index.php?";</code><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-21 23:10:43</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="upgrading.html">从老版本升级</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="../overview/at_a_glance.html">CodeIgniter 是什么?</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 93 - 0
installation/upgrade_120.html

@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>从 1.1 升级到 1.2 最终版 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/upgrade_120.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;从 1.1 升级到 1.2 最终版    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Upgrading From Beta 1.1 to Final 1.2</h1>
+
+<p>To upgrade to Version 1.2 please replace the following directories with the new versions:</p>
+
+<p class="important"><strong>Note:</strong> If you have any custom developed files in these folders please make copies of them first.</p>
+
+<ul>
+<li>drivers</li>
+
+<li>helpers</li>
+<li>init</li>
+<li>language</li>
+<li>libraries</li>
+<li>plugins</li>
+<li>scaffolding</li>
+</ul>
+
+<p>Please also replace your local copy of the user guide with the new version.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-21 23:13:51</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="index.html">安装指导</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="troubleshooting.html">疑难解答</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 206 - 0
installation/upgrade_130.html

@@ -0,0 +1,206 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>从 1.2 升级到 1.3 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/upgrade_130.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;从 1.2 升级到 1.3    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Upgrading from 1.2 to 1.3</h1>
+
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.2.  If you
+have not upgraded to that version please do so first.</p>
+
+
+<p>Before performing an update you should take your site offline by replacing the index.php file
+with a static one.</p>
+
+
+<h2>Step 1: Update your CodeIgniter files</h2>
+
+<p>Replace the following directories in your "system" folder with the new versions:</p>
+
+<p class="important"><strong>Note:</strong> If you have any custom developed files in these folders please make copies of them first.</p>
+
+<ul>
+<li>application/<strong>models</strong>/&nbsp;&nbsp;  (new for 1.3)</li>
+
+<li>codeigniter&nbsp;&nbsp;   (new for 1.3)</li>
+<li>drivers</li>
+<li>helpers</li>
+<li>init</li>
+<li>language</li>
+<li>libraries</li>
+<li>plugins</li>
+<li>scaffolding</li>
+
+</ul>
+
+
+<h2>Step 2: Update your error files</h2>
+
+<p>Version 1.3 contains two new error templates located in <dfn>application/errors</dfn>, and for naming consistency the other error templates have
+been renamed.</p>
+
+<p>If you <strong>have not</strong> customized any of the error templates simply
+replace this folder:</p>
+
+<ul>
+<li>application/errors/</li>
+</ul>
+
+<p>If you <strong>have</strong> customized your error templates, rename them as follows:</p>
+
+
+<ul>
+<li>404.php&nbsp;&nbsp; =&nbsp; error_404.php</li>
+
+<li>error.php&nbsp;&nbsp; =&nbsp; error_general.php</li>
+<li>error_db.php&nbsp;&nbsp; (new)</li>
+<li>error_php.php&nbsp;&nbsp; (new)</li>
+</ul>
+
+
+<h2>Step 3: Update your index.php file</h2>
+
+<p>Please open your main <dfn>index.php</dfn> file &#40;located at your root&#41;.  At the very bottom of the file, change this:</p>
+
+<code>require_once BASEPATH.'libraries/Front_controller'.EXT;</code>
+
+<p>To this:</p>
+
+<code>require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;</code>
+
+
+<h2>Step 4: Update your config.php file</h2>
+
+<p>Open your <dfn>application/config/config.php</dfn> file and add these new items:</p>
+
+<pre>
+/*
+|------------------------------------------------
+| URL suffix
+|------------------------------------------------
+|
+| This option allows you to add a suffix to all URLs.
+| For example, if a URL is this:
+|
+| example.com/index.php/products/view/shoes
+|
+| You can optionally add a suffix, like ".html",
+| making the page appear to be of a certain type:
+|
+| example.com/index.php/products/view/shoes.html
+|
+*/
+$config['url_suffix'] = "";
+
+
+/*
+|------------------------------------------------
+| Enable Query Strings
+|------------------------------------------------
+|
+| By default CodeIgniter uses search-engine and
+| human-friendly segment based URLs:
+|
+| example.com/who/what/where/
+|
+| You can optionally enable standard query string
+| based URLs:
+|
+| example.com?who=me&what;=something&where;=here
+|
+| Options are: TRUE or FALSE (boolean)
+|
+| The two other items let you set the query string "words"
+| that will invoke your controllers and functions:
+| example.com/index.php?c=controller&m;=function
+|
+*/
+$config['enable_query_strings'] = FALSE;
+$config['controller_trigger'] = 'c';
+$config['function_trigger'] = 'm';
+</pre>
+
+
+<h2>Step 5: Update your database.php file</h2>
+
+<p>Open your <dfn>application/config/database.php</dfn> file and add these new items:</p>
+
+<pre>
+$db['default']['dbprefix'] = "";
+$db['default']['active_r'] = TRUE;
+</pre>
+
+
+<h2>Step 6: Update your user guide</h2>
+
+<p>Please also replace your local copy of the user guide with the new version.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-21 23:15:17</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="index.html">安装指导</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="troubleshooting.html">疑难解答</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 103 - 0
installation/upgrade_131.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>从 1.3 升级到 1.3.1 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/upgrade_131.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;从 1.3 升级到 1.3.1    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Upgrading from 1.3 to 1.3.1</h1>
+
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.  If you
+have not upgraded to that version please do so first.</p>
+
+<p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
+
+
+
+<h2>Step 1: Update your CodeIgniter files</h2>
+
+<p>Replace the following directories in your "system" folder with the new versions:</p>
+
+<p class="important"><strong>Note:</strong> If you have any custom developed files in these folders please make copies of them first.</p>
+
+<ul>
+<li>drivers</li>
+<li>init/init_unit_test.php (new for 1.3.1)</li>
+<li>language/</li>
+
+<li>libraries</li>
+<li>scaffolding</li>
+</ul>
+
+
+<h2>Step 2: Update your user guide</h2>
+
+<p>Please also replace your local copy of the user guide with the new version.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-21 23:16:05</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="index.html">安装指导</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="troubleshooting.html">疑难解答</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 101 - 0
installation/upgrade_132.html

@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>从 1.3.1 升级到 1.3.2 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/upgrade_132.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;从 1.3.1 升级到 1.3.2    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Upgrading from 1.3.1 to 1.3.2</h1>
+
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.1.  If you
+have not upgraded to that version please do so first.</p>
+
+<p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
+
+
+
+<h2>Step 1: Update your CodeIgniter files</h2>
+
+<p>Replace the following directories in your "system" folder with the new versions:</p>
+
+<p class="important"><strong>Note:</strong> If you have any custom developed files in these folders please make copies of them first.</p>
+
+<ul>
+<li>drivers</li>
+<li>init</li>
+<li>libraries</li>
+
+</ul>
+
+
+<h2>Step 2: Update your user guide</h2>
+
+<p>Please also replace your local copy of the user guide with the new version.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-21 23:16:37</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="index.html">安装指导</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="troubleshooting.html">疑难解答</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 113 - 0
installation/upgrade_133.html

@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>从 1.3.2 升级到 1.3.3 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/upgrade_133.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;从 1.3.2 升级到 1.3.3    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Upgrading from 1.3.2 to 1.3.3</h1>
+
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.2.  If you
+have not upgraded to that version please do so first.</p>
+
+<p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
+
+
+
+<h2>Step 1: Update your CodeIgniter files</h2>
+
+<p>Replace the following directories in your "system" folder with the new versions:</p>
+
+<p class="important"><strong>Note:</strong> If you have any custom developed files in these folders please make copies of them first.</p>
+
+<ul>
+<li>codeigniter</li>
+<li>drivers</li>
+<li>helpers</li>
+
+<li>init</li>
+<li>libraries</li>
+</ul>
+
+
+<h2>Step 2: Update your Models</h2>
+
+<p>If you are <strong>NOT</strong> using CodeIgniter's <a href="../general/models.html">Models</a> feature disregard this step.</p>
+
+<p>As of version 1.3.3, CodeIgniter does <strong>not</strong> connect automatically to your database when a model is loaded.  This
+allows you greater flexibility in determining which databases you would like used with your models.  If your application is not connecting
+to your database prior to a model being loaded you will have to update your code.  There are several options for connecting,
+<a href="../general/models.html">as described here</a>.</p>
+
+
+<h2>Step 3: Update your user guide</h2>
+
+<p>Please also replace your local copy of the user guide with the new version.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-21 23:17:07</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="index.html">安装指导</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="troubleshooting.html">疑难解答</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 146 - 0
installation/upgrade_140.html

@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>从 1.3.3 升级到 1.4.0 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/upgrade_140.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;从 1.3.3 升级到 1.4.0    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Upgrading from 1.3.3 to 1.4.0</h1>
+
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.3.3.  If you
+have not upgraded to that version please do so first.</p>
+
+<p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
+
+
+
+<h2>Step 1: Update your CodeIgniter files</h2>
+
+<p>Replace the following directories in your "system" folder with the new versions:</p>
+
+<p class="important"><strong>Note:</strong> If you have any custom developed files in these folders please make copies of them first.</p>
+
+<ul>
+<li>application/config/<strong>hooks.php</strong></li>
+<li>application/config/<strong>mimes.php</strong></li>
+
+<li>codeigniter</li>
+<li>drivers</li>
+<li>helpers</li>
+<li>init</li>
+<li>language</li>
+<li>libraries</li>
+<li>scaffolding</li>
+</ul>
+
+
+<h2>Step 2: Update your config.php file</h2>
+
+<p>Open your <dfn>application/config/config.php</dfn> file and add these new items:</p>
+
+<pre>
+
+/*
+|--------------------------------------------------------------------------
+| Enable/Disable System Hooks
+|--------------------------------------------------------------------------
+|
+| If you would like to use the "hooks" feature you must enable it by
+| setting this variable to TRUE (boolean).  See the user guide for details.
+|
+*/
+$config['enable_hooks'] = FALSE;
+
+
+/*
+|--------------------------------------------------------------------------
+| Allowed URL Characters
+|--------------------------------------------------------------------------
+|
+| This lets you specify which characters are permitted within your URLs.
+| When someone tries to submit a URL with disallowed characters they will
+| get a warning message.
+|
+| As a security measure you are STRONGLY encouraged to restrict URLs to
+| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
+|
+| Leave blank to allow all characters -- but only if you are insane.
+|
+| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
+|
+*/
+$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';
+</pre>
+
+
+<h2>Step 3: Update your user guide</h2>
+
+<p>Please also replace your local copy of the user guide with the new version.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-21 23:17:37</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="index.html">安装指导</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="troubleshooting.html">疑难解答</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

+ 151 - 0
installation/upgrade_141.html

@@ -0,0 +1,151 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0" />
+<title>从 1.4.0 升级到 1.4.1 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档</title>
+<link rel="shortcut icon" href="http://codeigniter.org.cn/user_guide/../images/design/favicon.ico" type="image/x-icon" />
+<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
+<link rel="search" href="http://codeigniter.org.cn/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
+<link rel="canonical" href="http://codeigniter.org.cn/user_guide/installation/upgrade_141.html" />
+<script type="text/javascript" src="../nav/mootools.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/mootools-more.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/nav.js-ver=20130324.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js-ver=20130324.js"></script>
+<meta name="robots" content="all" />
+<meta name="author" content="ExpressionEngine Dev Team" />
+<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
+</head>
+<body>
+<!-- START NAVIGATION -->
+<div id="nav">
+  <div id="nav_inner">
+    <script type="text/javascript">create_menu('../');</script>
+  </div>
+</div>
+<script type="text/javascript">_setNavigation();</script>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" /></a></div>
+<div id="masthead" class="clearfix">
+    <div class="topbar-hd"><h1>CodeIgniter 用户指南 版本 2.2.0</h1></div>
+<div class="topbar-tip">编辑文档、查看近期更改请 <a href="#">登录</a> 或 <a href="#">注册</a>  <a href="#">找回密码</a></div>      <div id="breadcrumb_right"><a href="../toc.html">目录页</a></div>
+</div>
+<!-- END NAVIGATION -->
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+  <tr>
+    <td id="breadcrumb">
+        <a href="#" target="_blank">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
+<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;<a href="index.html">安装</a>&nbsp;&#8250;&nbsp;从 1.4.0 升级到 1.4.1    </td>
+    <td id="searchbox">
+        <form method="get" action="http://www.google.com.hk/search" target="google_window">
+        <input type="hidden" name="client" value="pub-0176846097796333"></input>
+        <input type="hidden" name="forid" value="1"></input>
+        <input type="hidden" name="ie" value="UTF-8"></input>
+        <input type="hidden" name="oe" value="UTF-8"></input>
+        <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
+        搜索用户指南&nbsp;
+        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
+        &nbsp;
+        <input type="submit" class="submit" name="sa" value="Go" />
+      </form>
+    </td>
+  </tr>
+</table>
+<!-- END BREADCRUMB -->
+<div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
+<a href="#" target="_blank">查看原文</a>
+</div>
+<!--<br clear="all" />--><!-- START CONTENT -->
+<div id="content">
+<h1>Upgrading from 1.4.0 to 1.4.1</h1>
+
+<p class="important"><strong>Note:</strong> The instructions on this page assume you are running version 1.4.0.  If you
+have not upgraded to that version please do so first.</p>
+
+<p>Before performing an update you should take your site offline by replacing the index.php file with a static one.</p>
+
+
+
+<h2>Step 1: Update your CodeIgniter files</h2>
+
+<p>Replace the following directories in your "system" folder with the new versions:</p>
+
+<p class="important"><strong>Note:</strong> If you have any custom developed files in these folders please make copies of them first.</p>
+
+<ul>
+<li>codeigniter</li>
+<li>drivers</li>
+<li>helpers</li>
+
+<li>libraries</li>
+</ul>
+
+
+<h2>Step 2: Update your config.php file</h2>
+
+<p>Open your <dfn>application/config/config.php</dfn> file and add this new item:</p>
+
+<pre>
+
+/*
+|--------------------------------------------------------------------------
+| Output Compression
+|--------------------------------------------------------------------------
+|
+| Enables Gzip output compression for faster page loads.  When enabled,
+| the output class will test whether your server supports Gzip.
+| Even if it does, however, not all browsers support compression
+| so enable only if you are reasonably sure your visitors can handle it.
+|
+| VERY IMPORTANT:  If you are getting a blank page when compression is enabled it
+| means you are prematurely outputting something to your browser. It could
+| even be a line of whitespace at the end of one of your scripts.  For
+| compression to work, nothing can be sent before the output buffer is called
+| by the output class.  Do not "echo" any values with compression enabled.
+|
+*/
+$config['compress_output'] = FALSE;
+
+
+</pre>
+
+
+
+<h2>Step 3: Rename an Autoload Item</h2>
+
+<p>Open the following file: <dfn>application/config/autoload.php</dfn></p>
+
+<p>Find this array item:</p>
+
+<code>$autoload['core'] = array();</code>
+
+<p>And rename it to this:</p>
+
+<code>$autoload['libraries'] = array();</code>
+
+<p>This change was made to improve clarity since some users were not sure that their own libraries could be auto-loaded.</p>
+
+
+
+
+
+
+<h2>Step 4: Update your user guide</h2>
+
+<p>Please also replace your local copy of the user guide with the new version.</p><p>&nbsp;</p>
+<div id="Contributors">
+翻译贡献者:
+Hex</div>
+<div id="DocDate">
+最后修改: 2009-02-21 23:18:04</div>
+</div>
+<!-- END CONTENT -->
+<div id="footer">
+  <p>
+上一个主题:&nbsp;&nbsp;<a href="index.html">安装指导</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;<a href="#top">页首</a>
+&nbsp;&middot;&nbsp;&nbsp;<a href="../index.html">用户指南首页</a>&nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;<a href="troubleshooting.html">疑难解答</a>  </p>
+  <p><a href="#">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2013 &nbsp;&middot;&nbsp; <a href="#">Ellislab, Inc.</a></p>
+  <p>中文化: <a href="#">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.30 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼</p>
+</div>
+</body>
+</html>

Some files were not shown because too many files changed in this diff