PHP Curl登录不在Heroku上工作

时间:2015-05-29 21:02:49

标签: php curl heroku

我有一个简单的PHP脚本,可以登录到所需的网页。它在我的localhost(wamp服务器)上工作正常,但是当我在heroku上运行时,我得到这样的响应(链接:image link :) response

脚本很简单,就像那样:

<?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参数,因此脚本无效。

2 个答案:

答案 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。 无论如何,谢谢你。