PHP请求使用情况

时间:2015-11-08 18:48:15

标签: php swift

我现在已经阅读了很多关于请求方法的内容,我找到了一个提供这个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中编写了一个将数据发送到这个php的IOS应用程序,然后我将使用该网站并将收到的数据写入服务器上的文本文件,是$ _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方法,因为有些线程声明要删除错误)

谢谢你

2 个答案:

答案 0 :(得分:2)

首先,$_REQUEST不是&#34;方法&#34;,它是&#34;超全球变量&#34;。使用括号()调用方法。通过方括号[]访问数组(例如this)。

&#34;未定义的索引&#34;意味着你试图访问一个不存在的数组元素,这表明你没有正确地将firstName和/或lastName发布到PHP。

通常,您不应手动编写POST消息。 iOS / Swift中有什么东西可以对变量进行表单编码吗?如果没有,您是否将内容类型设置为application/x-www-form-urlencoded?也许就是这样。

最后,你在这一行引用

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

很奇怪。您需要使用键盘上的标准"。如果您从博客中复制粘贴某些内容,WordPress可能会为您复制这些内容。

答案 1 :(得分:1)

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

PHP有一些super global variables,它们会根据特定条件自动填充。

何时使用$_POST

期望资源的HTTP请求方法为$_POST时,您应该使用POST超全局访问您的数据。 POST请求动词通常用于非幂等请求(例如签出购物车或将帖子添加到网络论坛)。

请注意$_POST仅在Content-type标题为www-form-urlencodedmulti-part编码时填充。否则,您必须检查php://input,因为PHP可能无法将其解码为$_POST。 PHP也会稍微破坏名称(例如,它用下划线替换空格和点)。有关详细信息,请参阅Handling External Variables

何时使用$_GET

相反,您应该在期望输入成为查询字符串的一部分时使用$_GET,或者在您明确将请求method设置为GET的表单中使用GET。请注意,这并不一定意味着您希望HTTP请求动词每次都为$_REQUEST

何时使用$_REQUEST

当您实际上不关心HTTP请求谓词是POST还是GET时,您使用$_REQUEST,因为POST将两者合并为一个数组。在这种情况下,重要的是要认识到如果在GET$_REQUEST中同时填充了a specific order in which they will be overwritten的相同名称。

在RESTful方法中明确表达总是更好,你很少依赖POST。在您的情况下,您似乎明确发送了$_POST请求,因此在这种情况下我会坚持使用POST。但是你很可能发送$_GET请求并仍然期望查询字符串中的输入,在这种情况下$_REQUEST是合适的。在大多数情况下,我很少看到#define TASK_RUNNING 0 #define TASK_INTERRUPTIBLE 1 #define TASK_UNINTERRUPTIBLE 2 #define __TASK_STOPPED 4 #define __TASK_TRACED 8 /* in tsk->exit_state */ #define EXIT_DEAD 16 #define EXIT_ZOMBIE 32 #define EXIT_TRACE (EXIT_ZOMBIE | EXIT_DEAD) /* in tsk->state again */ #define TASK_DEAD 64 #define TASK_WAKEKILL 128 #define TASK_WAKING 256 #define TASK_PARKED 512 #define TASK_NOLOAD 1024 #define TASK_STATE_MAX 2048 的真正需要。