php - 405 方法不允许 json 数据不发布

标签 php http tcp request

我正在用 php 制作简单的发布详细信息形式,但在将数据从表单发布到 API 时卡住了,但它显示 405 方法不允许错误。请检查下面的代码,让我知道其中的问题是什么。可能是我犯了一些愚蠢的错误,如果是这样的话,我很抱歉。

<form method="POST" action="#" name="checkout">

First Name <input type="text" name="firstName"/><br/>
Last name <input type="text" name="lastName"/><br/>
Email <input type="text" name="phone"/><br/>
Phone <input type="text" name="gender"/><br/>

<input type="submit" name="submit" value="submit"/>

</form>

</body>

</html>

<?php

if(isset($_POST['submit']))
{
    $name = $_POST['firstName'];
    $lastname = $_POST['lastName'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];

    $url11 = "https://api.rezdy.com/v1/categories/124095/products?apiKey=bb42962c78b34e02b879cc5463cb4648";
    $data['customer'] = array(
    'firstName'=>$name,
    'lastName'=>$lastname,
    'email'=>$phone,
    'phone'=>$gender
    );
    echo "<pre>";
    $json = json_encode($data);

    echo $json;
    echo "<br/>";
    function senddatat($url,$post)
    {
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST");
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch, CURLOPT_POST,true); 
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','charset=UTF-8 '));
        $result = curl_exec($ch);
/*echo "<pre>";
var_dump( curl_getinfo($ch) ) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
        curl_close($ch);*/
    return $result;
    }

    echo " ".senddatat($url11,$json);


}
?>

最佳答案

首先检查愚蠢的错误:这是您的字段: firstName,lastName,phone,gender

<input type="text" name="firstName"/><br/>
<input type="text" name="lastName"/><br/>
<input type="text" name="phone"/><br/>
<input type="text" name="gender"/><br/>

以及您在帖子请求中得到的内容: firstName,lastName,email,phone 我不知道您如何在帖子中获得email要求????

$name = $_POST['firstName'];
$lastname = $_POST['lastName'];
$email = $_POST['email'];
$phone = $_POST['phone'];

更新:

<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" name="checkout">

First Name <input type="text" name="firstName"/><br/>
Last name <input type="text" name="lastName"/><br/>
phone <input type="text" name="phone"/><br/>
gender <input type="text" name="gender"/><br/>

<input type="submit" name="submit" value="submit"/>

</form>

</body>

</html>

<?php

if(isset($_POST['submit']) && !empty($_POST['firstName']) && !empty($_POST['lastName']) && !empty($_POST['phone']) && !empty($_POST['gender']) ){

    $name = $_POST['firstName'];
    $lastname = $_POST['lastName'];
    $phone= $_POST['phone'];
    $gender= $_POST['gender'];

    $url11 = "https://api.rezdy.com/v1/categories/124095/products?apiKey=bb42962c78b34e02b879cc5463cb4648";

    $data['customer'] = array('firstName'=>$name,'lastName'=>$lastname,'email'=>$phone,'phone'=>$gender);

    echo "<pre>";
    $json = json_encode($data);
    echo $json;
    echo "<br/>";

    function senddatat($url,$post)
    {
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST");
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
        curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
        curl_setopt($ch, CURLOPT_POST,true); 
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','charset=UTF-8 '));
        $result = curl_exec($ch);
/*echo "<pre>";
var_dump( curl_getinfo($ch) ) . '<br/>';
echo curl_errno($ch) . '<br/>';
echo curl_error($ch) . '<br/>';
        curl_close($ch);*/
    return $result;
    }

    echo " ".senddatat($url11,$json);


}
?>

关于php - 405 方法不允许 json 数据不发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46605053/

相关文章:

PHP mysql_query 语法错误?

reactjs - 术语 'Promise-based Http client' 是什么意思?

javascript - php echo 添加 "0' );&lt;/script&gt;"到输出的末尾

php - 如何阻止客户端IP地址在Cloudflare/Docker/NGINX/LAMP站点中丢失?

wordpress - Flutter如何在一个屏幕上调用多个api(使用futurebuilders)?

python - 使用 TCP 连接发送 PNG 文件

java - 读取 TCP 回复消息时出现 MessageTimeoutException

linux - 需要删除与 iptables 建立的连接

php - 如何从 PHP 中的文本字符串中替换多个项目?

http - Chrome 不发送 "If-Modified-Since"