1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Form Validation not working correctly.

Discussion in 'Web Design' started by Ztak07, Jan 25, 2013.

  1. Ztak07

    Ztak07 Regular Member

    Joined:
    Jun 23, 2012
    Messages:
    389
    Likes Received:
    116
    Hi,

    Been trying to get my website's contact form to send;
    I don't know why but the code seems to be broken.

    HTML:

    HTML:
        <div id="contact">
            
            <div class="bg2"></div>
        
            <div class="dotted-bar3">
                <a href="#intro"><span class="top2"></span></a>
            </div>        
        
            <div class="container">
            
                <div class="sixteen columns">
                    <h2><span class="line"></span><img src="http://www.blackhatworld.com/blackhat-seo/images/star-white.png" alt="" /> Contact <img src="http://www.blackhatworld.com/blackhat-seo/images/star-white.png" alt="" /><span class="line2"></span></h2>
                    <p class="headline">Fill out the form and we will be in contact shortly. Thank you</p>
                </div> <!-- end sixteen columns -->    
        
                <div class="clear"></div>
                
                <div class="eight columns">
                    <div class="contact-form">
                        
                        <div class="done">
                            <b>Thank you!</b> I have received your message. 
                        </div>
                    
                        <form method="post" action="process.php">
                            <p>name</p>
                            <input type="text" name="name" class="text" />
                            
                            <p>email</p>
                            <input type="text" name="email" class="text" id="email" />
    
                            <p>message</p>
                            <textarea name="comment" class="text"></textarea>
    
                            <input type="submit" id="submit" value="send" class="submit-button" />
                        </form>
                            
                    </div> <!-- end contact-form -->
                </div> <!-- end eight columns -->
                
                <div class="eight columns">
                
                    
                    
                <div class="contact-info">
                        <div class="four columns alpha">
                            <p><img src="http://www.blackhatworld.com/blackhat-seo/images/icn-email.png" alt="" /> marc@twincityseo.com</p>
                            <p><img src="http://www.blackhatworld.com/blackhat-seo/images/icn-phone.png" alt="" /> + (218) 203-3418 </p>
                        </div>
                        
                        
                        </div>
                    </div> <!-- end contact-info -->
                    
                </div> <!-- end eight columns -->
                
            </div> <!-- end container -->
                
            <div class="copyright">
                <p>© 2012 All rights reserved</p>
            </div> <!-- end copyright -->
                
        </div> <!-- end contact -->
    PHP:

    PHP:
    <?php

    //Retrieve form data. 
    //GET - user submitted data using AJAX
    //POST - in case user does not support javascript, we'll use POST instead
    $name = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
    $email = ($_GET['email']) ?$_GET['email'] : $_POST['email'];
    $website = ($_GET['website']) ?$_GET['website'] : $_POST['website'];
    $comment = ($_GET['comment']) ?$_GET['comment'] : $_POST['comment'];

    //flag to indicate which method it uses. If POST set it to 1
    if ($_POST$post=1;

    //Simple server side validation for POST data, of course, you should validate the email
    if (!$name$errors[count($errors)] = 'Please enter your name.';
    if (!
    $email$errors[count($errors)] = 'Please enter your email.'
    if (!
    $comment$errors[count($errors)] = 'Please enter your comment.'

    //if the errors array is empty, send the mail
    if (!$errors) {

        
    //recipient
        
    $to 'Your Name <email>';     // <--------- change your email here
        //sender
        
    $from $name ' <' $email '>';
        
        
    //subject and the html message
        
    $subject 'Message from ' $name;    
        
    $message '
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head></head>
        <body>
        <table>
            <tr><td>Name</td><td>' 
    $name '</td></tr>
            <tr><td>Email</td><td>' 
    $email '</td></tr>
            <tr><td>Message</td><td>' 
    nl2br($comment) . '</td></tr>
        </table>
        </body>
        </html>'
    ;

        
    //send the mail
        
    $result sendmail($to$subject$message$from);
        
        
    //if POST was used, display the message straight away
        
    if ($_POST) {
            if (
    $result) echo 'Thank you! We have received your message.';
            else echo 
    'Sorry, unexpected error. Please try again later';
            
        
    //else if GET was used, return the boolean value so that 
        //ajax script can react accordingly
        //1 means success, 0 means failed
        
    } else {
            echo 
    $result;    
        }

    //if the errors array has values
    } else {
        
    //display the errors message
        
    for ($i=0$i<count($errors); $i++) echo $errors[$i] . '<br/>';
        echo 
    '<a href="form.php">Back</a>';
        exit;
    }


    //Simple mail function with HTML header
    function sendmail($to$subject$message$from) {
        
    $headers "MIME-Version: 1.0" "\r\n";
        
    $headers .= "Content-type:text/html;charset=iso-8859-1" "\r\n";
        
    $headers .= 'From: ' $from "\r\n";
        
        
    $result mail($to,$subject,$message,$headers);
        
        if (
    $result) return 1;
        else return 
    0;
    }

    ?>
    Jquery:

    Code:
    $(document).ready(function() {
        
        //if submit button is clicked
        $('#submit').click(function () {        
            
            //Get the data from all the fields
            var name = $('input[name=name]');
            var email = $('input[name=email]');
            var website = $('input[name=website]');
            var comment = $('textarea[name=comment]');
    
            //Simple validation to make sure user entered something
            //If error found, add hightlight class to the text field
            if (name.val()=='') {
                name.addClass('hightlight');
                return false;
            } else name.removeClass('hightlight');
            
            if (email.val()=='') {
                email.addClass('hightlight');
                return false;
            } else email.removeClass('hightlight');
            
            if (comment.val()=='') {
                comment.addClass('hightlight');
                return false;
            } else comment.removeClass('hightlight');
            
            //organize the data properly
            var data = 'name=' + name.val() + '&email=' + email.val() + '&website=' + 
            website.val() + '&comment='  + encodeURIComponent(comment.val());
            
            //disabled all the text fields
            $('.text').attr('disabled','true');
            
            //show the loading sign
            $('.loading').show();
            
            //start the ajax
            $.ajax({
                //this is the php file that processes the data and send mail
                url: "process.php",    
                
                //GET method is used
                type: "GET",
    
                //pass the data            
                data: data,        
                
                //Do not cache the page
                cache: false,
                
                //success
                success: function (html) {                
                    //if process.php returned 1/true (send mail success)
                    if (html==1) {                    
                        //hide the form
                        $('.form').fadeOut('slow');                    
                        
                        //show the success message
                        $('.done').fadeIn('slow');
                        
                    //if process.php returned 0/false (send mail failed)
                    } else alert('Sorry, unexpected error. Please try again later.');                
                }        
            });
            
            //cancel the submit button default behaviours
            return false;
        });    
    });    
    
    
     
  2. The Web Designer

    The Web Designer Regular Member

    Joined:
    Jul 22, 2012
    Messages:
    350
    Likes Received:
    319
    Location:
    Borneo
    From the look of the code, it seems like to get them somewhere but you don't understand it.

    Can you be more specific as what kind of error you get when running the code?
     
  3. Ztak07

    Ztak07 Regular Member

    Joined:
    Jun 23, 2012
    Messages:
    389
    Likes Received:
    116
    I get no error, nothing even happens. No referesh, no thank you message. Nothing, my website is here http://www.twincityseo.com
     
  4. jazzc

    jazzc Moderator Staff Member Moderator Jr. VIP

    Joined:
    Jan 27, 2009
    Messages:
    2,468
    Likes Received:
    10,143
    If you submit the form and check the traffic, you 'll see that process.php dies with a 500 Internal Error.

    My guess is it dies in the mail() function but you 'll have to debug to see.
     
    • Thanks Thanks x 1
  5. The Web Designer

    The Web Designer Regular Member

    Joined:
    Jul 22, 2012
    Messages:
    350
    Likes Received:
    319
    Location:
    Borneo
    Log in to your ftp, see if you can find the error log, download it and open it in text editor. I usually
    do that when I get script error.
     
  6. Ztak07

    Ztak07 Regular Member

    Joined:
    Jun 23, 2012
    Messages:
    389
    Likes Received:
    116
    how would I fix this?
     
  7. jazzc

    jazzc Moderator Staff Member Moderator Jr. VIP

    Joined:
    Jan 27, 2009
    Messages:
    2,468
    Likes Received:
    10,143
    If the problem is indeed on the mail() function, it means that either

    a) you are passing wrong parameters to it (e.g. empty "to")
    b) your host has either disabled it or it 's not configured appropriately to support it.

    Some small debugging will show if it 's (a) or (b). Create a test file where the only thing you have is a mail() function with hardcoded arguments. If it fails, it 's (b).
     
  8. Ztak07

    Ztak07 Regular Member

    Joined:
    Jun 23, 2012
    Messages:
    389
    Likes Received:
    116
    I have 0 knowledge of PHP so I can't tell what is wrong and if it is the mailto functon. How would I check if that is indeed the error? Please someone help me
     
  9. nesterdwarf

    nesterdwarf Regular Member

    Joined:
    May 30, 2008
    Messages:
    276
    Likes Received:
    539
    Location:
    State of Misery...er, Missouri...
    As jazzc said, try a simple script to see if the mail() function is working on your host. Something like this:
    Code:
    
    <?php
    $message = "This is your test message.";
    mail('YOUR@EMAIL', 'TEST EMAIL', $message);
    ?>
    
    Read up more here:

    Code:
    http://php.net/manual/en/function.mail.php
    HTH
    ND
     
    • Thanks Thanks x 1