API JSON ответ с использованием POST в PHP - PullRequest
1 голос
/ 12 января 2020

У меня есть ресурсы API pu sh. php, которые я использую для мобильного приложения, для которого требуется приложение для отправки POST-данных, чтобы получить ответ. Сейчас мобильные приложения завершены, и сейчас я работаю на сайте того же приложения. Вместо того, чтобы писать код снова, я хотел бы использовать созданные мной API-вызовы, которые находятся на том же сервере.

Моя регистрационная форма находится в папке root (root / index. php). Мой вызов API для регистрации находится в папке API (root / API / pu sh. php). Я хочу отправить данные формы с помощью POST и успешно извлечь данные JSON из pu sh. php. Проблема находится между отмеченными комментариями.

ROOT / index. php

<!DOCTYPE html>
<html>
<head>
    <title>Sign Up</title>
</head>
<body>
    <h2>Register User</h2>
    <form name="signup" method="post" action="signup.php">
        <center><img src="images/logo.png" width="150"></center>
        <input type="text" name="username" placeholder="username"><br>
        <input type="password" name="password" placeholder="password"><br>
        <input type="submit" value="Sign Up!">
    </form>
    <h1>
        <?php
            if (!empty($_POST)) {
                if (isset($_POST['username']) && isset($_POST['password'])) {
                    $output = NULL;
                    $username = $_POST['username'];
                    $username = $_POST['password'];

                    //********************************************
                    //Send values to API and receive output in JSON

                    $JSON = getResponseFromAPIbyPOST($username, $password);

                    //********************************************

                    $output = json_decode($JSON);
                    if ($output->response == "SUCCESS") {
                        echo "Registration Successful!";
                    } else {
                        echo "Registration Failed!";
                    }
                }
            }
        ?>
    </h1>
</body>
</html>

ROOT / API / pu sh. php

error_reporting(E_ALL);
header('Content-Type: application/json');
include 'includes/dbcon.class.php';
$dbcon = new dbcon;
$conn = $dbcon->connect();
// Set Action
if (isset($_POST['action'])) {
    $action = $_POST['action'];
} else {
    $action = NULL;
}
// Check if API call is valid
if ($action == "register") {
    $output = new stdClass();
    if (isset($_POST['username']) && isset($_POST['password'])) {
        $username = mysqli_escape_string($_POST['username']);
        $password = mysqli_escape_string($_POST['password']);
        $sql = "INSERT INTO dbuser(vuser,vpass) VALUES ('{$username}','{$password}') ";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
            $output->data = "USER_CREATED";
            $output->response = "SUCCESS";
            echo json_encode($output, JSON_PRETTY_PRINT);
        } else {
            $output->data = "SQL Error $conn->errno : $conn->error";
            $output->response = "FAIL";
            echo json_encode($output, JSON_PRETTY_PRINT);
        }
    } else {
        $output->data = "INVALID_ARGUMENTS";
        $output->response = "FAIL";
        echo json_encode($output, JSON_PRETTY_PRINT);
    }
} else {
    $output->data = "INVALID";
    $output->response = "FAIL";
    echo json_encode($output, JSON_PRETTY_PRINT);
}

ВЫХОД

{
    "data": "USER_CREATED",
    "response": "SUCCESS"
}

если вы посмотрите на индекс. php между отмеченными комментариями комментариями, я пытаюсь выяснить, что Я могу использовать здесь функцию >> getResponseFromAPIbyPOST ($ username, $ password) , которая получит мне ответ и сохранит его в переменной $ JSON.

Что правильно php функция для достижения этой цели?

Сервер использует HTTPS

1 Ответ

0 голосов
/ 12 января 2020

Вы можете сделать это, используя curl или get_file_contents.

, используя cURL


$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"http://www.yourdomain.com/api/push.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query([
'username' => $username,
'password' => $password
]));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);

curl_close ($ch);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...