【问题标题】:Detecting post values in the HTML source code a file检测 HTML 源代码文件中的 post 值
【发布时间】:2011-05-03 03:43:49
【问题描述】:

我正在尝试创建一个通过 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 脚本,然后将这些值发布到该表单。

我不知道我会为此使用哪个功能或如何使用,所以我在这里问。示例代码非常感谢。谢谢。

【问题讨论】:

    标签: php html post detect file-get-contents


    【解决方案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-&gt;getAttribute('name') 而不是 $node-&gt;value

    【讨论】:

    • XPath 查询类似于//form[@method="post"]/*[@name]
    • 可以举个例子吗?
    【解决方案2】:

    您只是想自动化您的表单吗?你也可以这样做:

    foreach($_POST as $key => $value)
    {
        echo $key . ": " . $value . "<br />";
    }
    

    【讨论】:

    • 我想自动检测 HTML 中提供的 POST 信息,并有一个 PHP 脚本,然后将这些值发布到该表单。
    【解决方案3】:

    你做不到

    <input type="hidden" name="username_post" value="<?php if (isset($_POST['username'])) { echo $_POST['username']; } ?>" />
    

    对于您评论的所有地点?

    那么你可以循环遍历文档中具有该值的隐藏字段吗?我不确定你在做什么,但你确定这些值会通过 file_get_contents 获得吗?

    另外 -- 确保您的操作设置为当前页面

    【讨论】:

    • 当他说“发布值”时,他的意思是“表单输入”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多