繁体   English   中英

在加载的DOMDocument或curl中提交POST数据,并使用相同值的随机隐藏字段值

[英]Submitting POST data in loaded DOMDocument or curl with same value of random hidden field value

提交表单需要两个隐藏字段。 .... =随机字符串;

该表格需要远程提交。 我宁愿使用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需要发布时给出的正确值,并且每次加载页面时该值都会改变。 我的问题是,有什么方法可以通过带有DOM或其​​他方式的loadHTMLFile文档提交帖子数据? 有没有一种方法可以保存给定的文件并将其放在CURLOPT_URL中,还是不能那样工作? 也许值必须从CURLOPT_POSTFIELDS进行的同一调用中派生,如果是的话,执行此操作的正确方法是什么? 就此而言,我有点迷茫,任何方向都将不胜感激。

您的网址中带有https:// 这意味着它需要SSL来完成。 因此,请使用此代码进行处理。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

也从卷曲中删除此行(如果仅执行GET请求)。

curl_setopt($ch, CURLOPT_POST, true);

此外,您可以通过启用详细选项来检查卷曲操作。

curl_setopt($ch, CURLOPT_VERBOSE, true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM