首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用PHP cURL登录远程站点

用PHP cURL登录远程站点
EN

Stack Overflow用户
提问于 2010-06-10 02:42:22
回答 2查看 193.3K关注 0票数 62

我刚开始使用cURL,很难为它找到好的资源。我要做的是登录到一个远程站点,让curl完成登录表单,然后返回成功。

我的代码似乎不工作,只尝试显示网站的主页。

代码语言:javascript
复制
    $username="mylogin@gmail.com"; 
$password="mypassword"; 
$url="http://www.myremotesite.com/index.php?page=login"; 
$cookie="cookie.txt"; 

$postdata = "email=".$username."&password=".$password; 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 

echo $result;  
curl_close($ch);

我做错了什么。这是工作后,我想重定向到另一个页面,并从我的网站获取内容。

EN

回答 2

Stack Overflow用户

发布于 2010-06-10 05:34:52

查看登录页面的源代码。查找form HTML标记。在该标记内有一些类似action=内容,使用该值作为$url,而不是表单本身的URL。

此外,当您在那里时,验证输入框的名称是否与您列出的名称相同。

例如,基本登录表单将类似于:

代码语言:javascript
复制
<form method='post' action='postlogin.php'>
    Email Address: <input type='text' name='email'>
    Password: <input type='password' name='password'>
</form>

以上面的表单为例,将$url的值更改为:

代码语言:javascript
复制
$url="http://www.myremotesite.com/postlogin.php";

验证您在$postdata中列出的值

代码语言:javascript
复制
$postdata = "email=".$username."&password=".$password;

而且它应该工作得很好。

票数 18
EN

Stack Overflow用户

发布于 2014-03-06 15:30:12

这就是我在ImpressPages中解决这个问题的方法:

代码语言:javascript
复制
//initial request with login data

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/login.php');
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_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=XXXXX&password=XXXXX");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie-name');  //could be empty, but cause problems on some hosts
curl_setopt($ch, CURLOPT_COOKIEFILE, '/var/www/ip4.x/file/tmp');  //could be empty, but cause problems on some hosts
$answer = curl_exec($ch);
if (curl_error($ch)) {
    echo curl_error($ch);
}

//another request preserving the session

curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/profile');
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
$answer = curl_exec($ch);
if (curl_error($ch)) {
    echo curl_error($ch);
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3008817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档