我正在创建一个网站,我的一个功能,即联系表单,需要最后一点调整才能真正成功。由于youtube上的精彩视频,我可以通过SMTP发送电子邮件。但另一个教程(由同一个上传者)已经展示了如何验证电子邮件地址并且我有代码,但是当我将它与我的index.php文件一起使用时,它似乎不起作用。
通过似乎不起作用,我的意思是点击提交后没有显示验证(这是根据视频应该发生的事情。)我需要帮助知道在哪里放置FILTER_VALIDATE php位代码,在我的index.php中。
我不确定github链接是否在这里受欢迎,但这里是我的github,
https://github.com/orangelimester/Project3.git
这些是我正在谈论的联系表单的文件。它发送电子邮件没问题(如下面的感谢屏幕所示。)
以下是联系表格的html:index.php
<?php
session_start();
require_once 'security.php';
$errors = isset($_SESSION['errors']) ? $_SESSION['errors'] : [];
$fields = isset($_SESSION['fields']) ? $_SESSION['fields'] : [];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable = no">
<title>Contact</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/custom.css" rel="stylesheet">
</head>
<body>
<div class="container alt3">
<div class="page-header" id="contact">
<h2>Contact us<small> Contact us for more!</small></h2>
</div><!--end page header-->
<div class="col-lg-8">
<?php if(!empty($errors)): ?>
<div class = "panel">
<ul>
<li> <?php echo implode('</li><li>', $errors); ?></li>
</ul>
</div>
<?php endif; ?>
<?php
if (isset($_POST['email']) == true && empty($_POST['email']) == false) {
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL) == true) {
echo 'That\'s a valid email address';
} else {
echo 'Not a valid email address';
}
}
?>
<form action="contact.php" class="form-horizontal" method="post">
<div class="form-group">
<label for ="name" class="col-lg-2 control-label">
Name</label>
<div class="col-lg-10">
<input type="text" name = "name" class="form-control" id="name" placeholder="Enter your name" <?php echo isset($fields['name']) ? 'value ="' . e($fields['name']). '"' : '' ?>>
</div>
</div><!--end form-group-->
<div class="form-group">
<label for="email" class="col-lg-2 control-label"> Email</label>
<div class="col-lg-10">
<input type="text" name = "email" class="form-control" id="email" placeholder="Enter your Email Address" <?php echo isset($fields['email']) ? 'value ="' . e($fields['email']). '"' : '' ?>>
</div>
</div><!--end form-group-->
<div class="form-group">
<label for="message" class="col-lg-2 control-label"> Any message</label>
<div class="col-lg-10">
<textarea name="message" id="message" class="form-control"
cols="20" rows="10" placeholder="Enter your Message"><?php echo isset($fields['message']) ? e($fields['message']). '"' : '' ?></textarea>
</div>
</div><!--end form-group-->
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
</div>
</body>
</html>
<?php
unset($_SESSION['errors']);
?>
下面是contact.php,工作得很好!
这是index.php中的“FILTER_VALIDATE”php位我相信这不起作用。在他的视频教程中,它应该显示电子邮件地址在提交时是否有效,但在我的情况下,它只是不断发送电子邮件。
请帮忙。
谢谢。很明显,我是php的新手,我只是为了一个重要的活动,为了未来的广告目的这样做,这里的几个问题很难理解,因为要么他们不回答我的问题,要么问题本身是一个完全不同的代码,我不需要这个基本的联系表格。
答案 0 :(得分:0)
似乎缺少结尾</from>
标记。
答案 1 :(得分:-1)
您的form
操作标记指向contact.php
文件。
您应该验证电子邮件那里,而不是index.php
页面。
所以,你有
if (isset($_POST['name'], $_POST['email'], $_POST['message'])) {
// right now check the email. If it's ok - keep on, if not add to $errors some message