You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
4.9 KiB
159 lines
4.9 KiB
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
class WB_Input extends CI_Input
|
|
{
|
|
|
|
/**
|
|
* Fetch from array
|
|
*
|
|
* Internal method used to retrieve values from global arrays.
|
|
*
|
|
* @param array &$array $_GET, $_POST, $_COOKIE, $_SERVER, etc.
|
|
* @param mixed $index Index for item to be fetched from $array
|
|
* @param bool $xss_clean Whether to apply XSS filtering
|
|
* @return mixed
|
|
*/
|
|
protected function _fetch_from_array(&$array, $index = NULL, $xss_clean = NULL, $default_value =NULL)
|
|
{
|
|
is_bool($xss_clean) OR $xss_clean = $this->_enable_xss;
|
|
|
|
// If $index is NULL, it means that the whole $array is requested
|
|
isset($index) OR $index = array_keys($array);
|
|
|
|
// allow fetching multiple keys at once
|
|
if (is_array($index))
|
|
{
|
|
$output = array();
|
|
foreach ($index as $key)
|
|
{
|
|
$output[$key] = $this->_fetch_from_array($array, $key, $xss_clean);
|
|
}
|
|
|
|
return $output;
|
|
}
|
|
|
|
if (isset($array[$index]))
|
|
{
|
|
$value = $array[$index];
|
|
}
|
|
elseif (($count = preg_match_all('/(?:^[^\[]+)|\[[^]]*\]/', $index, $matches)) > 1) // Does the index contain array notation
|
|
{
|
|
$value = $array;
|
|
for ($i = 0; $i < $count; $i++)
|
|
{
|
|
$key = trim($matches[0][$i], '[]');
|
|
if ($key === '') // Empty notation will return the value as array
|
|
{
|
|
break;
|
|
}
|
|
|
|
if (isset($value[$key]))
|
|
{
|
|
$value = $value[$key];
|
|
}
|
|
else
|
|
{
|
|
return $default_value;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return $default_value;
|
|
}
|
|
|
|
return ($xss_clean === TRUE)
|
|
? $this->security->xss_clean($value)
|
|
: $value;
|
|
}
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
/**
|
|
* Fetch an item from the GET array
|
|
*
|
|
* @param mixed $index Index for item to be fetched from $_GET
|
|
* @param bool $xss_clean Whether to apply XSS filtering
|
|
* @return mixed
|
|
*/
|
|
public function get($index = NULL, $xss_clean = NULL, $default_value = NULL)
|
|
{
|
|
return $this->_fetch_from_array($_GET, $index, $xss_clean, $default_value);
|
|
}
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
/**
|
|
* Fetch an item from the POST array
|
|
*
|
|
* @param mixed $index Index for item to be fetched from $_POST
|
|
* @param bool $xss_clean Whether to apply XSS filtering
|
|
* @return mixed
|
|
*/
|
|
public function post($index = NULL, $xss_clean = NULL, $default_value = NULL)
|
|
{
|
|
return $this->_fetch_from_array($_POST, $index, $xss_clean, $default_value);
|
|
}
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
/**
|
|
* Fetch an item from POST data with fallback to GET
|
|
*
|
|
* @param string $index Index for item to be fetched from $_POST or $_GET
|
|
* @param bool $xss_clean Whether to apply XSS filtering
|
|
* @return mixed
|
|
*/
|
|
public function post_get($index, $xss_clean = NULL, $default_value = NULL)
|
|
{
|
|
return isset($_POST[$index])
|
|
? $this->post($index, $xss_clean, $default_value)
|
|
: $this->get($index, $xss_clean, $default_value);
|
|
}
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
/**
|
|
* Fetch an item from GET data with fallback to POST
|
|
*
|
|
* @param string $index Index for item to be fetched from $_GET or $_POST
|
|
* @param bool $xss_clean Whether to apply XSS filtering
|
|
* @return mixed
|
|
*/
|
|
public function get_post($index, $xss_clean = NULL, $default_value = NULL)
|
|
{
|
|
return isset($_GET[$index])
|
|
? $this->get($index, $xss_clean, $default_value)
|
|
: $this->post($index, $xss_clean, $default_value);
|
|
}
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
/**
|
|
* Fetch an item from the COOKIE array
|
|
*
|
|
* @param mixed $index Index for item to be fetched from $_COOKIE
|
|
* @param bool $xss_clean Whether to apply XSS filtering
|
|
* @return mixed
|
|
*/
|
|
public function cookie($index = NULL, $xss_clean = NULL, $default_value = NULL)
|
|
{
|
|
return $this->_fetch_from_array($_COOKIE, $index, $xss_clean, $default_value);
|
|
}
|
|
|
|
// --------------------------------------------------------------------
|
|
|
|
/**
|
|
* Fetch an item from the SERVER array
|
|
*
|
|
* @param mixed $index Index for item to be fetched from $_SERVER
|
|
* @param bool $xss_clean Whether to apply XSS filtering
|
|
* @return mixed
|
|
*/
|
|
public function server($index, $xss_clean = NULL, $default_value = NULL)
|
|
{
|
|
return $this->_fetch_from_array($_SERVER, $index, $xss_clean, $default_value);
|
|
}
|
|
|
|
}
|