【发布时间】:2011-04-26 22:15:29
【问题描述】:
<?php
error_reporting(-1);
$config = array
(
"siteURL" => "http://domain.com",
"loginCheck" => "checkuser.php",
"userAgent" => "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=user&password=pass&submit= Login ";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $config['siteURL'] . $config['loginCheck']);
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['userAgent']);
curl_setopt($ch, CURLOPT_REFERER, config['siteURL']);
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>
我希望这与 curl 的结果相呼应,但事实并非如此。我做错什么了吗?
【问题讨论】:
-
尝试一些调试的东西,例如
var_dump($content);、curl_setopt($ch, CURLOPT_HEADER, 1);和var_dump(curl_getinfo($ch));- 您可能会收到零长度响应,或者 cURL 可能会遇到某种连接错误。 -
您
cURLing 的页面设置正确吗?只是我过去犯过很多次的愚蠢错误。 -
总是使用这个:error_reporting(E_ALL); ini_set("display_errors", 1);如果您不希望错误消息弄乱您的 HTML 结果,请将它们写入日志文件。
-
@Dereleased,它返回 bool(false) - @esqew,是的,它设置正确。 - @Stefan Pantke,
error_reporting(-1)相当于 E ALL,我将其输出到终端。 -
添加到 Stefan 的评论中,您可以通过将
register_shutdown_function()与error_get_last()结合来创建一个简单(但非常有用)的“调试器”脚本。