首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送字符串以php中的"@“作为字符串

发送字符串以php中的"@“作为字符串
EN

Stack Overflow用户
提问于 2015-11-16 19:27:19
回答 1查看 843关注 0票数 2

我试图使用"@mystr" POST方法发送类似于CURL的php字符串,但如果我只使用以下代码发送:

代码语言:javascript
复制
        $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);

它会抛出一个错误,它说:

弃用: curl_setopt():不推荐使用@filename上传文件。请使用CURLFile类代替..。

注意: $fields是这样的:

代码语言:javascript
复制
$fields=['chat_id'=>'@someusername','text'=>'hello'];

它是用于电报bot api的,如果在GET方法中使用%40而不是@,就可以了,电报将把我的消息发送到我的频道,但我必须使用POST方法。

@ in CURL ?中的字符串是以开头的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 20:11:04

我在这里找到了解决方案:http://php.net/manual/en/function.curl-setopt.php

CURLOPT_SAFE_UPLOAD

若要禁用对CURLOPT_POSTFIELDS中上载文件的@前缀的支持,这意味着以@开头的值可以安全地作为字段传递。CURLFile可能被用于上传。

在PHP5.5.0中添加了FALSE作为默认值。PHP5.6.0将默认值更改为TRUE。

代码语言:javascript
复制
    $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);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33743062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档