使用POST登录Yammer

时间:2011-08-07 21:20:41

标签: post curl yammer

我试图使用cURL登录Yammer。出于某种原因,我无法让网站接受密码。您可以尝试转到此网址https://www.yammer.com/login?login=username%40domain.com&password=password。有什么我做错了吗?用户名(登录)显示正常,但密码不会..

编辑:

这是我的代码

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie.txt");
curl_setopt($ch, CURLOPT_URL,"https://www.yammer.com/login");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "login=" . urlencode("user@domain.com") .   "&password=" . urlencode("password"));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64)      AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30");
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

ob_start();
curl_exec ($ch);
ob_end_clean();

curl_close ($ch);
unset($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookie.txt");
curl_setopt($ch, CURLOPT_URL,"https://www.yammer.com/");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64)     AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30");
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);

$buf2 = curl_exec ($ch);

curl_close ($ch);

echo $buf2;
?>

1 个答案:

答案 0 :(得分:1)

我看了一下Yammer登录页面的来源:

<form action="/session" id="login-form" method="post">
  <fieldset>
      <input class="initial-focus" id="login" name="login" tabindex="1" type="text" />
      <input id="password" name="password" tabindex="2" type="password" />
  </fieldset>

</form>

如您所见,登录表单的方法设置为“post”。您在问题中提供的URL将发出HTTP GET请求。为了在登录时模拟您的浏览器,您需要告诉Curl发出POST请求。

请参阅this question了解一些应该有用的选项 - 您也可以找到Curl的手册页。

编辑:感谢您提供额外信息。我再看一下页面源代码并发现可能导致问题的原因 - 表单中有另一个输入:

<input name="authenticity_token" type="hidden" value="YqY07+XHzPIoY9PBLhYIQy3uQstSCJqC79Vn5Ot/njw=" />

看起来您需要首先创建另一个Curl请求以检索该字段的值,然后将其添加到您提交的帖子字段中。