简体   繁体   中英

How to redirect my php validation form to another page

I'm really struggling here! I have a contact form which I will include that uses the jquery plugin, and uses php as a backup. This form is not all the way customized yet, but I am having trouble for a couple of days now. When I use MAMP and click submit the validation works perfectly! in both php and jquery. Then redirects me to google(eventually some other website). When I upload it to my companies site under a TEST folder. to test it I get the validation and everything working perfectly. When I submit after fixing errors in jquery it pushes to google like it is supposed to. When I take away the jquery to test the php, the validation works then when I hit submit it just stays right there on the same index.php page! I have been pulling my hair out trying so many different contact validation forms and this one seems to be working the best. I am a graphic designer with enough web experience to get me in trouble with PHP!:) Can anybody help with some advice?

Here is my index.php

<?php include('header_contact.php') ?>


<?php include('testval.php');?>




<div id="section1">

CONTACT FORM

<div id="contact-form">




<!--<form id="contactform" name="contactform" action="<!--?php echo $_SERVER['PHP_SELF']; ?>" method="post" >-->
<form id="contactform" name="contactform" action="index.php" method="post" >



    <!--?php
    if($sent === true) {
        echo "<h2 class='success'>Thanks, your message has been sent successfully</h2>";
    } elseif($hasError === true) {
        echo '<ul class="errorlist">';
        foreach($errorArray as $key => $val) {
            echo "<li>" . ucfirst($key) . " field error - $val</li>";
        }
        echo '</ul>';
    }
    ?>
    -->

    <input name="Name" type="text" id="Name" placeholder="NAME" value="<?php echo (isset($Name) ? $Name : ""); ?>"><span class='text_error'><?php echo $nameErr;?></span>

    <input name="Company" type="text" id="Company" placeholder="COMPANY" value=''>

    <input name="Phone" type="tel" id="Phone" placeholder="PHONE" value='<?php echo htmlentities($Phone);?>'>
    <span class='text_error'><?php echo $phoneErr;?></span>

    <input name="Email" type="Email" placeholder="EMAIL" value="<?php echo (isset($Email) ? $Email : ""); ?>">
    <span class='text_error'><?php echo $emailErr;?></span>

    <input name="webdesign" type="checkbox" value="Yes" /><label>Web Design: </label><br />

    <input name="webhosting" type="checkbox" value="Yes" /><label>Web Hosting: </label><br />

    <input name="wordpressdesign" type="checkbox" value="Wordpress Design" /><labeel>Wordpress Design: </labeel><br />

    <textarea id="Describe" class="mess" name="Describe" type="text" placeholder="DESCRIBE WHAT YOU NEED"><?php echo isset($_POST['Describe'])? $_POST['Describe'] : ''; ?></textarea>
    <span class='text_error'><?php echo $describeErr;?></span>

    <!--?php if(in_array('Describe', $validation)): ?><span class="error"><!--?php echo $error_messages['Describe']; ?></span><!--?php endif; ?>
    <span class='text_error'>
    -->

    <input class="input-upload" type="file" name="Upload File">

    <input name="Human" placeholder="5 + 3 = ?" value="<?php echo isset($_POST['Human'])? 
    $_POST['Human'] : ''; ?>">
    <span class='text_error'><?php echo $humanErr;?></span>

    <!--
    <!--?php if(in_array('Human', $validation)): ?><span class="error"><--?php echo $error_messages['Human']; ?></span><--?php endif; ?>
    -->

    <input id="submit" name="submit" type="submit" value="submit">




</form>






</div><!--END CONTACT FORM-->

</div><!--END SECTION1-->    







<?php include('footer.php') ?>

Here is my testval.php

<?php

