php - 如果输入为空,则不发送表单消息

标签 php forms validation contact-form

我的 contact.php 确实有一点问题:(

我的页面需要一个联系表格(非常简单,只有姓名、电子邮件和消息)。 它工作得很好,但即使输入为空它也会发送消息。我的输入确实有“必需”,但它似乎不起作用。我的 php 技能不是很好。但你很清楚问题出在哪里。

如果有空字段,表单不应发送消息并显示警报。

我当前的代码:

HTML

    <form method="post" id="myform" action="contact.php">
        <div class="field half first">
            <label for="name">Ihr Name</label>
            <input type="text" name="name" id="name" required="required">
        </div>
        <div class="field half">
            <label for="email">Ihre E-Mail</label>
            <input type="text" name="email" id="email" required="required">
        </div>
        <div class="field">
            <label for="message">Ihre Nachricht</label>
            <textarea name="message" id="message" rows="5" required="required"></textarea>
        </div>
        <ul class="actions">
            <li>
                <a href="" class="button submit">Senden</a>
            </li>
        </ul>
    </form>

contact.php

<?php 
$field_name = $_POST['name'];
$field_email = $_POST['email'];
$field_message = $_POST['message'];

$mail_to = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2449454d48644349454d480a474b49" rel="noreferrer noopener nofollow">[email protected]</a>';
$subject = 'Nachricht von '.$field_name;

$body_message = 'Von: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Nachricht: '.$field_message;

$headers = 'Von: '.$field_email."\r\n";
$headers .= 'Antworte an: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Ich bedanke mich für Ihre Nachricht. Bald werde ich Sie kontaktieren./ Thank you for your message.');
    window.location = 'http://';
    </script>
    <?php
     }
else { ?>
     <script language="javascript" type="text/javascript">
        alert('Senden fehlgeschlagen./ Could not send the message');
    window.location = 'http://';
     </script>
<?php
}
?>

有什么想法,如何解决这个小问题吗? :(

最佳答案

我认为,如果您的目标是防止某人发送空白消息/联系人,只需在输入标记末尾使用“required”,如下所示:

<input type="text" name="something" required/>

或者在你的情况下,应该是这样的:

<form method="post" id="myform" action="contact.php">
        <div class="field half first">
            <label for="name">Ihr Name</label>
            <input type="text" name="name" id="name" required>
        </div>
        <div class="field half">
            <label for="email">Ihre E-Mail</label>
            <input type="text" name="email" id="email" required>
        </div>
        <div class="field">
            <label for="message">Ihre Nachricht</label>
            <textarea name="message" id="message" rows="5" required></textarea>
        </div>
        <ul class="actions">
            <li>
                <a href="" class="button submit">Senden</a>
            </li>
        </ul>
    </form>

“required”是一个简单的 html5 标签属性,可帮助您防止有人发送空白表单。我希望它对你有用,确保你正在使用 html5。

关于php - 如果输入为空,则不发送表单消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36334949/

相关文章:

php - Laravel action() 帮助程序忽略 APP_URL 环境变量

php - 在 PHP_FUNCTION() C++ 中更改返回字符串的大小写

javascript - 如何使用输入值在 HTML 上书写?

java - ZK自定义验证风格

javascript - 如何在通过 Ajax 生成表单后显示验证

html - 验证 CSS - 背景重复问题

php - AsyncTask Android 中的 Http 请求

php - WordPress 本地主机 ftp

ruby-on-rails - 带有命名空间模型名称的 Rails form_for

javascript - 使用Vue从表单提交中获取输入字段值