如何在PHP中通过id获取元素?

问题描述 投票:0回答:3

我想在我的网站上有一个电子邮件发送系统。

问题是当我尝试从我的HTML文件中分配变量文本时,它不会发生。我希望变量中的内容应该写在电子邮件的消息中。这是我的代码:

<html>
    <?php include('form.php'); ?>
    <head>

    </head>

    <body>
        <form action="./form.php" method="post">
        <div name="name"><input type="text" id="name"></div>
        <div name="surname"><input type="text" id="surname"></div>
        <div name="message"><textarea rows="4" cols="50" id="message">Inserisci qui il tuo testo.</textarea></div>
        <div name="subject"><select id="subject">
            <option selected="selected">--Inserisci Oggetto--</option>
            <option>Registrazione al sito</option>
            <option>Recupero credenziali</option>
        </select></div>
        <input type="submit" value="Invia penzolini"/>
        <input type="hidden" name="button_pressed" value="1" />
        </form>
    </body>
</html>

        <?php

    $dochtml = new domDocument();
    $dochtml->loadHTML('index.html');

    if(isset($_POST['button_pressed']))
    {

    //prendi nome
    $name = $dochtml->getElementById('name');

    //prendi cognome
    $surname = $dochtml->getElementById('surname');

    //prendi l'oggetto della mail
    $subject = $dochtml->getElementById('subject');

    //msg<70 caratteri
    $msg = "Inviato da" . ' ' . $name . $surname . ' ' . $dochtml->getElementById('message'); // /n=spazio  

    // manda mail
    mail("panzersit@gmail.com",$subject,$msg);
    echo 'Email inviata.';
    }
    ?>
php
3个回答
-2
投票

要从您提交的表单中获取发布的数据,您可以使用$_POST['fieldname']来完成

只需尝试如下,看看表单提交后你得到了什么。

//echo "<pre>";
//print_r($_POST);

取消注释2行,看看你得到了什么并再次评论。

if( isset($_POST['name']) )
{
    $name = $_POST['name'];
}
if( isset($_POST['surname']) )
{
    $surname = $_POST['surname'];
}
if( isset($_POST['subject']) )
{
    $subject = $_POST['subject'];
}

4
投票

PHP无法直接访问您的DOM。 PHP仅运行服务器,并以简单的术语接受请求并给出响应。

将此表单提交到其操作页面./form.php后,输入表单的值将以$_POST属性命名的密钥存储在name中。在HTML代码中,将name属性添加到输入标记,如下所示:

<form action="./form.php" method="post">
    <div name="name"><input type="text" name="name"></div>
    <div name="surname"><input type="text" name="surname"></div>
</form>

现在,如果我提交此表单并为name输入标记输入Zachary,为surname输入标记输入Taylor,我可以像这样获取这些值:

./form.php文件中:

$name = $_POST['name']; // "Zachary"

$surname = $_POST['surname']; // "Taylor"

要验证是否首先输入了任何内容,请使用:isset($_POST['key']),因为具有空值的SOMETIMES输入值甚至不会发送到操作页面。如果引用不存在的$ _POST键,这可以防止PHP抛出错误。


-1
投票

看文档(http://php.net/manual/pt_BR/domdocument.getelementbyid.php)我找到了一个pontual观察:

“请注意,如果您的HTML不包含doctype声明,则getElementById将始终返回null。”

发布form.php的内容将有助于重新创建场景。

热门问题
推荐问题
最新问题