我一直在使用Bootstrap开发一个单页响应网站(来自youtube教程)。本教程一直到前端。现在我想处理我的联系我们表单,所以我添加了我在网上找到的PHP代码。
我觉得代码中的"echo"行有问题,有人能告诉我错误在哪里吗???很抱歉,如果这是一个基本问题!
HTML代码(含PHP代码):
<div class="col-lg-8">
<form class="form-horizontal" role="form" method="post" action="index.php">
<div class="form-group">
<label for="user-name" class="col-lg-2 control-label"> Name</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="user-name" id="user-name" placeholder="Enter your name">
<?php
echo $errName;?>
</div>
</div><!--end form-group-->
<div class="form-group">
<label for="user-email" class="col-lg-2 control-label"> Email</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="user-email" id="user-email" placeholder="Enter your Email Address">
<?php echo "<p class='text-danger'> $errEmail </p>";?>
</div>
</div><!--end form-group-->
<div class="form-group">
<label for="user-url" class="col-lg-2 control-label"> Your website</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="user-url" id="user-url" placeholder="If you have any">
</div>
</div><!--end form-group-->
<div class="form-group">
<label for="user-message" class="col-lg-2 control-label"> Any message</label>
<div class="col-lg-10">
<textarea name="user-message" id="user-message" class="form-control"
cols="20" rows="10" placeholder="Enter your Message"></textarea>
<?php echo "<p class='text-danger'> $errMessage </p>";?>
</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" name="submit">Submit</button>
</div>
</div>
<div class="form-group">
<div class="col-sm-10 col-sm-offset-2">
<?php echo $result; ?>
</div>
</div>
</form>
PHP代码:
<?php
$errName = '';
$errMessage = '';
$errEmail = '';
$result = '';
$submit = isset($_POST['submit']) ? $_POST['submit'] : NULL;
if (is_string($submit)) {
$name = $_POST['user-name'];
$email = $_POST['user-email'];
$url = $_POST['user-url'];
$message = $_POST['user-message'];
$from = 'Demo Contact Form';
$to = 'mahendran.vattekat@gmail.com';
$subject = 'Message from Contact Demo ';
$body = "From: $name'n E-Mail: $email'n URL: $url'n Message:'n $message";
// Check if name has been entered
if (!$_POST['user-name']) {
$errName = 'Please enter your name';
}
// Check if email has been entered and is valid
if (!$_POST['user-email'] || !filter_var($_POST['user-email'], FILTER_VALIDATE_EMAIL)) {
$errEmail = 'Please enter a valid email address';
}
//Check if message has been entered
if (!$_POST['user-message']) {
$errMessage = 'Please enter your message';
}
// If there are no errors, send the email
if (!$errName && !$errEmail && !$errMessage) {
if (mail ($to, $subject, $body, $from)) {
$result='<div class="alert alert-success">Thank You! I will be in touch</div>';
} else {
$result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later</div>';
}
}
}
?>
更新:好吧,这非常令人沮丧。我设置了一个本地服务器,得到了这些更新的代码,它们看起来像是一个单独的php文件。但是,当我尝试执行html+php文件(以及我的网站)和index.php文件时,它会变得疯狂,因为在按下提交按钮后,我只剩下一个空白页面。这非常令人沮丧,因为我的index.php和主php文件与XAMPP本地服务器htdocs文件夹位于同一文件夹中。
两个php文件不应该相互作用吗?为什么当我把它作为一个完整的网站使用时,错误检查代码不起作用???我还不断得到"注意:(主php文件)中的未定义变量,尽管我在同一文件夹中得到了index.php文件!
请帮忙。非常感谢。
快速浏览一下,我并没有看到问题,而是替换了这种代码:
<?php echo "<p class='text-danger'>$errEmail</p>";?>
通过这个:
<p class='text-danger'>
<?php echo $errEmail; ?>
</p>
可能会帮助您发现错误。看起来干净多了,不是吗?
您不需要使用echo打印HTML代码。不要使用PHP打印超出您的需要。
还将顶部的if更改为:
if ($_POST)
只是为了确保在您提交表单时输入条件(我不知道您是否有一个名称为"submit"的字段)
首先删除html中表单标记中的两个操作,并给出一个action="index.php"
我已经修复了您的脚本中的几个问题:
- 某些输入文件中缺少name="
- 重复操作="
- 添加了一些起始声明
- 通常使其工作现在轮到您根据自己的需要采用它
这个脚本是一个文件'index.php'将其上传到您的服务器上并实验/更改
<?php
$errName = '';
$errMessage = '';
$errEmail = '';
$result = '';
$submit = isset($_POST['submit']) ? $_POST['submit'] : NULL;
if (is_string($submit)) {
$name = $_POST['user-name'];
$email = $_POST['user-email'];
$url = $_POST['user-url'];
$message = $_POST['user-message'];
$from = 'Demo Contact Form';
$to = 'mahendran.vattekat@gmail.com';
$subject = 'Message from Contact Demo ';
$body = "From: $name'n E-Mail: $email'n URL: $url'n Message:'n $message";
// Check if name has been entered
if (!$_POST['user-name']) {
$errName = 'Please enter your name';
}
// Check if email has been entered and is valid
if (!$_POST['user-email'] || !filter_var($_POST['user-email'], FILTER_VALIDATE_EMAIL)) {
$errEmail = 'Please enter a valid email address';
}
//Check if message has been entered
if (!$_POST['user-message']) {
$errMessage = 'Please enter your message';
}
// If there are no errors, send the email
if (!$errName && !$errEmail && !$errMessage && !$errHuman) {
if (mail ($to, $subject, $body, $from)) {
$result='<div class="alert alert-success">Thank You! I will be in touch</div>';
} else {
$result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later</div>';
}
}
}
?>
<div class="col-lg-8">
<form class="form-horizontal" role="form" method="post" action="index.php">
<div class="form-group">
<label for="user-name" class="col-lg-2 control-label"> Name</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="user-name" id="user-name" placeholder="Enter your name">
<?php
echo $errName;?>
</div>
</div><!--end form-group-->
<div class="form-group">
<label for="user-email" class="col-lg-2 control-label"> Email</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="user-email" id="user-email" placeholder="Enter your Email Address">
<?php echo "<p class='text-danger'> $errEmail </p>";?>
</div>
</div><!--end form-group-->
<div class="form-group">
<label for="user-url" class="col-lg-2 control-label"> Your website</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="user-url" id="user-url" placeholder="If you have any">
</div>
</div><!--end form-group-->
<div class="form-group">
<label for="user-message" class="col-lg-2 control-label"> Any message</label>
<div class="col-lg-10">
<textarea name="user-message" id="user-message" class="form-control"
cols="20" rows="10" placeholder="Enter your Message"></textarea>
<?php echo "<p class='text-danger'> $errMessage </p>";?>
</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" name="submit">Submit</button>
</div>
</div>
<div class="form-group">
<div class="col-sm-10 col-sm-offset-2">
<?php echo $result; ?>
</div>
</div>
</form>
</div>