我有一个简单的PHP脚本,可以登录到所需的网页。它在我的localhost(wamp服务器)上工作正常,但是当我在heroku上运行时,我得到这样的响应(链接:image link :)
脚本很简单,就像那样:
<?php
$username = "username";
$password = "password";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "url");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array( 'user[username]'=>$username, 'user[password]'=>$password)));
curl_setopt ($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$content = curl_exec($ch);
echo $content;
?>
我不知道我做错了什么。是不是heroku有问题,或者只是运气,我的wamp服务器上的代码工作正常?我也尝试在其他免费托管页面上运行此脚本,但它们不支持CURLOPT_FOLLOWLOCATION参数,因此脚本无效。
答案 0 :(得分:0)
您在页面顶部看到的文字是您请求的标题:
curl_setopt ($ch, CURLOPT_HEADER, true);
此外,使用CURLOPT_POST
时隐含CURLOPT_POSTFIELDS
,不需要它。
您的代码应该类似于:
<?php
$username = "username";
$password = "password";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.yoursite.com");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array( 'user[username]'=>$username, 'user[password]'=>$password)));
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$content = curl_exec($ch);
echo $content;
答案 1 :(得分:-1)
看起来我要发布的那个页面,有国家限制的IP。 无论如何,谢谢你。