为什么PHP代码出现在我的联系人表单上


Why is PHP code showing up on my contact form?

我一直在使用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>