我正在尝试在页面重新加载后使用cURL。首先,我需要从其他网站获取问题,然后我想询问用户有关此问题的答案,然后使用get / post将其发送到同一页面(我的页面) 之后: 使用cURL将答案发送到另一页。不幸的是,我收到了消息:
警告:curl_setopt():提供的参数不是有效的cURL句柄 资源
(页面重新加载后,$ ch变量不可见我可以用它做什么?) 我的代码:
if(!isset($_GET['answer']))
{
$cookie = tempnam ("/tmp", "CURLCOOKIE");
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt($ch, CURLOPT_URL, $question_url );
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
$question = curl_exec($ch );
echo $question.
'<form name="input" method="get">
Question: <input type="text" name="answer">
<input type="submit" value="Send">
</form> ';
} else
{
$postFields['answer'] = $_GET['answer'];
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $answer_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_exec ($ch);
}
我认为我可以在会话中初始化cURL,但它也不起作用。
答案 0 :(得分:0)
请参阅将curl_init()置于条件之外。如果页面正在重新加载,那么它很可能永远不会被调用,这意味着你的curl连接不存在,因此错误。
$ch = curl_init();
if(!isset($_GET['answer']))
{
$cookie = tempnam ("/tmp", "CURLCOOKIE");
//removed
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt($ch, CURLOPT_URL, $question_url );
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
$question = curl_exec($ch );
echo $question.
'<form name="input" method="get">
Question: <input type="text" name="answer">
<input type="submit" value="Send">
</form> ';
} else
{
$postFields['answer'] = $_GET['answer'];
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $answer_url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_exec ($ch);
}
通过这种方式,无论条件运行的哪个部分,您都知道您将始终拥有该句柄。尽管PHP中的条件在if中定义的变量没有范围(该变量可以在if之外访问),但如果if(太多ifs)从不运行开始,那么变量将永远不会存在范围。