Вопрос:
Я знаю, что этот вопрос уже задан на форуме уже несколько раз, но ни один из ответов не работал для меня. Я все равно получаю пустую строку каждый раз, когда я пытаюсь отправить данные через параметр URL.
Это код PHP
<?php if (!file_get_contents(«data:,ok»)) { die(«Houston, we have a stream wrapper problem.»); } print «CONTENT_TYPE: » . $_SERVER[‘CONTENT_TYPE’] . «<BR />»; $data = file_get_contents(‘php://input’); print «DATA: <pre>»; var_dump($data); $tempArray = json_decode(file_get_contents(‘generated.json’), true); array_push($tempArray, $data); $jsonData = json_encode($tempArray); file_put_contents(‘generated.json’, $jsonData); print «</pre>»; ?> <form method=»post»> <input type=»text» name=»name» value=»ok» /> <input type=»submit» name=»submit» value=»submit»/> </form>
Пример передачи переменной с использованием параметра url
http://localhost/tests/testtest.php?name=what
Вывод:
Notice: Undefined index: CONTENT_TYPE in C:Apache24htdocsteststesttest.php on line 5 CONTENT_TYPE: DATA:
Я уже установил allow_url_fopen = On, Установите post_max_size = 8M и до сих пор нет надежды. Однако, когда я пытаюсь отправить данные, нажав кнопку отправки, он отправит необработанные данные в php (string(21) «name=ok&submit=submit»).
Кто-нибудь должен помочь? Благодарю!
Лучший ответ:
Это описано в php://input
PHP://ввод
php://input – это поток только для чтения, который позволяет вам считывать необработанные данные из тела запроса. В случае запросов POST предпочтительнее использовать вход php://вместо $ HTTP_RAW_POST_DATA, поскольку он не зависит от специальных директив php.ini.
Важная часть – ” POST reqest”.
Это означает, что, когда вы говорите , вы отправляете запрос GET а не запрос POST. Следовательно, нет тела запроса, и вы не можете читать что-либо через php://input.
Чтобы прочитать ввод формы, переданный как параметры URL, вы можете использовать глобальную переменную $_GET.
Когда вы используете запрос POST, вы обычно используете глобальный массив $_POST вместо того, чтобы читать тело запроса вручную через php://input.
Вы также можете рассмотреть $_REQUEST, если вам все равно, является ли это POST или GET. Хотя, помните, что не так с использованием $ _REQUEST []?
Ответ №1
Вы ищете $_SERVER[‘QUERY_STRING’]?
<?php // Basic way, but has the risk of E_NOTICE when it is undefined. var_dump($_SERVER[‘QUERY_STRING’]); // Safe way var_dump((string)filter_input(INPUT_SERVER, ‘QUERY_STRING’));