summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Andreev <narf@devilix.net>2015-02-26 18:04:52 +0100
committerAndrey Andreev <narf@devilix.net>2015-02-26 18:04:52 +0100
commit23824b85d2e51f1f7930631bd84143ff9c078b50 (patch)
tree0b3c9b86ed80589fe01b6f9eb57e1ffa45eef374
parentdb20caad0c7a25152264033fbded3827ed5f72b1 (diff)
parent1e35792cc2d231cba11c2faefd71717ab67a46d2 (diff)
Merge pull request #3604 from Ignasimg/patch-1
Add support for raw_input_stream
-rw-r--r--system/core/Input.php16
-rw-r--r--user_guide_src/source/changelog.rst1
-rw-r--r--user_guide_src/source/libraries/input.rst16
3 files changed, 30 insertions, 3 deletions
diff --git a/system/core/Input.php b/system/core/Input.php
index fae3b6c08..c3382b4d9 100644
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -103,6 +103,8 @@ class CI_Input {
*/
protected $headers = array();
+ protected $_raw_input_stream;
+
/**
* Input stream data
*
@@ -313,7 +315,8 @@ class CI_Input {
// so we'll need to check if we have already done that first.
if ( ! is_array($this->_input_stream))
{
- parse_str(file_get_contents('php://input'), $this->_input_stream);
+ // $this->raw_input_stream will trigger __get().
+ parse_str($this->raw_input_stream, $this->_input_stream);
is_array($this->_input_stream) OR $this->_input_stream = array();
}
@@ -322,6 +325,17 @@ class CI_Input {
// ------------------------------------------------------------------------
+ public function __get($name)
+ {
+ 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;
+ }
+ }
+
+ // ------------------------------------------------------------------------
+
/**
* Set cookie
*
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index b1c506715..42eed8034 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -493,6 +493,7 @@ 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 property ``$raw_input_stream`` to access **php://input** data.
- :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..274e49af4 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 form-encoded like $_POST you can
+access its values by calling the
``input_stream()`` method::
$this->input->input_stream('key');
@@ -114,6 +120,12 @@ Class Reference
.. php:class:: CI_Input
+ .. attribute:: $raw_input_stream
+
+ Read only property that will return php://input data as is.
+
+ The property can be read multiple times.
+
.. php:method:: post([$index = NULL[, $xss_clean = NULL]])
:param mixed $index: POST parameter name