session_start();
    // define variables and set to empty values
    $nameErr = $emailErr = $phoneErr = $describeErr = $humanErr = "";
    $Name = $Email = $Phone = $Describe = $Human = "";

    $hasError = false;
    $sent = false;

    if(isset($_POST['submit'])) {
        $Name            = trim(htmlspecialchars($_POST['Name'], ENT_QUOTES));
        $Email           = trim($_POST['Email']);
        $Describe        = trim(htmlspecialchars($_POST['Describe'], ENT_QUOTES));
        $Phone           = trim($_POST['Phone']);
        $Email           = trim($_POST['Email']);
        $webdesign       = trim($_POST['webdesign']);
        $webhosting      = trim($_POST['webhosting']);
        $wordpressdesign = trim($_POST['wordpressdesign']);
        $Human           = trim($_POST['Human']);
        $Number          = 8;

        $fieldsArray = array(
            'Name' => $Name,
            'Email' => $Email,
            'Describe' => $Describe,
            'Phone' => $Phone,
            'Human' => $Human
        );

        $errorArray = array();

        foreach($fieldsArray as $key => $val) {
            switch ($key) {
                case 'Name':
                    if(empty($val)) {
                        $hasError = true;
                        $nameErr = "Please enter your name.";
                    }
                case 'Name':
                    if (!preg_match("/^[a-zA-Z ]*$/", ($val))) {
                        $hasError = true;
                        $nameErr = "The value must be alphanumeric."; 
                    }
                    break;
                case 'Phone':
                    if (!preg_match("/^[0-9]+$/", ($val))) {
                        $hasError = true;
                        $phoneErr = "Only numbers and white space allowed.";
                    }
                case 'Phone':
                    if(empty($val)) {
                        $hasError = true;
                        $phoneErr = "Phone is required.";
                    }
                    break;
                case 'Email':
                    if(!filter_var($Email, FILTER_VALIDATE_EMAIL)) {
                        $hasError = true;
                        $emailErr = "Email is required.";
                    } else {
                        $Email = filter_var($Email, FILTER_SANITIZE_EMAIL);
                    }
                    break;
                case 'Describe' :
                    if (strlen($val) < 25) {
                        $hasError = true;
                        $describeErr = "Please enter at least 25 characters. This way I know more specifically what you need!";
                    }
                case 'Describe' :
                    if(empty($val)) {
                        $hasError = true;
                        $describeErr = "Message is required. This way I know what you need!";
                    }
                    break;
                case 'Human':
                    if (!preg_match("/[^\d]?8[^\d]?/", ($val))) {
                        $hasError = true;
                        $humanErr = "Not the right answer";
                    }
                case 'Human':
                    if (!preg_match("/^[0-9]+$/", ($val))) {
                        $hasError = true;
                        $humanErr = "Must be a number";
                    }
                case 'Human':
                    if(empty($val)) {
                        $hasError = true;
                        $humanErr = "Are you human?";
                    }
                    break;
            }
        }

        //CHECK BOX WRITE UP
        if (isset($_POST['webdesign'])) {
            $checkBoxValue = "yes";
             //is checked
        } else {
            $checkBoxValue = "no";
             //is unchecked
        }

        if (isset($_POST['webhosting'])) {
        $checkBoxValue = "yes";
            //is checked
         } else {
            $checkBoxValue = "no";
            //is unchecked
        }

        if (isset($_POST['wordpressdesign'])) {
        $checkBoxValue = "yes";
            //is checked
        } else {
            $checkBoxValue = "no";
            //is unchecked
        }

        //Validation Success!
        //Do form processing like email, database etc here
        if($hasError !== true) {
            $priority = $_POST['priority'];
            $type = $_POST['type'];
            $message = $_POST['message'];
            $formcontent=" From: $Name \n Company: $Company \n Email: $Email \n Phone: $Phone \n Describe: $Describe \n Web Design: $webdesign \n Web Hosting: $webhosting \n Wordpress Design: $wordpressdesign ";
            $recipient = "creative@griffard.com";
            $subject = "Contact form test with Jquery and PHP";
            $mailheader = "From: $Email \r\n";
            mail($recipient, $subject, $formcontent, $mailheader);
            header("Location:http://www.google.com");
            exit();       
        }
    }

?><!--END PHP-->

I took out the jquery for now to test the php to get it working, but when it is in the index.php page it is right below

here is the code for that.

<script type="text/javascript">
jQuery(document).ready(function($) {
    $("#contactform").validate({
        rules: {
            Name: {
                required: true,
                minlength: 4
            },
            Email: {
                required: true,
                email: true
            },
            Describe: {
                required: true,
                minlength: 25
            },
            Phone: {
                required: true,
                number: true,
                minlength: 7,
                maxlength: 15
            },
            Human: {
                required: true,
                number: true,
                maxlength: 1,
                range: [8,8]
            }
        },
        messages: {
            Name: {
                required: "Please enter your name",
                minlength: "Your name seems a bit short doesn't it?"
            },
            Email: {
                required: "We need your email address to contact you",
                email: "Please enter a valid email address"
            },
            Describe: {
                required: "Please enter your message",
                minlength: "Please enter at least 25 characters. This way I know more specifically what you need!"
            },
            Phone: {
                required: "Please enter your phone number",
                number: "Phone has to be numbers",
                minlength: "Your phone number should be longer",
                maxlength: "Number must be less!"
            },
            Human: {
                required: "Are you human?",
                number: "has to be a number",
                maxlength: "That's to long!",
                range: "Please enter the correct number"
            }
        },
        errorElement: "div", //TAKE CONTROL OF ERROR MESSAGE IN CSS

        //IF I CHOOSE TO ADD CSS AND WRAP ERROR WITH BOX

        wrapper: "div", //WRAPPER AROUND THE ERROR MESSAGE
        errorPlacement: function(error, element) {
            error.insertAfter(element);
            error.addClass('message'); //ADD A CLASS TO THE WRAPPER
            /*
            error.css('position', 'absolute');
            error.css('left', offset.left + element.outerWidth());
            error.css('top', offset.top);
            */
    }
    });
});
</script>

Any help is very much appreciated!

It looks like you are parsing HTML in your header_contact.php . You cannot parse HTML content before a redirect. Try switching the included php files.

<?php include('testval.php');?>

<?php include('header_contact.php') ?>
<!DOCTYPE HTML>
<html>


<head>
    <meta charset="UTF-8 BOM">

            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

    <title>Contact Form TEST</title>


    <link rel="stylesheet" type="text/css" href="./css/style.css">
    <script type="text/javascript" src="./js/contact.js"></script>
    <script type="text/javascript" src="./js/validation.js"></script>
    <script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="./js/jquery.validate.min.js"></script>

    <!--MOO Script-->
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>





</head>


<body>

尝试将test.php末尾的header位更改为如下所示:

header("Refresh:0; url=index.php");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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