我想在我的网站上有一个电子邮件发送系统。
问题是当我尝试从我的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("[email protected]",$subject,$msg);
echo 'Email inviata.';
}
?>
要从您提交的表单中获取发布的数据,您可以使用$_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'];
}
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抛出错误。
看文档(http://php.net/manual/pt_BR/domdocument.getelementbyid.php)我找到了一个pontual观察:
“请注意,如果您的HTML不包含doctype声明,则getElementById将始终返回null。”
发布form.php的内容将有助于重新创建场景。