PHP返回类型与我期望的不一样
我使用curl发送数据,然后作为响应,我给出一些值。如果满足,则响应应为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{
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 inseadboolean
->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()
,并完全跳过许可证检查。