summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--system/core/Input.php81
-rw-r--r--user_guide_src/source/changelog.rst2
-rw-r--r--user_guide_src/source/libraries/input.rst10
3 files changed, 38 insertions, 55 deletions
diff --git a/system/core/Input.php b/system/core/Input.php
index f181c27ce..97884d309 100644
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -103,22 +103,16 @@ class CI_Input {
*/
protected $headers = array();
- /**
- * Raw input stream data as received from php://input
- *
- * @see CI_Input::raw_input_stream()
- * @var array
- */
protected $_raw_input_stream = NULL;
/**
- * Input stream data
- *
- * Parsed from raw_input_stream at runtime
- *
- * @see CI_Input::input_stream()
- * @var array
- */
+ * Input stream data
+ *
+ * Parsed from php://input at runtime
+ *
+ * @see CI_Input::input_stream()
+ * @var array
+ */
protected $_input_stream = NULL;
/**
@@ -307,54 +301,35 @@ class CI_Input {
// ------------------------------------------------------------------------
/**
- * Fetch raw data from php://input stream
- *
- * Useful when data is not an array.
- */
- public function raw_input_stream()
+ * Fetch an item from the php://input stream
+ *
+ * Useful when you need to access PUT, DELETE or PATCH request data.
+ *
+ * @param string $index Index for item to be fetched
+ * @param bool $xss_clean Whether to apply XSS filtering
+ * @return mixed
+ */
+ public function input_stream($index = NULL, $xss_clean = NULL)
{
- // Prior to PHP 5.6, the input stream can only be read once,
- // so we'll need to check if we have already done that first.
- if (is_null($this->_raw_input_stream))
+ // Prior to PHP 5.6, the input stream can only be read once,
+ // so we'll need to check if we have already done that first.
+ if ( ! is_array($this->_input_stream))
{
- $this->_raw_input_stream = file_get_contents('php://input');
+ parse_str($this->raw_input_stream, $this->_input_stream);
+ is_array($this->_input_stream) OR $this->_input_stream = array();
}
-
- return $this->_raw_input_stream;
- }
-
- // ------------------------------------------------------------------------
-
- /**
- * Fetch an item from the input stream
- *
- * Useful when you need to access PUT, DELETE or PATCH request data.
- *
- * @param string $index Index for item to be fetched
- * @param bool $xss_clean Whether to apply XSS filtering
- * @return mixed
- */
- public function input_stream($index = NULL, $xss_clean = NULL)
- {
- parse_str($this->raw_input_stream(), $this->_input_stream);
return $this->_fetch_from_array($this->_input_stream, $index, $xss_clean);
}
-
+
// ------------------------------------------------------------------------
- /**
- * Fetch an item from the input stream
- *
- * Useful when you need to access input that's been send as json'
- *
- * @param string $index Index for item to be fetched
- * @param bool $xss_clean Whether to apply XSS filtering
- * @return mixed
- */
- public function json_input_stream($index = NULL, $xss_clean = NULL)
+ public function __get($name)
{
- $json_input_stream = json_decode($this->raw_input_stream(), true);
- return $this->_fetch_from_array($json_input_stream, $index, $xss_clean);
+ if ($name === 'raw_input_stream')
+ {
+ isset($this->_raw_input_stream) OR $this->_raw_input_stream = file_get_contents('php://input');
+ return $this->_raw_input_stream;
+ }
}
// ------------------------------------------------------------------------
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 5c5cd5e54..311aec20b 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -492,6 +492,8 @@ Release Date: Not Released
- Added an option for ``_clean_input_keys()`` to return FALSE instead of terminating the whole script.
- Deprecated the ``is_cli_request()`` method, it is now an alias for the new :php:func:`is_cli()` common function.
- Added an ``$xss_clean`` parameter to method ``user_agent()`` and removed the ``$user_agent`` property.
+ - Added gettable property ``raw_input_stream`` to access the **php://input** data.
+ - Changed method ``input_stream()`` to obtain the data from ``raw_input_stream`` property.
- :doc:`Common functions <general/common_functions>` changes include:
diff --git a/user_guide_src/source/libraries/input.rst b/user_guide_src/source/libraries/input.rst
index 967f69d13..2b71b348a 100644
--- a/user_guide_src/source/libraries/input.rst
+++ b/user_guide_src/source/libraries/input.rst
@@ -91,8 +91,14 @@ the ``$_POST`` array, because it will always exist and you can try
and access multiple variables without caring that you might only have
one shot at all of the POST data.
-CodeIgniter will take care of that for you, and you can access data
-from the **php://input** stream at any time, just by calling the
+CodeIgniter will take care of that for you, and you can read the data
+from the **php://input** stream at any time, just by using the
+``raw_input_stream`` property::
+
+ $this->input->raw_input_stream;
+
+Additionally if the input stream is formated in a query string fashion
+you can access it's values, just by calling the
``input_stream()`` method::
$this->input->input_stream('key');