#php #json #curl
#php #json #curl
Вопрос:
У меня есть команда:
curl -k -u **username:password** --request POST -H "Content-Type:application/json" -d "{"name":"John","age":"31","test":"New York"}" http://siteteste.com/receive.php
Я хочу получить имя пользователя и пароль на стороне сервера с помощью PHP.
Я использую метод POST.
Мой PHP:
<?php
// Only allow POST requests
***// I want the username and password here with PHP POST.***
***$user = $_POST[""]; // Not working :(***
if (strtoupper($_SERVER['REQUEST_METHOD']) != 'POST') {
throw new Exception('Only POST requests are allowed');
}
// Make sure Content-Type is application/json
$content_type = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : '';
if (stripos($content_type, 'application/json') === false) {
throw new Exception('Content-Type must be application/json');
}
// Read the input stream
$body = file_get_contents("php://input");
// Decode the JSON object
$object = json_decode($body, true);
// Throw an exception if decoding failed
if (!is_array($object)) {
throw new Exception('Failed to decode JSON object');
}
// Display the object
$getit = $object['test'];
print $getit;
Как я могу это сделать?
Я пытаюсь, но не получается.
Я ищу StackOverflow и другие сайты, но не нашел информации о
Ответ №1:
Ваше тело закодировано в json.
Вы получите свои данные здесь:
$body = file_get_contents("php://input");
// Decode the JSON object
$object = json_decode($body, true);
var_dump($object); // <-- do this to view your data.
-u
Опция, которую вы используете, используется для аутентификации. Например, для http-аутентификации.
Если вы хотите добавить данные, вам нужно изменить свой -d
параметр. Например, здесь я добавил пользователя:
-d "{"name":"John","age":"31","test":"New York","user":"test-user"}"
Или в другом случае вы действительно хотите использовать http-аутентификацию с использованием данных:
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']