From c3dee13df9ce64407d824cf782a45114641a50d0 Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Fri, 7 Mar 2025 16:55:29 +0100 Subject: [PATCH 1/9] Improve $_POST/$_GET definition --- language/predefined/variables/get.xml | 12 +++++++----- language/predefined/variables/post.xml | 5 +++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/language/predefined/variables/get.xml b/language/predefined/variables/get.xml index 8d0663992d35..3d751616154a 100644 --- a/language/predefined/variables/get.xml +++ b/language/predefined/variables/get.xml @@ -4,15 +4,17 @@ $_GET - HTTP GET variables + Query String Variables &reftitle.description; - An associative array of variables passed to the current script - via the URL parameters (aka. query string). Note that the array is not only - populated for GET requests, but rather for all requests with a query string. + An associative array of variables passed to the current script via the URL + parameters (also known as the query string). Note that this array is + populated whenever a query string is present, regardless of the HTTP request + method. Even in POST, PUT, or other types of requests, query string + parameters will still be available in $_GET. @@ -46,7 +48,7 @@ Hello Hannes! ¬e.is-superglobal; - The GET variables are passed through urldecode. + The values in $_GET are automatically passed through urldecode. diff --git a/language/predefined/variables/post.xml b/language/predefined/variables/post.xml index 3ffe08affece..15b8c5f8e2e2 100644 --- a/language/predefined/variables/post.xml +++ b/language/predefined/variables/post.xml @@ -4,7 +4,7 @@ $_POST - HTTP POST variables + Form Data from HTTP POST Requests @@ -29,7 +29,8 @@ echo 'Hello ' . htmlspecialchars($_POST["name"]) . '!'; ]]> - Assuming the user POSTed name=Hannes + Assuming the user sent a POST request with name=Hannes + in the body: &example.outputs.similar; From 34704c6999d7e1a180507b0f7a1d4affee4daa58 Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Fri, 7 Mar 2025 16:57:42 +0100 Subject: [PATCH 2/9] end example sentences with a dot --- language/predefined/variables/get.xml | 2 +- language/predefined/variables/post.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/language/predefined/variables/get.xml b/language/predefined/variables/get.xml index 3d751616154a..456719a138dc 100644 --- a/language/predefined/variables/get.xml +++ b/language/predefined/variables/get.xml @@ -31,7 +31,7 @@ echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!'; ]]> - Assuming the user entered http://example.com/?name=Hannes + Assuming the user entered http://example.com/?name=Hannes. &example.outputs.similar; diff --git a/language/predefined/variables/post.xml b/language/predefined/variables/post.xml index 15b8c5f8e2e2..0ad8be1f5e8f 100644 --- a/language/predefined/variables/post.xml +++ b/language/predefined/variables/post.xml @@ -30,7 +30,7 @@ echo 'Hello ' . htmlspecialchars($_POST["name"]) . '!'; Assuming the user sent a POST request with name=Hannes - in the body: + in the body. &example.outputs.similar; From 2e864fac84958d43eed10bf1c4eb53d7c05f7319 Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Sun, 9 Mar 2025 17:20:22 +0100 Subject: [PATCH 3/9] $_GET: apply suggestions --- language/predefined/variables/get.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/language/predefined/variables/get.xml b/language/predefined/variables/get.xml index 456719a138dc..c16e8765cbb6 100644 --- a/language/predefined/variables/get.xml +++ b/language/predefined/variables/get.xml @@ -13,8 +13,7 @@ An associative array of variables passed to the current script via the URL parameters (also known as the query string). Note that this array is populated whenever a query string is present, regardless of the HTTP request - method. Even in POST, PUT, or other types of requests, query string - parameters will still be available in $_GET. + method. @@ -31,7 +30,7 @@ echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!'; ]]> - Assuming the user entered http://example.com/?name=Hannes. + Assuming the user entered http://example.com/?name=Hannes. &example.outputs.similar; From 063c47ab375d1411d0bbe2a9810f229186c647e1 Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Mon, 10 Mar 2025 07:23:22 +0100 Subject: [PATCH 4/9] Do not use title case in refpurpose --- language/predefined/variables/get.xml | 2 +- language/predefined/variables/post.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/language/predefined/variables/get.xml b/language/predefined/variables/get.xml index c16e8765cbb6..8b3f0160a3c8 100644 --- a/language/predefined/variables/get.xml +++ b/language/predefined/variables/get.xml @@ -4,7 +4,7 @@ $_GET - Query String Variables + Query string variables diff --git a/language/predefined/variables/post.xml b/language/predefined/variables/post.xml index 0ad8be1f5e8f..65c100ce58a3 100644 --- a/language/predefined/variables/post.xml +++ b/language/predefined/variables/post.xml @@ -4,7 +4,7 @@ $_POST - Form Data from HTTP POST Requests + Form data from HTTP POST requests From 913d651fba489ec0dee56352986acf00271f6c29 Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Mon, 10 Mar 2025 23:03:37 +0100 Subject: [PATCH 5/9] docs(post): reference php://input --- language/predefined/variables/post.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/language/predefined/variables/post.xml b/language/predefined/variables/post.xml index 65c100ce58a3..da40140ac76b 100644 --- a/language/predefined/variables/post.xml +++ b/language/predefined/variables/post.xml @@ -45,6 +45,17 @@ Hello Hannes! &reftitle.notes; ¬e.is-superglobal; + + + To read POST data sent with other content types (e.g. + application/json or application/xml) + php://input + must be used. Unlike $_POST, which only works with + application/x-www-form-urlencoded and + multipart/form-data, php://input + provides direct access to the raw data from the body of the request. + + From 4bc83e00a62787c7b11af8148ffa9fca2c651d6d Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Mon, 10 Mar 2025 23:04:23 +0100 Subject: [PATCH 6/9] docs(php://input): provide example to read JSON data --- language/wrappers/php.xml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/language/wrappers/php.xml b/language/wrappers/php.xml index 7c1295122d65..c04b8239a9e7 100644 --- a/language/wrappers/php.xml +++ b/language/wrappers/php.xml @@ -368,6 +368,31 @@ file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello + + + + php://input to read JSON data from the request body + + This example demonstrates how to read JSON data from POST, PUT and PATCH + requests using php://input. + + + From 3590ba9bc942cb4180cadf50c1349e7aae399910 Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Mon, 10 Mar 2025 23:10:43 +0100 Subject: [PATCH 7/9] fix format in previous commits --- language/predefined/variables/post.xml | 2 +- language/wrappers/php.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/language/predefined/variables/post.xml b/language/predefined/variables/post.xml index da40140ac76b..b74304ee8d30 100644 --- a/language/predefined/variables/post.xml +++ b/language/predefined/variables/post.xml @@ -54,7 +54,7 @@ Hello Hannes! application/x-www-form-urlencoded and multipart/form-data, php://input provides direct access to the raw data from the body of the request. - + diff --git a/language/wrappers/php.xml b/language/wrappers/php.xml index c04b8239a9e7..585a9f11a6f2 100644 --- a/language/wrappers/php.xml +++ b/language/wrappers/php.xml @@ -393,6 +393,7 @@ if ($data !== null) { } else { echo "Invalid JSON."; } +?> ]]> From 70039d295e3aca31896ab5d2d74c40459f710b4b Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Tue, 11 Mar 2025 00:39:59 +0100 Subject: [PATCH 8/9] docs: apply suggestions --- language/wrappers/php.xml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/language/wrappers/php.xml b/language/wrappers/php.xml index 585a9f11a6f2..348d97675025 100644 --- a/language/wrappers/php.xml +++ b/language/wrappers/php.xml @@ -374,24 +374,25 @@ echo file_get_contents('php://memory'); // prints nothing php://input to read JSON data from the request body - This example demonstrates how to read JSON data from POST, PUT and PATCH - requests using php://input. + This example demonstrates how to read raw JSON data from POST, PUT and + PATCH requests using php://input. getMessage(); } ?> ]]> From 2a73421fec9e2a027e4eabc4a0ad10c947cf88a7 Mon Sep 17 00:00:00 2001 From: Pere Orga Date: Tue, 11 Mar 2025 08:44:50 +0100 Subject: [PATCH 9/9] docs: remove try/catch and improve variable names in example --- language/wrappers/php.xml | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/language/wrappers/php.xml b/language/wrappers/php.xml index 348d97675025..3a03bb46f985 100644 --- a/language/wrappers/php.xml +++ b/language/wrappers/php.xml @@ -380,20 +380,15 @@ echo file_get_contents('php://memory'); // prints nothing getMessage(); -} +echo "Received JSON data: "; +print_r($json_array); ?> ]]>