提交表单需要两个隐藏字段。 .... =随机字符串;
此表格需要远程提交。我更喜欢用cURL来做这件事,但我似乎无法提取隐藏字段的值来提交帖子数据。我尝试了很多东西,比如;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://example.com/");
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, true);
// curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$curl=curl_exec($ch);
$slash = preg_match('/<input type="hidden" id="CSRFNAME" value="(.*?)"/',$curl, $batch);
$dash = preg_match('/<input type="hidden" id="CSRFTOKEN" value="(.*?)"/',$curl, $match);
//echo $batch."-".$match;
var_dump($batch);
echo "=";
var_dump($match);
^这^没有返回任何值。这也是尝试过......
$bling = preg_match_all('/<input type="hidden"\s*id="([^"]*)"\s*value="([^"]*)"/i',
$curl,$matches);
//var_dump($matches);
^这^也没有返回任何值。
尝试DOMDocument时,使用以下代码返回所需的值...
$doc->loadHTMLFile('http://www.example.com/');
$CSRFN = $doc->getElementById('CSRFNAME')->getAttribute('value');
$CSRFT = $doc->getElementById('CSRFTOKEN')->getAttribute('value');
echo $CSRFN;
echo "=";
echo $CSRFT;
^这会返回值,但是当使用cURL中的值时,似乎它不起作用,因为cURL需要在发布帖子时给出的正确值,并且每次加载页面时值都会更改。我的问题是,有没有办法用loadHTMLFile文件用DOM或其他方法提交帖子数据?有没有办法可以保存给定的文件并将其放在CURLOPT_URL中,还是只是不能像那样工作?也许这个值必须来自CURLOPT_POSTFIELDS所做的同一个调用,如果有的话,这样做的正确方法是什么?就这一点而言,我有点失落,任何方向都会受到高度赞赏。
答案 0 :(得分:0)
您的网址中包含https://
。这意味着它需要ssl事情。因此,请使用此代码来处理此问题。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
也从你的卷曲中移除这一行(如果你只做GET
请求)。
curl_setopt($ch, CURLOPT_POST, true);
此外,您可以通过启用详细选项来检查您的卷曲操作。
curl_setopt($ch, CURLOPT_VERBOSE, true);