title: Login with PHP curl and CSRF token
body: <p>I want login from a PHP script to another website but I always get this reply:</p>
  
  <pre><code>403 Error: CSRF token mismatch
  </code></pre>
  
  <p>I extract the CSRF token from a hidden field on website but it seems it is wrong. This is my code:</p>
  
  <pre><code>$username = "testuser";
  $password = "testpass";
  
  $path = "c:\\test\\";
  $url="http://itw.me/login";
  
  $field='_csrf';
  $html=file_get_contents( $url );
  
  libxml_use_internal_errors( true );
  $dom=new DOMDocument;
  $dom-&gt;validateOnParse=false;
  $dom-&gt;recover=true;
  $dom-&gt;formatOutput=false;
  $dom-&gt;loadHTML( $html );
  libxml_clear_errors();
  $xpath=new DOMXPath( $dom );
  $col=$xpath-&gt;query('//input[@name="'.$field.'"]');
  foreach( $col as $node ) $csrftoken=$node-&gt;getAttribute('value');
  echo "-".$csrftoken."-";
  
  $postinfo = "email=".$username."&amp;password=".$password."&amp;_csrf=".$csrftoken;
  $cookie_file_path = $path."/cookie.txt";
  
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_NOBODY, false);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
  curl_setopt($ch, CURLOPT_COOKIE, "cookiename=0");
  curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
  curl_exec($ch);
  
  curl_setopt($ch, CURLOPT_URL, "http://itw.me");
  $html = curl_exec($ch);
  print($html);
  curl_close($ch);
  </code></pre>