Данные POST не принимаются при вызове API - PullRequest
0 голосов
/ 02 сентября 2018

Я построил API на PHP. При отправке запроса POST переменные, указанные в URL-адресе POST, не принимаются, а входной набор данных пуст. Переменная data в представленном ниже файле create.php пуста.

Если мы предоставляем жестко закодированные данные при создании PHP-файла, то все работает нормально.

Ниже приведен мой основной код файла data.php. Который содержит функцию для создания продукта с использованием переменных POST.

<?php
class Data{
private $conn;
private $table_name = "data";
public $id;
public $email;
public $address;
public $lasttx;
public $created;
public function __construct($db){
$this->conn = $db;
}

function create(){
$query = "INSERT INTO " . $this->table_name . " SET email=:email, 
address=:address, lasttx=:lasttx, created=:created";

$stmt = $this->conn->prepare($query);

$this->email=htmlspecialchars(strip_tags($this->email));
$this->address=htmlspecialchars(strip_tags($this->address));
$this->lasttx=htmlspecialchars(strip_tags($this->lasttx));
$this->created=htmlspecialchars(strip_tags($this->created));

$stmt->bindParam(":email", $this->email);
$stmt->bindParam(":address", $this->address);
$stmt->bindParam(":lasttx", $this->lasttx);
$stmt->bindParam(":created", $this->created);

if($stmt->execute()){
return true;
  }
return false;
}

Ниже приведен код create.php, который вызывается в вызовах API. Этот файл получает данные и вызывает функцию создания в data.php

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow- 
Headers, Authorization, X-Requested-With");

include_once '../config/database.php';
include_once '../objects/data.php';

$database = new Database();
$db = $database->getConnection();

$data1 = new Data($db);

$data = json_decode(file_get_contents("php://input"), true); // THIS VARIABLE is EMPTY while calling API.

$data1->email = $data["email"];
$data1->address = $data["address"];
$data1->lasttx = $data["lasttx"];
$data1->created = date('Y-m-d H:i:s');

if($data1->create()) {
    echo '{';
        echo '"message": "Product was created."';
    echo '}';
}
else{
    echo '{';
        echo '"message": "Unable to create product."';
    echo '}';
}
?>

Пожалуйста, сообщите. Большое спасибо.

1 Ответ

0 голосов
/ 02 сентября 2018

U как вы указали в своем комментарии, переменные формы передаются через URL. В приведенном выше сценарии вы пытаетесь проанализировать объект JSON, который является полезной нагрузкой запроса. И это не то, где эти параметры - следовательно, вы не получаете никаких данных оттуда.

Чтобы получить доступ к переменным из URL в PHP, все, что вам нужно сделать, это получить их из массива $_GET. например адрес электронной почты будет в $_GET["email"].

так вот эта часть:

$data = json_decode(file_get_contents("php://input"), true); // THIS VARIABLE is EMPTY while calling API.
$data1->email = $data["email"];
$data1->address = $data["address"];
$data1->lasttx = $data["lasttx"];
$data1->created = date('Y-m-d H:i:s');

станет:

# $data = json_decode line goes away
$data1->email = $_GET["email"];
$data1->address = $_GET["address"];
$data1->lasttx = $_GET["lasttx"];
$data1->created = date('Y-m-d H:i:s');

надеюсь, это поможет

Matthias

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