我已经看过以几种方式传递给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]”?
答案 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.
);