【问题标题】:Form error messages not working properly, form wont submit表单错误消息无法正常工作,表单不会提交
【发布时间】:2012-01-25 23:18:57
【问题描述】:

我对表单验证和处理还很陌生,事实上,这是我的第一次尝试,我创建了一个简单的联系表单,其中包含必填文本字段、cmets 文本区域和两个单选按钮。我已经阅读了许多基本的教程,并使用 PHP 编写了脚本。我遇到的问题是,如果表单未填写,当我单击提交时,我会被定向到一个新页面,该页面有一条错误消息,提示我需要填写我的姓名。但是,如果我填写我的姓名并单击提交,我会收到相同的消息,而不是为下一个字段指定的错误消息。当所有字段都被归档时,我什至会收到该消息。这是我的代码:

    <?php
    $myemail  = "ysjostar072@gmail.com";

    $name = check_input($_POST['name'], "Enter your name");
    $company = check_input($_POST['company'], "Enter your company name");
    $function = check_input($_POST['function'], "Provide an occassion");
    $address = check_input($_POST['address'], "Enter your address");
    $place = check_input($_POST['place'], "Enter your area code");
    $number = check_input($_POST['number'], "Enter your number");
    $mobile = check_input($_POST['mobile'], "Enter your mobile number");
    $email = check_input($_POST['email'], "Enter a valid E-Mail address");
    $client = check_input($_POST['client'], "Are you a client already? Please let us know");
    $method = check_input($_POST['method'], "Choose your preferred method of contact");
    $message = check_input($_POST['message'], "Enter your comments or description");
    $date = check_input($_POST['date'], "Tell us when your event takes place");
    $size = check_input($_POST['size'], "Tell us how big your presentation is going to be");


    $subject = "Client from website";
    $subject = striplashes($subject);

    if(isset($_POST['button-submit'])) {

    if (!isset($_REQUEST['email'])) {
        header( "Location: index.html" );
      }
      else {
        mail( "ysjostar072@gmail.com", "Feedback Form Results",
          $message, "From: $email" );
        header( "Location: thanks.html" );
      }

    } 

    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
    {
        show_error("E-mail address not valid");
    }


    $enquiry = "Hello!

    Your contact form has been submitted by:

    Name: $name
    Company: $company
    Event: $function
    Address: $address
    Place: $place
    E-mail: $email
    Contact number: $number
    Mobile: $mobile
    Current client: $Client

    Comments: $message

    My exhibition is on $date
    Size: $size

    Please contact me $method



    End of message";


    mail($myemail, $subject, $enquiry);

    header('Location: thanks.html');
    exit();


    function check_input($data, $problem='')
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        if ($problem && strlen($data) == 0)
        {
            show_error($problem);
        }
        return $data;
    }

    function show_error($myError)
    {
    ?>
        <html>
        <body>

        <b>Please correct the following error:</b><br />
        <?php echo $myError; ?>

        </body>
        </html>
    <?php
    exit();
    }
    ?>

请帮帮我。我不知道我做错了什么。在此先感谢:)

这是 HTML 表单:

    <form id="contact" method="post" action="sendmail.php" enctype="multipart/form-data">
                                        <ul>
                                        <li style="margin-bottom:15px; text-align:left"><label for="name">Vorname/Name*</label>
                                                                                                <input id="name" name="Name" type="text" value="" class="name-field" /></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="company">Firma*</label>
                                                                                                <input id="company" name="Company" type="text" value="" class="company-field" /></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="function">Funktion*</label>
                                                                                        <input id="function" name="Function" type="text" value="" class="function-field" /></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="address">Adresse*</label>
                                                                                        <input id="address" name="Address" type="text" value="" class="address-field" /></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="place">PLZ/Ort*</label>
                                                                                        <input id="place" name="Place" type="text" value="" class="place-field" /></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="number">Telefon*</label>
                                                                                        <input id="number" name="Number" type="text" value="" class="number-field" /></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="mobile">Mobiltelefon*</label>
                                                                                        <input id="mobile" name="Mobile" type="text" value="" class="mobile-field" /></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="email">E-Mail*</label>
                                                                                        <input id="email" name="Email" type="text" value="" class="email-field" /></li>




                                        <li style="margin-bottom:15px; text-align:left">Wir sind bereits Kunde*
                                                                                                                <input type="radio" name="Client" id="r1" value="Ja" />
                                                                                                                    <label for="r1">Ja</label>
                                                                                                                <input type="radio" name="Client" id="r2" value="Nein" />
                                                                                                                    <label for="r2">Nein</label>
                                        </li>



                                        <li style="margin-bottom:15px; text-align:left">Kontaktieren Sie uns*
                                                                                                            <input type="radio" name="method" id="r3" value="Per telefon" />
                                                                                                                    <label for="r3">Per telefon</label>
                                                                                                                <input type="radio" name="method" id="r4" value="Per e-mail" />
                                                                                                                    <label for="r4">Per e-mail</label>
                                        </li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="message">Bemerkungen*</label>
                                                                                        <textarea id="message" name="Message" type="text" value="" class="message-field" ></textarea></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="date">Nächste Messe datum*</label>
                                                                                        <input id="date" name="Date" type="text" value="" class="date-field" /></li>

                                        <li style="margin-bottom:15px; text-align:left"><label for="size">Standgrösse m sq*</label>
                                                                                        <input id="size" name="Size" type="text" value="" class="size-field" /></li>

                                        <li style="margin-top:25px; margin-right:10px; text-align:left; color:#F00">*Diese Felder werden benötigt.</li>

                                        <input type="submit" class="button-submit" id="button-submit" value="Senden" name="button-submit" />

                                        </ul>
                                     </form>

