PHP返回类型与我期望的不一样

PHP返回类型与我期望的不一样,php,curl,boolean,Php,Curl,Boolean,我使用curl发送数据,然后作为响应,我给出一些值。如果满足,则响应应为true,如果不满足,则返回字符串错误消息 我的代码如下: if(curl_exec($ch) === true){ return true; }else{ return curl_exec($ch); } 在我的回复文件中我写了这个 if($_POST['license']=='123456'){ echo 'License already in use'; }else{

我使用curl发送数据,然后作为响应,我给出一些值。如果满足,则响应应为
true
,如果不满足,则返回字符串错误消息

我的代码如下:

if(curl_exec($ch) === true){
        return true;
}else{
        return curl_exec($ch);
}
在我的回复文件中我写了这个

if($_POST['license']=='123456'){
        echo 'License already in use';
}else{
        echo true;
}
我认为
echo true
是相同的,第一个条件
curl\u exec($ch)==true)
应该满足。我不明白我错在哪里。请用正确的方式开车送我

编辑

我使用var_dump将其转储,并显示
string
type insead
boolean
->
string'(长度=0)

我的curl代码是

    $site = array('license' => $this->key, 'domain' => $this->domain, 'server' => $_SERVER['HTTP_HOST']);


    curl_setopt($ch, CURLOPT_URL, EXTENSION_VERIFY_URL);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $site);

    if(curl_exec($ch) === true){
        return true;
    }else{
        return curl_exec($ch);
    }
调用两次
curl\u exec()
可能会失败。相反,您应该将返回值存储在变量中(例如,
$result=curl\u exec()
),并使用该变量进行测试


除此之外,尝试使用
echo
ing类似于
t
的内容代替true,并使用
f:License已在使用中
代替字符串。这样,如果一切正常,您总是会返回一个字符串。

两次调用
curl\u exec()
不会导致两次单独的执行吗?我怀疑这是期望的行为,但根据这里的示例用法,我认为这甚至不合法:。此外,我怀疑响应是否为布尔值
true
值;它可能是一个等于或包含
“true”
的字符串,但它不应该是相同的类型,因此您的===将失败。是否设置了
返回\u传输
?如果是这样,那么curl_exec永远无法返回布尔值true。它将返回您请求的url发出的任何字符串。发布其余代码,包括curl opts是的,我知道不要使用
curl\u exec()
两次,但如果我将其保存在任何变量中,那么操作代码就会变得很容易。这就是为什么我必须使用
curl\u exec()?如果你控制代码:只有当他设法欺骗你的回应,这需要一些严重的黑客。如果他控制代码(即它在他的服务器上),那么他可以用
true
替换
curl\u exec()
,并完全跳过许可证检查。