我正在尝试通过PHP自动检测HTML文件中的所有POST值。例如,当您查看包含表单的网站的来源时,您会看到如下内容:
<form id="someForm" action="register.php" method="post">
Name:
<input type="text" name="username"><br> <!-- a post value "username" -->
Email:
<input type="text" name="email"><br> <!-- a post value "email" -->
Password:
<input type="password" name="password"><br> <!-- a post value "password" -->
<input type="submit" value="Submit"> <!-- submit button -->
</form>
所以我想写一个PHP脚本,它自动检测HTML文件中找到的所有POST值,并将它们分类到一个数组中。
我想我会用一些类似的东西开始:
<?
$file = file_get_contents("http://example.example/register.html");
?>
我需要在$file
变量中搜索所有出现的“name =”,然后获取引号之间的单词。之后,将引号之间找到的文本排序为数组。
我想自动检测HTML中提供的POST信息,并有一个PHP脚本,然后将这些值发布到该表单。
我不知道我将使用哪种功能或如何使用,所以我在这里问。示例代码非常受欢迎。感谢。
答案 0 :(得分:1)
您可以将HTML加载到DOMDocument并使用DOMXPath查询它以专门查找名称属性。
例如:
$file = file_get_contents('url');
$dom = new DOMDocument;
$dom->loadHTML($file);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//@name'); //Find /all/ name attributes everywhere.
foreach ($nodes as $node) {
echo "$node->value\n";
}
请记住,正如评论者所暗示的那样,除了输入之外,元素上可以有名称属性,并且表格中的输入可以使用除post之外的方法。相应地修改您的XPath查询('// input [@name]'查找具有name属性的所有输入,然后使用$node->getAttribute('name')
而不是$node->value
。
答案 1 :(得分:0)
您是否只想尝试自动化表单?你也可以这样做:
foreach($_POST as $key => $value)
{
echo $key . ": " . $value . "<br />";
}
答案 2 :(得分:0)
你能做到吗
<input type="hidden" name="username_post" value="<?php if (isset($_POST['username'])) { echo $_POST['username']; } ?>" />
所有评论的位置?
然后你可以在文档中循环显示具有此值的隐藏字段吗?我不确定你在做什么,但你确定这些值会通过file_get_contents来实现吗?
另外 - 确保您的操作设置为当前页面