gpt4 book ai didi

php - 使用 PHP 和 cURL 发送数据时保留帖子字段的数据类型

转载 作者:可可西里 更新时间:2023-11-01 16:33:24 25 4
gpt4 key购买 nike

我知道 HTTP POST 表单数据作为字符串值发送到服务器端,我必须将它们转换为 bool 值或整数等。

但我的问题是:是否可以在保留值类型的同时使用 cURL 发布数据?

例如:

以下 PHP 代码准备 PHP 数据数组,其中“age”是一个 int,“optin”是一个 bool 值,然后使用 cURL 通过 POST 方法将此数据发送到测试脚本。

$url = 'http://www.sometestserver.com/test/receive.php';

$data = array (
'name' => "Firstname SecondName",
'age' => 25,
'optin' => true
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml'));
$response = curl_exec($ch);

我在上面的代码将数据发布到的测试脚本上有以下代码。该脚本只是读取其中的任何内容,并将所有内容转储到一个文本文件中。

ob_start();
var_dump($_POST);
$data = ob_get_clean();
file_put_contents(time() . ".txt", $data);

输出结果如下:

array(22) {
["name"]=>
string(21) "Firstname SecondName"
["age"]=>
string(2) "25"
["optin"]=>
string(1) "1"
}

如您所见,所有值都被转换为字符串类型, bool 值 true 被转换为字符串“1”。

在另一个测试中, bool 值 false 作为空字符串 '' 发送。

有什么方法可以保留数据类型吗?也许通过设置特定的 curl 选项?或者这根本不可能?

如果 cUrl 总是将 bool 值转换为字符串,是否有关于在另一端期望什么值的硬性规定?即 bool true 是否始终为字符串“1”而 false 始终为空字符串?

感谢您的帮助。

最佳答案

答案在于 PHP 将原始类型转换为字符串的方式。它唯一可能通过 HTTP 和 cURL 将数据作为字符串发送,因此 php 使用 PHP 的类型杂耍系统将非字符串值转换为字符串。

请看PHP documentation for how PHP cast non-string values using it's type juggling system

关于php - 使用 PHP 和 cURL 发送数据时保留帖子字段的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com