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

Php 在null上调用成员函数getNamedItem(),php,curl,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";

我正在尝试制作一种工具,它能让人们有足够的时间工作。登录使用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);
?>

我希望有人能帮我获取令牌,这样我就可以使用它进行登录。

您拼错了getElementById:

更改:

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


不,这不会改变任何事情。我仍然收到了相同的错误。请确保有id正好为此值的元素:
signin\uu csrf\u token
我收到了,这是登录屏幕所在网站的一些代码:
您是如何得到错误的,我只收到了错误消息我在Firebug的控制台中看到了它
$token = $doc->getElementByID("signin__csrf_token")->attributes->getNamedItem("value")->value;
$token = $doc->getElementById("signin__csrf_token")->attributes->getNamedItem("value")->value;