Greetings StacksOverFlow Devs,
我试图弄清楚为什么当我尝试回复它时网站上隐藏的输入值没有出现,我使用preg_match_all并将隐藏值POST。
我想同时回应两者,但这是我的问题,因为它没有出现。
这是我的代码:
<?php
function get_data($url)
{
$ch = curl_init();
$timeout = 10;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$returned_content = get_data('https://secure.tesco.com/account/en-GB/login');
$container = $returned_content;
preg_match_all('(<form\s.*</form>)', $container, $forms);
print_r($forms);
$_POST['_csrf'] = $csrf;
$_POST['state'] = $state;
echo "<font color=red><b>CSRF</b></font> : ".$csrf."<br/>";
echo "<font color=red><b>STATE</b></font> : ".$state."<br/>";
?>
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
Xpath是尝试这个的方法!
$dom = new \DOMDocument();
@$dom->loadHTML($container);
$x = new \DOMXPath($dom);
echo $_csrf = $x->query('//input[@name="_csrf"]')->item(0)->getAttribute('value');
echo $state = $x->query('//input[@name="state"]')->item(0)->getAttribute('value');