diff --git a/system/libraries/Input.php b/system/libraries/Input.php
index f346cab..0d41b0a 100644
--- a/system/libraries/Input.php
+++ b/system/libraries/Input.php
@@ -91,6 +91,16 @@
 		{

 			$_GET = array();

 		}

+		else

+		{

+			if (is_array($_GET) AND count($_GET) > 0)

+			{

+				foreach($_GET as $key => $val)

+				{

+					$_GET[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);

+				}

+			}

+		}

 		

 		// Clean $_POST Data

 		if (is_array($_POST) AND count($_POST) > 0)

@@ -173,6 +183,41 @@
 		

 		return $str;

 	}

+

+	// --------------------------------------------------------------------

+	

+	/**

+	 * Fetch an item from the GET array

+	 *

+	 * @access	public

+	 * @param	string

+	 * @param	bool

+	 * @return	string

+	 */

+	function post($index = '', $xss_clean = FALSE)

+	{		

+		if ( ! isset($_GET[$index]))

+		{

+			return FALSE;

+		}

+

+		if ($xss_clean === TRUE)

+		{

+			if (is_array($_GET[$index]))

+			{

+				foreach($_GET[$index] as $key => $val)

+				{					

+					$_GET[$index][$key] = $this->xss_clean($val);

+				}

+			}

+			else

+			{

+				return $this->xss_clean($_GET[$index]);

+			}

+		}

+

+		return $_GET[$index];

+	}

 	

 	// --------------------------------------------------------------------

 	

@@ -337,7 +382,34 @@
 	 */

 	function valid_ip($ip)

 	{

-		return ( ! preg_match( "/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip)) ? FALSE : TRUE;

+		if ( ! preg_match( "/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip))

+		{

+			return FALSE;

+		}

+		

+		$octets = explode('.', $ip);

+		

+		for ($i = 1; $i <= 4; $i++)

+		{

+			$octet = intval($octets[($i-1)]);

+			if ($i === 1)

+			{

+				if ($octet > 223 OR $octet < 1)

+					return FALSE;

+			}

+			elseif ($i === 4)

+			{

+				if ($octet < 1)

+					return FALSE;

+			}

+			else

+			{

+				if ($octet > 254)

+					return FALSE;

+			}

+		}

+		

+		return TRUE;

 	}

 	

 	// --------------------------------------------------------------------