【问题标题】:PHP Curl Posting @ Sign Returning FalsePHP Curl Posting @ 签名返回 False
【发布时间】:2014-08-25 08:17:48
【问题描述】:

我得到了这个测试代码。

文件名:test.php

<?php
$array = array(
            'host' => "@"
        );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost/post.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $array);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
?>

还有这个,post.php

<?php
  var_dump($_POST);
?>

每当我使用“@”作为值时,我都会得到这样的错误结果,

bool(false)

但是当我像这样使用“@”或“any@”时,我得到了这个结果

array(1) { ["host"]=> string(2) " @" }

对此有何解释和解决方案?

谢谢!

【问题讨论】:

    标签: php post curl


    【解决方案1】:

    @前缀用于指定文件路径(上传文件)。

    您可以通过将CURLOPT_SAFE_UPLOAD(需要php版本> = 5.5)选项设置为TRUE来禁用@前缀。

    或者您可以只使用查询字符串而不是数组。

    curl_setopt($ch, CURLOPT_POSTFIELDS, "host=@");
    

    【讨论】:

    • 我正要问如果有多个主机,并且来自一个阵列怎么办。所以我做了 $array = array('host1' => '@','host2' => '@'); $post = http_build_query($array); $post = str_replace("amp;", "", $post); curl_setopt($ch, CURLOPT_POSTFIELDS, $post);非常感谢@xdazz 的解释和想法!
    猜你喜欢
    • 2013-07-03
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2011-04-25
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多