繁体   English   中英

单击联系表单上的“提交”后,如何在wordpress中停留在同一页面上?

[英]after clicking submit on a contact form, how do i stay on the same page in wordpress?

因此,我使用PHP在WordPress中创建了一个自定义联系表单。 表格发送,我正在接收电子邮件。 我遇到的问题是,一旦您单击“提交”,它就会转到帖子页面,而不会停留在原始页面上。

我试过使用会话和标头位置(不起作用),我也尝试将其置于动作中。“ <?php echo $_SERVER['PHP_SELF']; ?> ”,也不起作用。 (邮件只是不发送,而是将我发送到404页。

因此,为了解决此问题,我有些困惑。 通常,如果这是一个静态网页,我不会有任何问题,但是由于我使用的是WordPress,因此此任务似乎比较麻烦。

这是网站http://www.indianpointresort.ca/的链接

这是php验证:

<?php

    /*session_start();
    if(!isset($_SESSION['afaisfjisjfijfjiwaefjawsefijef'])){
        $url = 'http://www.indianpointresort.ca/';
        header("Location:home.php?url=$url");
    }*/

    $name = trim($_POST['name']);
    $email = trim($_POST['email']);
    $phone = trim($_POST['phone']);
    $subject = trim($_POST['subject']);
    $message = trim($_POST['message']);

    echo "$name | $email | $phone | $subject | $message";   


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

        $boolValidationOK = 1;
        $strValidationMessage = "";

        //validate first name
        //validate last name
        if(strlen($name)<3){
            $boolValidationOK = 0;
            $strValidationMessage .= "Please fill in a proper first and last name </br>";
        }
        //email validation:
        $emailValidate =  validate_email( $email );// calls the function below to validate the email addy
        if(!$emailValidate ){
             $boolValidationOK = 0;
            $strValidationMessage .= "Please fill in proper email address </br>";
        }
        //validate phone
        $phone = checkPhoneNumber($phone);
        if(!$phone){
            $boolValidationOK = 0;
            $strValidationMessage .= "Please fill proper phone number </br>";
        }
        //validate subject
        if(strlen($subject)<3){
            $boolValidationOK = 0;
            $strValidationMessage .= "Please fill in a proper subject description </br>";
        }
        //validate description
        if(strlen($message)<3){
            $boolValidationOK = 0;
            $strValidationMessage .= "Please fill in a proper message </br>";
        }
        if($boolValidationOK == 1){
            //$strValidationMessage = "SUCCESS";

            //MAIL SECURITY !!!!!!!


    // WE MUST VALIDATE AGAINST EMAIL INJECTIONS; THE SPAMMERS BEST WEAPON
    $badStrings = array("Content-Type:",
    "MIME-Version:",
    "Content-Transfer-Encoding:",
    "bcc:",
    "cc:");
    foreach($_POST as $k => $v){// change to $_POST if your form was method="post"
        foreach($badStrings as $v2){
            if(strpos($v, $v2) !== false){
                // In case of spam, all actions taken here
                //header("HTTP/1.0 403 Forbidden");
                echo "<script>document.location =\"http://www.bermuda-triangle.org/\" </script>";
                exit; // stop all further PHP scripting, so mail will not be sent.
            }
        }
    }


    $ip = $_SERVER['REMOTE_ADDR'];
    //echo $ip;


    /* Spammer List: IP's that have spammed you before ***********/
            $spams = array (
             "static.16.86.46.78.clients.your-server.de", 
             "87.101.244.8", 
             "144.229.34.5", 
             "89.248.168.70",
             "reserve.cableplus.com.cn",
             "94.102.60.182",
             "194.8.75.145",
             "194.8.75.50",
             "194.8.75.62",
             "194.170.32.252"
             //"S0106004005289027.ed.shawcable.net"  Phil's IP as test 

        ); // array of evil spammers

        foreach ($spams as $site) {// Redirect known spammers
            $pattern = "/$site/i";
            if (preg_match ($pattern, $ip)) {
                // whatever you want to do for the spammer
                echo "logging spam activity..";

                exit();
            }
        }   
        $to = "";
        //$subject = " Indian Point";
        // compose headers
        $headers = "From: Indian Point Resort.\r\n";
        $headers .= "Reply-To: $email\r\n";
        $headers .= "X-Mailer: PHP/".phpversion();

        $message = wordwrap($message, 70);

        // send email
        mail($to, $subject, $message, $headers);
            }
    }//end of submit

    //validate phone number
    function checkPhoneNumber($number){
        $number = str_replace("-", "", $number);
        $number = str_replace(".", "", $number);
        $number = str_replace(" ", "", $number);
        $number = str_replace(",", "", $number);
        $number = str_replace("(", "", $number);
        $number = str_replace(")", "", $number);

        if((strlen($number) != 10) || (!is_numeric($number))){
            return false;
        }else{
            return $number;
        }
    }
    //email validation
    function validate_email( $senderemail ){ // this is a function; it receives info and returns a value.
    $email = trim( $senderemail ); # removes whitespace
     if(!empty($email) ):
        //  validate email address syntax
       if( preg_match('/^[a-z0-9\_\.]+@[a-z0-9\-]+\.[a-z]+\.?[a-z]{1,4}$/i', $email, $match) ):
         return strtolower($match[0]); # valid!
       endif;
     endif;
     return false; # NOT valid!
}
?>

形式如下:

   <div id="msgForm" class=" msgForm five columns">
                                    <h4>Questions?</h4>
                                    <h5>Send us a message!</h5>
                                    <form id="contactForm" name="contactForm" method="post" action="<?php the_permalink(); ?>">
                                        <p><input type="text" name="name" value="<?php echo $name; ?>" placeholder="name*"/></p>
                                        <p><input type="email" name="email" placeholder="E-mail*"/></p>
                                        <p><input type="text" name="phone" placeholder="Phone #*"/></p>
                                        <p><input type="text" name="subject" placeholder="subject*"/></p>
                                        <p><textarea name="message" placeholder="Message*"></textarea></p>
                                        <p><input type="submit" name="submit" placeholder="Submit"/></p>
                                        <div class="error">
                                        <?php
                                        if($strValidationMessage){
                                            echo $strValidationMessage;
                                        }
                                        ?>
                                        </div>  
                                    </form>
                                </div><!--end of form-->

尝试ajax表单提交。 并将insert query添加到一个单独的文件中。

好吧,首先,我会从您的信息中删除该gmail帐户(为了安全起见)。 其次,我建议您使用Wordpress提供的sendmail脚本。 有一些插件,例如gravityforms,可让您制作表格并决定所有这些选项,而无需制作静态表格,也无需使用新的模板文件。

您只能更改刷新后表单将重定向到的页面(该操作将决定该页面)

如果您希望它停留在同一页面上,则可以将页面本身放在动作中,并在其顶部放置if语句,例如

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

//验证,sendmail,以及可能的错误,在这里} else {//显示表格}

无论如何,令人耳目一新的网络表单已成为标准配置。 它就是提交事物的方式。 阻止网页的唯一方法是使用jquery或javascript,如下所示:(给您提交ID)

$('#submit').on("click", function(e){
//this prevents any submit functionality (like refresh)
e.preventDefault();
//custom code to get values here and put them in the sendmail function like so:
var message = $('$message').text();

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM