我正在试着解决我的联系人表格中的一个错误.我在第24行得到未定义变量$errEmail,在第22行得到$errMessage.据我所知,这两个变量都是定义的.我的联系人表单可以正常工作,而不是这些错误.错误发生在用户提交联系人表单之后.以下是我的代码.我刚把$to改成了example@example.com,以隐藏我的邮箱.

<?php
    
if (isset($_POST["submit"])) {
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Contact Form';
    $to = 'example@example.com';
    $subject = 'Message from Contact';

    $body = " E-Mail: $email\n Message:\n $message";

    // Check if email has been entered and is valid
    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errEmail = 'Please enter a valid email address';
    }

    // Check if message has been entered
    if (empty($message)) {
        $errMessage = 'Please enter your message';
    }

    // If there are no errors, send the email
    if (!$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>';
        }
    }
}
?>

<div class="container">
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            <h1 class="page-header text-center">Contact Us</h1>
            <form class="form-horizontal" role="form" method="post">
                <div class="form-group">
                    <label for="email" class="col-sm-2 control-label">Email</label>
                    <div class="col-sm-10">
                        <input type="email" class="form-control" id="email" name="email" placeholder="example@domain.com">
                        <?php if (isset($errEmail)) {
                            echo "<p class='text-danger'>$errEmail</p>";
                        }?>
                    </div>
                </div>
                <div class="form-group">
                    <label for="message" class="col-sm-2 control-label">Message</label>
                    <div class="col-sm-10">
                        <textarea class="form-control" rows="4" name="message"></textarea>

                        <?php if (isset($errMessage)) {
                            echo "<p class='text-danger'>$errMessage</p>";
                        }?>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-10 col-sm-offset-2">
                        <input id="submit" name="submit" type="submit" value="Send" class="btn btn-primary">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-10 col-sm-offset-2">
                        <?php if (isset($result)) {
                            echo $result;
                        } ?>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
</body>
</html>

我判断了第22行,看到变量在第13行和第18行定义.

推荐答案

您应该在IF条件之前将$errEmail$errMessage初始化为空字符串.这确保始终定义这些变量,而不管是否满足if个条件.

$errEmail = '';
$errMessage = '';

if (isset($_POST["submit"])) {
    // Your existing code...

    // If there are no errors, send the email
    if ($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相关问答推荐

无法使用PHP DomDocument找到IMG元素

如何在Livewire中验证多个 Select 字段

允许Laravel路由指定`withTrashed`,尽管有显式的模型绑定

MULTI UPDATE Laravel为什么只能更新我的第一行

PHP空数组定义与开始或结束逗号

根据选定的字段值显示或隐藏WooCommerce注册字段

这是在可召回的背景下吗?

如何在Livewire 3 Form类中做依赖注入?

在Laravel中从动态嵌套数组中获取值

获取作者';在WordPress中使用PHP

可以';exec、system和shell_exec PHP函数中的命令字符串上的字符数不得超过8175

批量更新 WooCommerce 中所有产品的特定自定义字段

Laravel 10 中的自定义类未找到

如何设置Mailersend PHP API 模板变量?

自定义错误页面不适用于 Apache 和 nginx 设置的 .htaccess

我需要获取传递到这个数组中的数据,但我没有得到它,因为在 Laravel 中数组是这样出现的

在 DomPDF 和 Laravel 中使用内联 css

基于其他数组创建多维数组 struct

PHP获取根据辞职日期自动续订的合同终止日期

将加密/解密函数从 PHP 转换为 NodeJS