在PHP中如何使用$_POST请求?

3

我想知道如何在PHP中使用POST请求。我曾尝试使用$_REQUEST['text']从URL获取数据,例如:http://localhost/data.php?text=ABCDEFGH,但如果传递的文本太长,则会出现错误:请求URI过长

if(isset($_REQUEST['text'])){
     $parsetext=$_REQUEST['text'];    //get data here data > ABCDEFGH
}else{
     echo "not valid";
}

请问如何使用POST请求支持长文本?我知道$_REQUEST既可以用于GET,也可以用于POST请求。

如果数据来源于表单,则只需将方法更改为POST。 - Kevin
是的,数据从哪里来? - reformed
@reformed 硬编码的密码?text=haksgdhas 或从ajax请求发送。 - Gunjan Patel
如果URL中的数据是可见的,您可以使用$ _GET ['text'] ... 到目前为止我从未使用过`$ _REQUEST [] :) - Makesh
2个回答

3

关于错误,您可以查看以下链接(我假设您已经看过这些内容):

如何解决HTTP 414“请求URI太长”错误?

请求URI过大

至于您的问题:我想知道如何在PHP中使用POST请求。

  1. 创建一个表单。

(我假设此表单中的文本框将获取您要POST的长数据。)

<form method="POST" action="http://localhost/data.php">
  <input type="text" name="input_text" />
  <button type="submit">Submit</button>
</form>

  1. Receive the data from the from input using the defined method on your form. In this case the method is POST and the url/file that will receive the submitted data is http://localhost/data.php.

    if (isset($_POST['input_text'])) {
        // Where input_text is the name of your textbox.
        $text = $_POST['input_text'];
        echo $text;
    }
    

错误:请求URI过长。

$_REQUEST,正如你所说,处理$_POST$_GET方法是正确的。关于你的问题,即使你使用$_REQUEST获取数据,在后台它也会使用$_GET方法来捕获你通过URL传递的查询字符串。

$_GET方法有大小限制,这是你遇到该错误的主要原因。而$_POST方法没有限制:HTTP POST内容的最大大小有多少?

结论: 最好不要使用$_REQUEST,而是专门使用$_GET$_POST :D


我使用了 $_REQUEST,它同时获取了 $_GET$_POST。那么为什么会出现“请求URI过长”的错误? - Gunjan Patel
我在我的答案中添加了注释。 - Vainglory07

1
首先,阅读此 问题/答案,这可能会为您澄清POST和GET之间的差异以及您应该为您的项目使用哪种方法。
然后,您应该忘记$_REQUEST并使用$_GET或$_POST。这将防止一些安全问题,如果您继续使用$_REQUEST,您可能会遇到这些问题。有关更多信息,请参阅 PHP手册 接下来,如果您正在传递大量数据,则应该切换到POST而不是GET。否则,您必须修改apache配置,如果您计划将代码发布给公众,则不建议这样做。
-编辑开始-
即使在AJAX中,如果所有内容都位于同一服务器上,则仍可以使用POST。
-编辑结束-

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接