【发布时间】:2015-06-12 13:54:24
【问题描述】:
我正在使用 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_exec($ch)===true) 应该满足。我无法理解我哪里出错了。请以正确的方式开车。
编辑
我使用 var_dump 转储它并显示 string 类型 insead boolean -> string '' (length=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_exec()导致两次单独的执行吗?我怀疑这是理想的行为,但我认为这甚至不合法,根据此处的示例用法:php.net/manual/en/function.curl-exec.php。另外,我怀疑响应将是布尔值true;它可能是一个等于或包含"true"的字符串,但它不应该是相同的类型,所以你的 === 会失败。 -
你设置
return_transfer了吗?如果是这样,那么 curl_exec 永远不会返回布尔值 true。它会返回您请求的网址吐出的任何字符串。 -
发布其余代码,包括 curl opts
-
是的,我知道不要使用
curl_exec()两次,但如果我将它保存在任何变量中,那么操作我的代码将变得很容易。这就是为什么我必须使用curl_exec()两次 -
代码是服务器端的,因此操作结果集不再容易,因为它调用了两次。