【问题标题】:code error in validated php contact form to mail [duplicate]验证的php联系表中的代码错误发送邮件[重复]
【发布时间】:2014-11-26 00:55:32
【问题描述】:

我编写了一个联系我们页面并验证它我想要的是当用户单击发送按钮时信息应该首先验证然后发送一封电子邮件到给定的硬编码电子邮件地址我面临一个问题不知道为什么我的编码是不工作,验证很好,但是当我点击提交按钮时,它没有显示任何关于电子邮件的成功消息,也没有发送电子邮件。请帮忙,这是我的代码:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

                        <label>Your Name: * </label>
                        <span style="color:#F00;" class="error"><?php echo $nameErr;?></span>
                        <input type="text" name="name" placeholder="Noman" width="100px;">

                        <label>Email Id: * </label>
                        <span style="color:#F00;" class="error"><?php echo $emailErr;?></span>
                        <input type="text" name="email" placeholder="yourname@gmail.com">

                        <label>Contact Number (Optional): </label>
                        <span style="color:#F00;" class="error"><?php echo $contactErr;?></span>
                        <input type="text" name="contact" placeholder="0312-1234567">

                        <label>  Website URL (Optional):</label>
                        <span style="color:#F00;" class="error"><?php echo $websiteErr;?></span>
                        <input type="text" name="website" placeholder="www.yoursite.com">

                        <label>  Message: * </label>
                        <span style="color:#F00;" class="error"><?php echo $messageErr;?></span>
                        <textarea name="message" rows="10" cols="10" placeholder="Message"></textarea>

                        <input type="submit" name="submit" value="Submit" id="submit">      
                    </form> 

这是我的php代码

<?php
                         function test_input($data) {
                          $data = trim($data);
                          $data = stripslashes($data);
                          $data = htmlspecialchars($data);
                          return $data;
                        }
                         $name= $email= $contact= $website= $message="";                            
                        $nameErr = $emailErr = $contactErr = $websiteErr = $messageErr = "";

                          if ($_SERVER["REQUEST_METHOD"] == "POST")
                          {                           
                          if (empty($_POST["name"])) {
                            $nameErr = "Name is required";
                          } else {
                            $name = test_input($_POST["name"]);
                            if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
                              $nameErr = "Only letters and white space allowed"; 
                            }
                          }

                          if (empty($_POST["email"])) {
                            $emailErr = "Email is required";
                          } else {
                            $email = test_input($_POST["email"]);
                            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                                  $emailErr = "Invalid email format"; 
                                }
                          }

                          if (empty($_POST["contact"])) {
                            $contact = "";
                          } else {
                            $contact = test_input($_POST["contact"]);
                          if(!is_numeric($contact)){
                              $contactErr="Please enter valid mobile number";
                            }
                            else if(strlen($contact) != 11) {
                            $contactErr="Please enter valid mobile number";
                            }
                          }

                          if (empty($_POST["website"])) {
                            $website = "";
                          } else {
                            $website = test_input($_POST["website"]);
                             if (!preg_match( "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
                                  $websiteErr = "Invalid URL"; 
                                }
                          }

                          if (empty($_POST["message"])) {
                            $messageErr = "Message is required";
                          } else {
                            $message = test_input($_POST["message"]);
                          }
                        }

                        $from = $_POST["email"]; // sender
                        $subject = $_POST["name"];
                        $message = $_POST["message"];
                        // message lines should not exceed 70 characters (PHP rule), so wrap it
                        $message = wordwrap($message, 200);
                        // send mail
                        mail("abc@gmail.com",$subject,$message,"From: $email\n");
                        echo "Thank you for sending us feedback";


                        ?> 

【问题讨论】:

    标签: php forms validation email


    【解决方案1】:

    我认为这是标题问题,

    这只是一个例子,改变值......

    $header = "From: info@".$_SERVER["SERVER_NAME"]."\n";
    $header .= "Content-Type: text/html; charset=utf-8\n";
    $recipient = "abc@gmail.com"
    $subject = $_POST['subject'];
    
        $body='<table width="90%" border="0">
        <tr>
        <td><b>Name:</b></td> <td>'.$name.'</td>
        </tr>
        <tr>
        <td><b>Email:</b></td> <td>'.$email.'</td>
        </tr>
        <tr>
        <td><b>Message:</b></td> <td>'.$message.'</td>
        </tr>
        <tr></table>';
    
        $res=@mail($recipient,$subject,$body,$header)
    
    ;
    

    【讨论】:

    • 我上面的代码来自 w3 学校,他们不建议在代码中使用标题,而是将其保留为可选......我认为问题在于 if() 条件
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2021-10-25
    • 1970-01-01
    • 2019-01-30
    • 2017-04-24
    • 2021-01-22
    • 1970-01-01
    • 2013-08-24
    相关资源
    最近更新 更多