You've already forked codeigniter_test2
							
							
		
			
	
	
		
			196 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			196 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
|   | <!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="en" lang="en"> | ||
|  | <head> | ||
|  | 
 | ||
|  | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
|  | <title>CAPTCHA Helper : CodeIgniter User Guide</title> | ||
|  | 
 | ||
|  | <style type='text/css' media='all'>@import url('../userguide.css');</style> | ||
|  | <link rel='stylesheet' type='text/css' media='all' href='../userguide.css' /> | ||
|  | 
 | ||
|  | <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 http-equiv='expires' content='-1' /> | ||
|  | <meta http-equiv= 'pragma' content='no-cache' /> | ||
|  | <meta name='robots' content='all' /> | ||
|  | <meta name='author' content='ExpressionEngine Dev Team' /> | ||
|  | <meta name='description' content='CodeIgniter User Guide' /> | ||
|  | 
 | ||
|  | </head> | ||
|  | <body> | ||
|  | 
 | ||
|  | <!-- START NAVIGATION --> | ||
|  | <div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div> | ||
|  | <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="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div> | ||
|  | <div id="masthead"> | ||
|  | <table cellpadding="0" cellspacing="0" border="0" style="width:100%"> | ||
|  | <tr> | ||
|  | <td><h1>CodeIgniter User Guide Version 2.1.3</h1></td> | ||
|  | <td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td> | ||
|  | </tr> | ||
|  | </table> | ||
|  | </div> | ||
|  | <!-- END NAVIGATION --> | ||
|  | 
 | ||
|  | 
 | ||
|  | <!-- START BREADCRUMB --> | ||
|  | <table cellpadding="0" cellspacing="0" border="0" style="width:100%"> | ||
|  | <tr> | ||
|  | <td id="breadcrumb"> | ||
|  | <a href="http://codeigniter.com/">CodeIgniter Home</a>  ›  | ||
|  | <a href="../index.html">User Guide Home</a>  ›  | ||
|  | CAPTCHA Helper | ||
|  | </td> | ||
|  | <td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide  <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" /></form></td> | ||
|  | </tr> | ||
|  | </table> | ||
|  | <!-- END BREADCRUMB --> | ||
|  | 
 | ||
|  | <br clear="all" /> | ||
|  | 
 | ||
|  | 
 | ||
|  | <!-- START CONTENT --> | ||
|  | <div id="content"> | ||
|  | 
 | ||
|  | 
 | ||
|  | <h1>CAPTCHA Helper</h1> | ||
|  | 
 | ||
|  | <p>The CAPTCHA Helper file contains functions that assist in creating CAPTCHA images.</p> | ||
|  | 
 | ||
|  | 
 | ||
|  | <h2>Loading this Helper</h2> | ||
|  | 
 | ||
|  | <p>This helper is loaded using the following code:</p> | ||
|  | <code>$this->load->helper('captcha');</code> | ||
|  | 
 | ||
|  | <p>The following functions are available:</p> | ||
|  | 
 | ||
|  | <h2>create_captcha(<var>$data</var>)</h2> | ||
|  | 
 | ||
|  | <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 /> | ||
|  |   'image' => IMAGE TAG<br /> | ||
|  |   'time'	=> TIMESTAMP (in microtime)<br /> | ||
|  |   'word'	=> CAPTCHA WORD<br /> | ||
|  | )</code> | ||
|  | 
 | ||
|  | 	<p>The "image" is the actual image tag: | ||
|  | <code><img src="http://example.com/captcha/12345.jpg" width="140" height="50" /></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> | ||
|  | 
 | ||
|  | 	<h3>Using the CAPTCHA helper</h3> | ||
|  | 
 | ||
|  | 	<p>Once loaded you can generate a captcha like this:</p> | ||
|  | 
 | ||
|  | <code>$vals = array(<br /> | ||
|  |     'word'		 => 'Random word',<br /> | ||
|  |     'img_path'	 => './captcha/',<br /> | ||
|  |     'img_url'	 => 'http://example.com/captcha/',<br /> | ||
|  |     'font_path'	 => './path/to/fonts/texb.ttf',<br /> | ||
|  |     'img_width'	 => '150',<br /> | ||
|  |     'img_height' => 30,<br /> | ||
|  |     'expiration' => 7200<br /> | ||
|  |     );<br /> | ||
|  | <br /> | ||
|  | $cap = create_captcha($vals);<br /> | ||
|  | echo $cap['image'];</code> | ||
|  | 
 | ||
