在null上调用成员函数getNamedItem()

时间:2015-03-09 09:38:17

标签: php curl

我试图制作一个可以让人们需要工作的工具。使用CSRF令牌保护登录,因此我需要先登录才能登录。

这是我目前正在使用的剧本:

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

  $username = "jules.kreutzer";
  $password = "jules";
  $url = "planner.a-mac.nl";
  $cookie= "koekje.txt";
  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/'.$cookie);
  curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/'.$cookie);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $response = curl_exec($ch);

  if (curl_errno($ch)) die(curl_error($ch));
  $doc = new DOMDocument();
  $doc->loadHTML("http://planner.a-mac.nl");
  $token = $doc->getElementByID("signin__csrf_token")->attributes->getNamedItem("value")->value;
  print_r($token);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  curl_setopt($ch, CURLOPT_POST, true);

  $params = array(
    'signin[username]' => $username,
    'signin[password]' => $password,
    'signin[_csrf_token]' => $token
  );
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));

  curl_exec($ch);

  if (curl_errno($ch)) print curl_error($ch);
  curl_close($ch);
?>

当我在我的webbrowser中加载此代码时,我收到以下错误:

  

注意:尝试获取非对象的属性   第22行/Applications/MAMP/htdocs/test.php

     

致命错误:在null中调用成员函数getNamedItem()   第22行/Applications/MAMP/htdocs/test.php

第22行是:

  $token = $doc->getElementByID("signin__csrf_token")->attributes->getNamedItem("value")->value;

我希望有人可以帮助我获取令牌,以便我可以将其用于登录。

1 个答案:

答案 0 :(得分:0)

你错误拼写了getElementById:

变化:

$token = $doc->getElementByID("signin__csrf_token")->attributes->getNamedItem("value")->value;

为:

$token = $doc->getElementById("signin__csrf_token")->attributes->getNamedItem("value")->value;