【发布时间】:2015-05-27 19:23:15
【问题描述】:
所以我正在为网站进行表单验证。
到目前为止,我所做的是在提交表单时,validate.php 检查电子邮件的格式是否正确。
如果是,它继续调用包含在validate.php 中的sendMail() 函数,该函数继续发送电子邮件,然后在 5 秒后将用户重定向回主页。 (这部分有效
如果不是,那就是我被卡住的地方。
我在这个阶段想要完成的是,以某种方式让 PHP 向当前页面 (contact.html) 发送一个脚本标签 <script> emailError(); </script> 并执行脚本,该脚本只是附加了一段说明电子邮件不正确的段落。然而,我 am 得到的是 validate.php 在 else 语句中有自己的错误,只是在空白页中说 Error (这是我不想要的,我把它放在那里看看验证是否正常工作)。
我试图在validate.php的else语句中添加这个(上面提到的脚本):
validate.php
<?php
include "mail.php";
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
sendMail();
}else {
echo("<script> emailError(); </script>");
}
?>
所以我希望它会做的是将它回显到执行 JavaScript 函数的页面中,但它不起作用,我想我知道为什么。
据我所知,PHP 会根据用户交互的请求(按下按钮、单击某物等)或页面加载时执行(如果我错了,请纠正我,仍在学习中)。
为了确保回显不起作用,我在使用表单时实时检查了页面,没有看到任何将脚本标记插入 HTML 的迹象。
在这一点上,我尝试了许多替代解决方案,我什至不知道从哪里开始。我真的可以使用一些帮助和任何提示来改进我的表单。
这是我正在处理的联系页面。随意尝试并亲自查看结果,但请不要发送垃圾邮件!
emailError.js
这就是我想用 PHP 在页面中回显的内容。
function emailError(){
var targetElement = document.getElementById("emailform");
var errorElement = document.createElement("P");
var errorMessage = document.createTextNode("Invalid Email");
errorElement.appendChild(errorMessage);
errorElement.setAttribute("id","error");
document.body.appendChild(errorElement);
}
contact.html
这只是contact.html 的一部分,显示我的表单。
<form action="validate.php" method="post" id="emailform">
<required>* - Required</required><br>
<name>Name:* <input type="text" name="name" id="name" required /></name><br>
<email>Email:* <input type="text" name="email" id="email" required /></email> <br>
<message>Message:*<br><textarea rows="5" name="message" id="message" maxlength="1000" required></textarea></message><br>
<submit><input type="submit" value="Send" name="send" id="send" /></submit>
</form>
我不是要求复制粘贴的东西,只是想把我推向正确的方向。
【问题讨论】:
-
为什么您没有在 javascript 中验证您的邮件?
-
因为您可以通过禁用 javaScript 轻松绕过它
-
如果您正在寻找强大的企业解决方案,请尝试使用 jquery 表单
标签: javascript php forms validation