当前位置: 首页 > 知识库问答 >
问题:

在PHP中,Curl https xml结果返回空白(布尔值为false)

翁建弼
2023-03-14

请需要您的帮助!我用cURL发了一篇文章,但回复是空白的(布尔值为假)。如果我在浏览器上发布数据,就像按下https://www.example.com/myaccount/transfer.php?username=usernamer

1 0成功您的帐户已存入

当我看到浏览器源代码的结果是:

<?xml version="1.0" encoding="utf-8"?>
<TransferResponse>
<version>1</version>
<result>0</result>
<resultstring>success</resultstring>
<description>Your account has been deposited</description>
</TransferResponse>

让我附加my cURL代码:

<?php

$config = array
(
"url"        => "https://www.example.com/myaccount/",
"transfer"   => "transfer.php",
"browser"    => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16"
);

$postFields = "username=username&password=pass&deposit=5";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $config['url'] . $config['transfer']);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/cert/GeoTrustGlobalCA.crt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $config['browser']);
curl_setopt($ch, CURLOPT_REFERER, $config['url']);
curl_setopt($ch, CURLOPT_HEADER, true);

$content = curl_exec($ch);

var_dump($content);
var_dump(curl_getinfo($ch));
curl_error($ch);

curl_close($ch);

echo $content;

?>

请协助我在cURL中得到结果。我尝试过很多方法。我已经连续两天上网了。最后我决定问这里。有人能找出问题所在吗?完成了以下工作:

>

布尔假数组(size=26)'url'=


共有2个答案

魏元白
2023-03-14

将SSL验证设置为false会破坏SSL的用途。正确的解决方案是为CURL设置CA证书。

解决方案1(对PHP. ini的更改):

>

  • 从http://curl.haxx.se/docs/caextract.html下载CA bundle(cacert.pem)
  • 将其放在本地系统上(例如:C:\xampp\cacert.pem)
  • 打开你的php.ini
  • 设置curl.ca_info选项指向cacert.pem的位置

    Example: curl.ca_info="C:\xampp\cacert.pem"
    

    重启Apache

    解决方案2(在每次CURL调用前设置选项)

    >

  • 从http://curl.haxx.se/docs/caextract.html下载CA bundle(cacert.pem)
  • 将其放在本地系统上(例如:C:\xampp\cacert.pem)
  • 编写以下代码:

    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
    curl_setopt ($ch, CURLOPT_CAINFO, "pathto\cacert.pem");
    

    资料来源:http://tumblr.wehavefaces.net/post/52114563111/environment-windows-xampp-curl-library

  • 班安平
    2023-03-14

    如果这

    SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败

    是您的问题吗,curl\u setopt()设置

    CURLOPT_SSL_VERIFYPEER
    

    可能是给你的:

    FALSE停止cURL验证对等方的证书。可以使用CURLOPT_CAINFO选项指定要验证的备用证书,也可以使用CURLOPT_CAPATH选项指定证书目录。

    这么定

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    

    也可能

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    
     类似资料:
    • 问题内容: 关于以下原因为何的任何想法。 当我将request_url粘贴到浏览器中时,我会获取json数据,但是如果我在php中尝试,则var_dump就是bool(false); 有任何想法吗?? 更新并修复 OK伙计们,感谢您的所有帮助。是的,我帮助我追踪了这一情况。事实证明,php.ini配置为禁止打开url,因此file_get_contents无法正常工作。我在各个站点上发现了以下方便

    • 我正在使用JOOQ和Postgres。在博士后中,我有一个专栏性别: (表本身是一个视图,性别列是用Java计算的值的占位符) 在Java中,当I.fetch()视图时,我会对每条记录进行一些计算: 所有看起来都很好,如果打印值,它们都是正确的。但是,当我在我的技能记录上调用intoResultSet()时,性别列在所有值旁边都有一个星号,例如“*男性”。 然后,我使用结果集作为OpenCSV C

    • 问题内容: 以下代码不会输出任何内容: 但是下面的代码打印: 有没有更好的方式来打印或时是不是增加一个声明? 问题答案: 或者,如果您只想在为假时输出:

    • 问题内容: 我有一个看起来像这样的JSON Blob 我有一些代码将其转换回go结构 但是我在运行时看到的只是一个零位结构 我尝试先分配该结构,但那也没有用,我不确定为什么它不产生值,并且不返回错误 问题答案: 您的结构字段不会导出。这是因为它们以小写字母开头。 当我说“未导出”时,是指它们在您的包装之外不可见。您的软件包可以愉快地访问它们,因为它们在本地作用域内。 至于包装-它看不到它们。您需要

    • 我有一个包含多个列的DataFrame,我想检查特定的列值是否为NaN,如果是,我需要返回布尔值(True或False)。 我试过了 但它返回所有具有索引和布尔值的行。