diff options
-rw-r--r-- | system/helpers/path_helper.php | 70 | ||||
-rw-r--r-- | user_guide/changelog.html | 1 | ||||
-rw-r--r-- | user_guide/helpers/html_helper.html | 3 | ||||
-rw-r--r-- | user_guide/helpers/path_helper.html | 102 | ||||
-rw-r--r-- | user_guide/helpers/security_helper.html | 5 |
5 files changed, 176 insertions, 5 deletions
diff --git a/system/helpers/path_helper.php b/system/helpers/path_helper.php new file mode 100644 index 000000000..30d26d6ee --- /dev/null +++ b/system/helpers/path_helper.php @@ -0,0 +1,70 @@ +<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * CodeIgniter
+ *
+ * An open source application development framework for PHP 4.3.2 or newer
+ *
+ * @package CodeIgniter
+ * @author ExpressionEngine Dev Team
+ * @copyright Copyright (c) 2006, EllisLab, Inc.
+ * @license http://codeigniter.com/user_guide/license.html
+ * @link http://codeigniter.com
+ * @since Version 1.0
+ * @filesource
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * CodeIgniter Path Helpers
+ *
+ * @package CodeIgniter
+ * @subpackage Helpers
+ * @category Helpers
+ * @author ExpressionEngine Dev Team
+ * @link http://codeigniter.com/user_guide/helpers/xml_helper.html
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * Set Realpath
+ *
+ * @access public
+ * @param string
+ * @param bool checks to see if the path exists
+ * @return string
+ */
+if (! function_exists('set_realpath'))
+{
+ function set_realpath($path, $check_existance = TRUE)
+ {
+ // Security check to make sure the path is NOT a URL. No remote file inclusion!
+ if (preg_match("#^(http:\/\/|https:\/\/|www\.|ftp|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#i", $path))
+ {
+ show_error('The path you submitted must be a local server path, not a URL');
+ }
+
+ // Resolve the path
+ if (function_exists('realpath') AND @realpath($path) !== FALSE)
+ {
+ $path = realpath($path).'/';
+ }
+
+ // Add a trailing slash
+ $path = preg_replace("#([^/])/*$#", "\\1/", $path);
+
+ // Make sure the path exists
+ if ($check_existance == TRUE)
+ {
+ if ( ! is_dir($path))
+ {
+ show_error('Not a valid path: '.$path);
+ }
+ }
+
+ return $path;
+ }
+}
+
+?>
\ No newline at end of file diff --git a/user_guide/changelog.html b/user_guide/changelog.html index bf31475f5..48e2a031a 100644 --- a/user_guide/changelog.html +++ b/user_guide/changelog.html @@ -77,6 +77,7 @@ Change Log <ul>
<li>Modified xss_clean() 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>
</ul>
</li>
</ul>
diff --git a/user_guide/helpers/html_helper.html b/user_guide/helpers/html_helper.html index 1936cd1f7..e3558f7ce 100644 --- a/user_guide/helpers/html_helper.html +++ b/user_guide/helpers/html_helper.html @@ -256,8 +256,7 @@ Previous Topic: <a href="form_helper.html">Form Helper</a> ·
<a href="#top">Top of Page</a> ·
<a href="../index.html">User Guide Home</a> ·
-Next Topic: <a href="inflector_helper.html"> Inflector Helper</a>
-</p>
+Next Topic: <a href="path_helper.html"> Path Helper</a></p>
<p><a href="http://codeigniter.com">CodeIgniter</a> · Copyright © 2007 · <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>
diff --git a/user_guide/helpers/path_helper.html b/user_guide/helpers/path_helper.html new file mode 100644 index 000000000..cc8042597 --- /dev/null +++ b/user_guide/helpers/path_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="en" lang="en">
+<head>
+
+<title>CodeIgniter User Guide : Inflector Helper</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="Content-Type" content="text/html; charset=utf-8" />
+<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.jpg" width="153" height="44" 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 1.6.1</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> ›
+Path 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>Path Helper</h1>
+
+<p>The Path Helper file contains functions that permits you to work with file paths on the server.</p>
+
+
+<h2>Loading this Helper</h2>
+
+<p>This helper is loaded using the following code:</p>
+<code>$this->load->helper('path');</code>
+
+<p>The following functions are available:</p>
+
+
+<h2>set_realpath()</h2>
+
+<p>Checks to see if the path exists. This function will return a server path without symbolic links or relative directory structures. An optional second argument will cause an error to be triggered if the path cannot be resolved.</p>
+
+<code>$directory = './../../etc/passwd';<br />
+echo set_realpath($directory);<br />
+// returns "/etc/passwd"<br />
+<br />
+$non_existent_directory = './../../path/not/found';<br />
+echo set_realpath($non_existent_directory, TRUE);<br />
+// returns "/path/not/found"<br />
+<br />
+echo set_realpath($non_existent_directory, FALSE);<br />
+// returns an <strong>error</strong>, as the path could not be resolved</code>
+<h2> </h2>
+</div>
+<!-- END CONTENT -->
+
+
+<div id="footer">
+<p>
+Previous Topic: <a href="html_helper.html"> HTML Helper</a>
+ ·
+<a href="#top">Top of Page</a> ·
+<a href="../index.html">User Guide Home</a> ·
+Next Topic: <a href="security_helper.html">Security Helper</a>
+</p>
+<p><a href="http://codeigniter.com">CodeIgniter</a> · Copyright © 2007 · <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
+</div>
+
+</body>
+</html>
\ No newline at end of file diff --git a/user_guide/helpers/security_helper.html b/user_guide/helpers/security_helper.html index 5a02ee3cc..cb9bf3d66 100644 --- a/user_guide/helpers/security_helper.html +++ b/user_guide/helpers/security_helper.html @@ -113,12 +113,11 @@ $str = dohash($str, 'md5'); // MD5 <div id="footer">
<p>
-Previous Topic: <a href="inflector_helper.html"> Inflector Helper</a>
+Previous Topic: <a href="path_helper.html"> Path Helper</a>
·
<a href="#top">Top of Page</a> ·
<a href="../index.html">User Guide Home</a> ·
-Next Topic: <a href="smiley_helper.html">Smiley Helper</a>
-</p>
+Next Topic: <a href="smiley_helper.html">Smiley Helper</a></p>
<p><a href="http://codeigniter.com">CodeIgniter</a> · Copyright © 2007 · <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>
|