我有一个表单页面,我需要收集所有输入数据并将其发送到我的电子邮件中。我该如何仅使用html,css,php或javascript?
这是页面的外观 https://www.dropbox.com/s/zjhqrldyprrofnl/FORM.PNG?dl=0
这是我的php代码
<?php
$DATE = $_POST['DATE'];
$TIME = $_POST['TIME'];
$NAME = $_POST['NAME'];
$formcontent="From: $NAME \n Message: $DATE and $TIME";
$recipient = "rickyj250@gmail.com";
$subject = "Contact Form";
$mailheader = "From: $NAME \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "<script type='text/javascript'>alert('The Rocco's Team will contact
you soon!')</script>";
?>
我尝试了不同类型的get和action方法,但到目前为止还没有运气。
这是HTML代码
<div class="tab-pane fade show active" id="submit" role="tabpanel" aria-labelledby="submit-tab">
<div class="card-body text-center">
<br>
<h5 class="card-title"><u> DATE & TIME </u></h5>
<h7>Order ready by:</h7>
<form method="post" action="form.php">
<div class=" container form-group">
<div class="col-12">
<input class="form-control" type="date" value="2012-12-12" id="DATE">
</div>
<div class="col-12">
<input class="form-control" type="time" value="13:45:00" id="TIME">
</div>
</div>
<h5 class="card-title"><u>ENTER INFO</u></h5>
<div class="container">
<div class="row" style="justify-content: center;">
<div class="input-group col-12">
<div class="input-group-prepend">
<span class="input-group-text" id="NAME">First & Last Name</span>
</div>
<input type="text" class="form-control">
<input type="text" class="form-control">
</div>
<div class="container">
<div class="row">
<div class="input-group col-12">
<div class="input-group-prepend">
<span class="input-group-text" id="EMAIL">Email</span>
</div>
<input type="text" class="form-control" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
</div>
</div>
<div class="input-group col-12">
<div class="input-group-prepend">
<span class="input-group-text">Phone Number</span>
</div>
<input class="form-control" type="tel" value="1-(555)-555-5555" id="PHONE">
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="form-group col-12"><br>
<h5 class="card-title"><u>ENTER YOUR ORDER</u></h5>
<textarea class="form-control" placeholder="# of pizzas and toppings Type of pasta and sauce Full or Half Orders ETC.." id="ORDER" rows="5"></textarea>
</div>
</form>
</div>
</div>
<div class="container">
<button type="button" class="btn btn-secondary btn-lg btn-block">Reset</button>
<button type="submit" class="btn btn-primary btn-lg btn-block">Submit</button>
</div>
<br>
</div> <!-- END OF SUBMIT CARD BODY-->
</div><!-- END OF SUBMIT FORM-->
我希望将表单数据格式化为有序的电子邮件。
答案 0 :(得分:2)
首先,您使用了太多的表单元素!
(请参见this stack overflow post)。
使用一个带有整个表单界面(文本区域和按钮)的表单标签。
此外,将type="submit"
添加到“提交”按钮。
您还必须在PHP代码中添加另一行,以获取“ ORDER” textareas值。
$ORDER = $_POST['ORDER'];
然后您可以根据需要将其添加到电子邮件中。但是还需要考虑一件事:此表单非常脆弱且危险!
您正在直接从用户(可能是恶意黑客)那里获取输入,并将其直接输入到您的电子邮件中。这不好!即使是经验不足的黑客也可以利用此漏洞,然后将恶意代码键入“ DATE”字段(或任何其他字段)并提交。当您打开电子邮件时,w!他的代码被执行,黑客对您的计算机进行了恶行。请仔细阅读输入法/ HTML character escaping for PHP。您应该最终用$DATE
包装POST
和其他从htmlspecialchars()
获取的PHP变量。
例如:。
$ORDER = htmlspecialchars($_POST['ORDER']);
现在,黑客无法将恶意代码放入您的ORDER字段中,因为当您在计算机上打开电子邮件时,恶意代码将被逃逸并且不会执行。
W3Schools has an alright explanation about handling input securely from forms.
也正如您所指出的,您需要在输入字段中使用name
而不是id
(我也很想念它,哎呀)。
此外,make sure that your webserver has mail sending capability。并非每个服务器都具有该功能。