0

我正在尝试使用 cURL 登录 Yammer。出于某种原因,我无法让网站接受密码。您可以通过访问此 URL 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;
?>
4

1 回答 1

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 请求。

请参阅此问题以了解一些应该起作用的选项 - 您可能还会发现 Curl 的手册页很有用。

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

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

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

于 2011-08-07T21:37:04.877 回答