在 php 中发送以“@”开头的字符串 curl as string
Send string starts with "@" in php curl as string
我正在尝试使用 CURL
POST 方法发送 "@mystr"
和 php 之类的字符串,但是如果我只是使用以下代码发送:
$url_str = $url->getUrl();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url_str);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:multipart/form-data']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$out = curl_exec($ch);
curl_close($ch);
它会抛出一个错误:
Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead...
注意:$字段是这样的:
$fields=['chat_id'=>'@someusername','text'=>'hello'];
它用于电报机器人 api,如果我在 GET 方法中使用 %40
而不是 @
就可以了,电报会将我的消息发送到我的频道,但我有使用 POST 方法。
在 CURL 中是否可以发送以 @
开头的字符串?
我在这里找到了解决方案:
http://php.net/manual/en/function.curl-setopt.php
CURLOPT_SAFE_UPLOAD
TRUE 禁用对在 CURLOPT_POSTFIELDS 中上传文件的 @ 前缀的支持,这意味着以 @ 开头的值可以作为字段安全地传递。 CURLFile 可用于上传。
在 PHP 5.5.0 中添加,默认值为 FALSE。 PHP 5.6.0 将默认值更改为 TRUE。
$url_str = $url->getUrl();
$ch = curl_init();
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, TRUE); //<- HERE
curl_setopt($ch, CURLOPT_URL, $url_str);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:multipart/form-data']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$out = curl_exec($ch);
curl_close($ch);
我正在尝试使用 CURL
POST 方法发送 "@mystr"
和 php 之类的字符串,但是如果我只是使用以下代码发送:
$url_str = $url->getUrl();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url_str);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:multipart/form-data']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$out = curl_exec($ch);
curl_close($ch);
它会抛出一个错误:
Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead...
注意:$字段是这样的:
$fields=['chat_id'=>'@someusername','text'=>'hello'];
它用于电报机器人 api,如果我在 GET 方法中使用 %40
而不是 @
就可以了,电报会将我的消息发送到我的频道,但我有使用 POST 方法。
在 CURL 中是否可以发送以 @
开头的字符串?
我在这里找到了解决方案: http://php.net/manual/en/function.curl-setopt.php
CURLOPT_SAFE_UPLOAD
TRUE 禁用对在 CURLOPT_POSTFIELDS 中上传文件的 @ 前缀的支持,这意味着以 @ 开头的值可以作为字段安全地传递。 CURLFile 可用于上传。
在 PHP 5.5.0 中添加,默认值为 FALSE。 PHP 5.6.0 将默认值更改为 TRUE。
$url_str = $url->getUrl();
$ch = curl_init();
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, TRUE); //<- HERE
curl_setopt($ch, CURLOPT_URL, $url_str);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:multipart/form-data']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$out = curl_exec($ch);
curl_close($ch);