我现在已经读了很多关于请求方法的内容,我发现了一个提供这个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-urlencoded
或multi-part
编码时填充。否则,您将不得不检查php://input
,因为PHP可能不会将其解码为$_POST
。PHP还对名称进行了一些篡改(例如,它用下划线替换了空格和点)。有关更多详细信息,请参阅处理外部变量。
何时使用$_GET
相反,当期望输入是查询字符串的一部分时,或者在将请求method
显式设置为GET
的形式中,应该使用$_GET
。请注意,这并不一定意味着您希望HTTP请求谓词每次都是GET
。
何时使用$_REQUEST
当您实际上不关心HTTP请求谓词是POST
还是GET
时,可以使用$_REQUEST
,因为$_REQUEST
将两者组合为一个数组。在这种情况下,重要的是要认识到,如果在POST
和GET
中都填充了相同的名称,则它们将按照特定的顺序被覆盖。
显式总是更好的,因为在RESTful方法中,您很少依赖$_REQUEST
。在您的情况下,您似乎明确地发送了一个POST
请求,所以在这种情况下,我将坚持使用$_POST
。但是您很可能发送POST
请求,并且仍然期望在查询字符串中输入,在这种情况下$_GET
是合适的。在大多数情况下,我很少看到真正需要$_REQUEST
。