2016-09-14 48 views
0

我正在尝试使用PHP脚本和cURL在网站http://www.discogs.com上登录。如何使用PHP curl(或其他)登录Discogs.com?

我需要那个从https://www.discogs.com/sell/mywants?ev=wsim获取数据 - 这是一个项目添加到希望列表的优惠清单。从我发现这个列表在API中不可用。

我使用标准cURL请求登录时遇到问题。这里是我的代码:

$username = 'myuser'; 
$password = 'mypassword'; 
$loginUrl = 'https://www.discogs.com/login'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $loginUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username='.urlencode($username).'&password='.urlencode($password)); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'c:\cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'c:\tmp.txt'); 
curl_setopt($ch, CURLOPT_COOKIESESSION, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36'); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_exec($ch); 

if (curl_error($ch)) { 
    echo curl_error($ch); 
    return; 
} else { 
    echo "OK"; 
} 

curl_setopt($ch, CURLOPT_URL, 'https://www.discogs.com/sell/mywants?ev=wsim'); 
$content = curl_exec($ch); 

echo $content; 

curl_close($ch); 

因此,我得到的登录页面,而不是网页与列出的优惠。

你能告诉我我做错了什么吗?

回答

1

正如我测试,登录页面需要发布另一个字段,即Action.Login为了使登录请求有效。

curl_setopt($ch, CURLOPT_POSTFIELDS, 'username='.urlencode($username).'&password='.urlencode($password).'&Action.Login='); 

希望这会有所帮助。

+0

太棒了! :)现在它的工作!感谢您的帮助。 – user3626048