【问题讨论】:

  • check_input函数是怎么调用的,我想我们这里漏掉了一些代码。

标签: php forms email validation


【解决方案1】:

问题在于,如果if ($problem &amp;&amp; strlen($data) == 0) 始终为真——这让我觉得你在$_POST['name'] 中没有任何价值——放一些消息,看看你有什么信息。

【讨论】:

    【解决方案2】:

    我已经尝试过这段代码,它对我有用!尝试对您的文本进行 utf8 编码,表单输入名称等...

    <input type='text' name='name'>
    <?php
    $myemail  = "tresorunikin@gmail.com";
    
    $name = check_input($_POST['name'], "Enter your name");
    $company = check_input($_POST['company'], "Enter your company name");
    $function = check_input($_POST['function'], "Provide an occassion");
    $address = check_input($_POST['address'], "Enter your address");
    $place = check_input($_POST['place'], "Enter your area code");
    $number = check_input($_POST['number'], "Enter your number");
    $mobile = check_input($_POST['mobile'], "Enter your mobile number");
    $email = check_input($_POST['email'], "Enter a valid E-Mail address");
    $client = check_input($_POST['client'], "Are you a client already? Please let us know");
    $method = check_input($_POST['method'], "Choose your preferred method of contact");
    $message = check_input($_POST['message'], "Enter your comments or description");
    $date = check_input($_POST['date'], "Tell us when your event takes place");
    $size = check_input($_POST['size'], "Tell us how big your presentation is going to be");
    
    
    $subject = "Client from website";
    $subject = striplashes($subject);
    
    if(isset($_POST['button-submit'])) {
    
    if (!isset($_REQUEST['email'])) {
        header( "Location: index.html" );
      }
      else {
        mail( "ysjostar072@gmail.com", "Feedback Form Results",
          $message, "From: $email" );
        header( "Location: thanks.html" );
      }
    
    } 
    
    if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
    {
        show_error("E-mail address not valid");
    }
    
    
    $enquiry = "Hello!
    
    Your contact form has been submitted by:
    
    Name: $name
    Company: $company
    Event: $function
    Address: $address
    Place: $place
    E-mail: $email
    Contact number: $number
    Mobile: $mobile
    Current client: $Client
    
    Comments: $message
    
    My exhibition is on $date
    Size: $size
    
    Please contact me $method
    
    
    
    End of message";
    
    
    mail($myemail, $subject, $enquiry);
    
    header('Location: thanks.html');
    exit();
    
    
    function check_input($data, $problem='')
    {
        $data = trim($data);
        if (strlen($data) == 0)
        {
            show_error($problem);
        }
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
    
    function show_error($myError)
    {
    ?>
        <html>
        <body>
    
        <b>Please correct the following error:</b><br />
        <?php echo $myError; ?>
    
        </body>
        </html>
    <?php
    exit();
    }
    ?>
    

    【讨论】:

    • 感谢您的帮助,但我仍然遇到问题...也许问题出在我的代码中?
    • 我在原始问题中添加了表单
    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 2019-01-01
    • 2018-10-21
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多