POST URL参数理解

时间:2018-07-11 06:18:35

标签: php html post get

我的Android应用程序具有如下所示的API。我可以使用Chrome的邮递员应用程序对其进行测试。

    <?php
    require_once 'include/DB_Functions.php';
    require_once 'include/utility.php';
    $db = new DB_Functions();
    $response = array("error" => FALSE);

    if (isset($_POST['membership']) && isset($_POST['orderid']) && isset($_POST['email'])) {
        $time = getDatetimeNow();
        $membership = $_POST["membership"];
        $orderid    = $_POST["orderid"];
        $email      = $_POST["email"];

        $response = $db->premium($membership, $orderid, $email, $time);   
        echo json_encode($response);
    } else {
        // required post params is missing
        $response["error"] = TRUE;
        $response["error_msg"] = "Required parameters email, orderid and membership are missing!";
        echo json_encode($response);
    }
?>

它工作正常,没有任何问题,但是我有一些类似的api,我想直接从浏览器中对其进行测试,但出现参数丢失错误。

我正在尝试使用以下网址

https://example.com/api/premium.php?membership=1&orderid=123&email=myemail@mail.com

它给我errr缺少参数。任何人都可以建议我如何使用浏览器而不是邮递员进行检查? 谢谢

2 个答案:

答案 0 :(得分:1)

您正尝试通过 GET 请求发送数据,但这与 POST 不同。 您不能仅将变量放在URL中并像POST数据一样发送它,因为POST数据是在正文或请求中发送的。您可以read here

如果要通过POST发送数据,则可以创建一个小格式的HTMJL页面并通过POST发送,例如:

<form action="https://example.com/api/premium.php" method="POST">
    <input type="text" name="membership" value="1">
    <input type="text" name="orderid" value="123">
    <input type="text" name="email" value="myemail@mail.com">
    <input type="submit">
</form>

答案 1 :(得分:0)

您不能将电子邮件作为查询字符串发送,因为URL中的保留字符必须被编码为有效字符,否则它们模棱两可,并且可能在URL中用于保留目的。 @是保留字符,必须编码为%40。

PHP会为您解码。它对您透明,您甚至不必担心。