My CodeIgniter / chrome / content / user_guide / helpers / captcha_helper.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="" xml:lang="utf-8" lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CAPTCHA 辅助函数 - CodeIgniter 中文手册</title>
<link rel="stylesheet" type="text/css" media="all" href="../userguide.css" />
<link rel="search" href="" type="application/opensearchdescription+xml" title="CodeIgniter 搜索"/>
<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>
<meta name="robots" content="all" />
<meta name="author" content="ExpressionEngine Dev Team" />
<meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
<div id="nav">
  <div id="nav_inner">
    <script type="text/javascript">create_menu('../');</script>
<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">
  <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
      <td><h1>CodeIgniter 用户指南 版本 2.0.0</h1></td>
      <td id="breadcrumb_right"><a href="../toc.html">目录页</a></td>
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
    <td id="breadcrumb">
		<a href="">CodeIgniter 中国首页</a>&nbsp;&#8250;&nbsp;
<a href="../index.html">用户指南首页</a>&nbsp;&#8250;&nbsp;CAPTCHA 辅助函数	</td>
    <td id="searchbox">
		<form method="get" action="" 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="" />
        <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
        <input type="submit" class="submit" name="sa" value="Go" />
<!--<br clear="all" />-->
<div id="content">
<h1>CAPTCHA Helper</h1>






<p>Takes an array of information to generate the CAPTCHA as input and creates the image to your specifications, returning an array of associative data about the image.</p>

<code>[array]<br />
(<br />
&nbsp;&nbsp;'image' => IMAGE TAG<br />

&nbsp;&nbsp;'time'  => TIMESTAMP (in microtime)<br />
&nbsp;&nbsp;'word'  => CAPTCHA WORD<br />

  <p>The "image" is the actual image tag:
<code>&lt;img src=&quot;; width=&quot;140&quot; height=&quot;50&quot; /&gt;</code></p>

  <p>The "time" is the micro timestamp used as the image name without the file
  extension.  It will be a number like this:  1139612155.3422</p>

  <p>The "word" is the word that appears in the captcha image, which if not
  supplied to the function, will be a random string.</p>


  <p>Once loaded you can generate a captcha like this:</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'   => '',<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>

    <li>只有 img_path 和 img_url 参数是必须的.</li>
    <li>If a "word" is not supplied, the function will generate a random
    ASCII string.  You might put together your own word library that
    you can draw randomly from.</li>

    <li>If you do not specify a path to a TRUE TYPE font, the native ugly GD
    font will be used.</li>
    <li> "captcha" 目录必须可写(666, or 777)</li>
    <li>The "expiration" (in seconds) signifies how long an image will
    remain in the captcha folder before it will be deleted.  The default
    is two hours.</li>

  <h3>Adding a Database</h3>



<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 />

  <p>Here is an example of usage with a database.  On the page where the CAPTCHA will be shown you'll have something like this:</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;;<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;Submit the word you see below:&#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>Then, on the page that accepts the submission you'll have something like this:</p>

<code>// First, delete old captchas<br />
$expiration = time()-7200; // Two hour limit<br />
$this-&gt;db-&gt;query(&quot;DELETE FROM captcha WHERE captcha_time &lt; &quot;.$expiration);  <br />
<br />

// Then see if a captcha exists:<br />
$sql = &quot;SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND date &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;You must submit the word that appears in the image&quot;;<br />
<div id="Contributors">
Hex, LSvKing, 杜建宇</div>
<div id="DocDate">最后修改: 2011-02-10 16:45:30</div>
<!-- END CONTENT -->
<div id="footer">
上一个主题:&nbsp;&nbsp;<a href="../helpers/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="" target="_blank">CodeIgniter</a> &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2011 &nbsp;&middot;&nbsp; <a href="" target="_blank">Ellislab, Inc.</a></p>
  <p>中文化: <a href="" target="_blank">CodeIgniter 中国</a> &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 生成日期: 2011-03-26 11:52</p>