|  | 	<ul> | ||
|  | 		<li>The captcha function requires the GD image library.</li> | ||
|  | 		<li>Only the img_path and img_url are required.</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>The "captcha" folder must be writable (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> | ||
|  | 	</ul> | ||
|  | 
 | ||
|  | 	<h3>Adding a Database</h3> | ||
|  | 
 | ||
|  | 	<p>In order for the captcha function to prevent someone from submitting, you will need | ||
|  | 	to add the information returned from <kbd>create_captcha()</kbd> function to your database. | ||
|  | 	Then, when the data from the form is submitted by the user you will need to verify | ||
|  | 	that the data exists in the database and has not expired.</p> | ||
|  | 
 | ||
|  | 	<p>Here is a table prototype:</p> | ||
|  | 
 | ||
|  | <code>CREATE TABLE captcha (<br /> | ||
|  |  captcha_id bigint(13) unsigned NOT NULL auto_increment,<br /> | ||
|  |  captcha_time int(10) unsigned NOT NULL,<br /> | ||
|  |  ip_address varchar(16) default '0' NOT NULL,<br /> | ||
|  |  word varchar(20) NOT NULL,<br /> | ||
|  |  PRIMARY KEY `captcha_id` (`captcha_id`),<br /> | ||
|  |  KEY `word` (`word`)<br /> | ||
|  | );</code> | ||
|  | 
 | ||
|  | 	<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->load->helper('captcha');<br /> | ||
|  | $vals = array(<br /> | ||
|  |     'img_path'	 => './captcha/',<br /> | ||
|  |     'img_url'	 => 'http://example.com/captcha/'<br /> | ||
|  |     );<br /> | ||
|  | <br /> | ||
|  | $cap = create_captcha($vals);<br /> | ||
|  | <br /> | ||
|  | $data = array(<br /> | ||
|  |     'captcha_time'	=> $cap['time'],<br /> | ||
|  |     'ip_address'	=> $this->input->ip_address(),<br /> | ||
|  |     'word'			=> $cap['word']<br /> | ||
|  |     );<br /> | ||
|  | <br /> | ||
|  | $query = $this->db->insert_string('captcha', $data);<br /> | ||
|  | $this->db->query($query);<br /> | ||
|  | <br /> | ||
|  | echo 'Submit the word you see below:';<br /> | ||
|  | echo $cap['image'];<br /> | ||
|  | echo '<input type="text" name="captcha" value="" />';</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->db->query("DELETE FROM captcha WHERE captcha_time < ".$expiration);	<br /> | ||
|  | <br /> | ||
|  | // Then see if a captcha exists:<br /> | ||
|  | $sql = "SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?";<br /> | ||
|  | $binds = array($_POST['captcha'], $this->input->ip_address(), $expiration);<br /> | ||
|  | $query = $this->db->query($sql, $binds);<br /> | ||
|  | $row = $query->row();<br /> | ||
|  | <br /> | ||
|  | if ($row->count == 0)<br /> | ||
|  | {<br /> | ||
|  |     echo "You must submit the word that appears in the image";<br /> | ||
|  | }</code> | ||
|  | 
 | ||
|  | </div> | ||
|  | <!-- END CONTENT --> | ||
|  | 
 | ||
|  | 
 | ||
|  | <div id="footer"> | ||
|  | <p> | ||
|  | Previous Topic:  <a href="array_helper.html">Array Helper</a> | ||
|  |    ·   | ||
|  | <a href="#top">Top of Page</a>   ·   | ||
|  | <a href="../index.html">User Guide Home</a>   ·   | ||
|  | Next Topic:  <a href="cookie_helper.html">Cookie Helper</a></p> | ||
|  | <p><a href="http://codeigniter.com">CodeIgniter</a>  ·  Copyright © 2006 - 2012  ·  <a href="http://ellislab.com/">EllisLab, Inc.</a></p> | ||
|  | </div> | ||
|  | 
 | ||
|  | </body> | ||
|  | </html> |