cURL POST字符串的格式

时间:2014-03-28 18:42:11

标签: php string curl

我已经看过以几种方式传递给cURL选项的帖子数据,例如带有键值对的数组,像这样的字符串:"username=user&password=pass"但是我遇到了一种不同类型的格式,这对我来说很奇怪也许你们中的一些人可以澄清一下。它看起来如下:

$sPost = "session[username_or_email]=$username&session[password]=$password&return_to_ssl=true&scribe_log=&redirect_after_login=%2F&authenticity_token=$authenticity_token";

curl_setopt($ch, CURLOPT_POSTFIELDS, $sPost);

为什么它看起来那样“session [username_or_email]”?

3 个答案:

答案 0 :(得分:2)

某些表单处理器会将POST变量名称视为方括号,如关联数组。想象一下,你的帖子来自一个表格:

<form>
  <input type="hidden" name="session[username_or_email]">
  <input type="hidden" name="session[password]">
</form>

例如,在PHP中,这将被处理为:

$_POST=array(
   'session' => array(
      'username_or_email' => whatever,
      'password' => whatever
   )
)

这只是按照惯例。就HTTP POST本身而言,只需将它们视为恰好包含方括号的两个不同变量名称。

答案 1 :(得分:1)

这是因为当你解析它时,它将被存储为一个数组。因此$_POST['session']将是一组键和值

答案 2 :(得分:1)

用于表示查询字符串中的关联数组的符号。当PHP接收到POST字符串时,它会获取这样的值,并将它们转换为名为session的数组,其中的键在方括号中列出。

例如,如果您手动构建数组,则数组的声明将如下所示:

$_POST = array(
    'session' => array(
        'username_or_email' => 'username',
        'password' => 'password'
    ),
    'return_to_ssl' => true // etc.
);