PHP请求使用情况


PHP request usage

我现在已经读了很多关于请求方法的内容,我发现了一个提供这个php示例的示例:

<?php
  // Read request parameters
  $firstName= $_REQUEST["firstName"];
  $lastName = $_REQUEST["lastName"];// Store values in an array
  $returnValue = array(“firstName”=>$firstName, “lastName”=>$lastName);
  // Send back request in JSON format
echo json_encode($returnValue); 
?>

我已经用swift编写了一个IOS应用程序,它将数据发送到此php,然后我将使用网站并将收到的数据写入服务器上的文本文件,$_Request方法是正确的方法吗?

向网站发送数据的IOS部分(不完整代码):

let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost/test.php")!)
    request.HTTPMethod = "POST"
    let postString = "firstName=Neil&lastName=Johnson"

注意:这个代码不适合工作(第4、5和6行的未定义索引,但我不确定为什么,因为我不能在这里使用isset方法,因为一些线程已经声明要删除错误)

感谢您关于

首先,$_REQUEST不是一个"方法",它是一个"超全局变量"。方法是使用括号()调用的。数组(如此)可通过方括号[]访问。

"未定义的索引"意味着你试图访问一个不存在的数组元素,这对我来说意味着你没有将firstName和/或lastName正确地张贴到PHP中。

一般来说,您不应该手动撰写POST消息。iOS/Swift中没有什么东西可以对您的变量进行形式编码吗?如果没有,是否将"内容类型"设置为application/x-www-form-urlencoded?也可能是这样。

最后,你在这条线上的报价

$returnValue = array(“firstName”=>$firstName, “lastName”=>$lastName);

很奇怪。您需要使用键盘上的标准"。如果你从博客中复制粘贴一些东西,WordPress很可能会帮你把它们弄乱。

这一点让很多人感到困惑,所以我将尽可能客观地解释这一点。

PHP有一些超级全局变量,它们是根据特定条件自动填充的。

何时使用$_POST

期望对资源的HTTP请求方法为POST而不是其他方法时,您应该使用$_POST超全局访问数据。POST请求动词通常用于非幂等请求(如查看购物车或向网络论坛添加帖子)。

注意,$_POST仅在Content-type报头是www-form-urlencodedmulti-part编码时填充。否则,您将不得不检查php://input,因为PHP可能不会将其解码为$_POST。PHP还对名称进行了一些篡改(例如,它用下划线替换了空格和点)。有关更多详细信息,请参阅处理外部变量。

何时使用$_GET

相反,当期望输入是查询字符串的一部分时,或者在将请求method显式设置为GET的形式中,应该使用$_GET。请注意,这并不一定意味着您希望HTTP请求谓词每次都是GET

何时使用$_REQUEST

当您实际上不关心HTTP请求谓词是POST还是GET时,可以使用$_REQUEST,因为$_REQUEST将两者组合为一个数组。在这种情况下,重要的是要认识到,如果在POSTGET中都填充了相同的名称,则它们将按照特定的顺序被覆盖。


显式总是更好的,因为在RESTful方法中,您很少依赖$_REQUEST。在您的情况下,您似乎明确地发送了一个POST请求,所以在这种情况下,我将坚持使用$_POST。但是您很可能发送POST请求,并且仍然期望在查询字符串中输入,在这种情况下$_GET是合适的。在大多数情况下,我很少看到真正需要$_REQUEST

相关文章: