Search code examples
phphtmlformsplaintext

Why is my HTML/PHP form echoing the PHP file and using get when post is specified?


I've been working on a website for my father for a while now and i have been getting frustrated with the contact form and order form. I'm only starting to learn HTML and i don't know a whole lot about it.

Here is what's happening: When i press the submit button, the whole PHP code will print onto the browser screen in plain text.

This is happening for both the contact form and order form, i will paste the contact form bellow.

                            <form id="contact-form" action="php/mail.php" method="POST">
                                <div class="control-group">
                                    <div class="controls">
                                        <input class="span12" type="text" id="name" name="name" placeholder="* Your name..." />
                                        <div class="error left-align" id="err-name">Please enter name.</div>
                                    </div>
                                </div>
                                <div class="control-group">
                                    <div class="controls">
                                        <input class="span12" type="email" name="email" id="email" placeholder="* Your email..." />
                                        <div class="error left-align" id="err-email">Please enter valid email adress.</div>
                                    </div>
                                </div>
                                <div class="control-group">
                                    <div class="controls">
                                        <textarea class="span12" name="comment" id="comment" placeholder="* Your query..."></textarea>
                                        <div class="error left-align" id="err-comment">Please enter your query.</div>
                                    </div>
                                </div>
                                <div class="control-group">
                                    <div class="controls">
                                        <button id="send-mail" class="message-btn">Send message</button>
                                    </div>
                                </div>
                            </form>

Here is the PHP:

<?php
include 'functions.php';

if (!empty($_POST)){

$data['success'] = true;
$_POST  = multiDimensionalArrayMap('cleanEvilTags', $_POST);
$_POST  = multiDimensionalArrayMap('cleanData', $_POST);

$emailTo ="myemail@domain.com"; 

$emailSubject = "Test";

$name = $_POST["name"];
$email = $_POST["email"];
$comment = $_POST["comment"];
if($name == "")
$data['success'] = false;

if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) 
$data['success'] = false;


if($comment == "")
$data['success'] = false;

if($data['success'] == true){

$message = "NAME: $name<br>
EMAIL: $email<br>
COMMENT: $comment";


$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html; charset=utf-8" . "\r\n"; 
$headers .= "From: <$emailFrom>" . "\r\n";
mail($emailTo, $emailSubject, $message, $headers);

$data['success'] = true;
echo json_encode($data);
}
}

The email part is filled in with my email.

Just to recap, the whole php code in echoing to my browser in plain-text when i press the submit button.

I don't see anything wrong with this, please help...


Solution

  • PHP code is printed when you post the form.

    It does mean you don't have php installed on your machine or your web server doesn't have php module enabled.

    Try to install apache or IIS or any other webserver + php and then run your contact form on localhost url.

    e.g. http://localhost/contactform.php