Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

PHP Build a Simple PHP Application Adding a Contact Form Working with Get Variables

PHP form keeps me on same page after I submit

I'm new in PHP so bear with me.

As I submit my form I stay don't see the thank you message but empty form.

I have no idea what I've done wrong.

Here's my code:

if($_server["REQUEST_METHOD"] == "POST") {
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$email_body = "";
$email_body = $email_body . "Name: " . $name . "\n";
$email_body = $email_body . "Email: " . $email . "\n";
$email_body = $email_body . "Message: " . $message;

    // TODO: Send Email

    header("Location: contact.php?status=thanks");
    exit;
}
?><?php
$pageTitle = "Contact Mike";
$section = "contact";
include('inc/header.php'); ?>

    <div class="section page">

        <div class="wrapper">

            <h1>Contact</h1>

            <?php if (isset($_GET["status"]) AND $_GET["status"] == "thanks") { ?>
                <p>Thanks for the email! I&rsquo;ll be in touch shortly.</p>    
            <?php } else {?>

                    <p>I&rsquo;d love to hear from you! Complete the form to send me an email.</p>

                    <form method="post" action="contact.php">

                        <table>
                            <tr>
                                <th>
                                    <label for="name">Name</label> 
                                </th>
                                <td>
                                    <input type="text" name="name" id="name">
                                </td>
                            </tr>
                            <tr>
                                <th>
                                    <label for="email">Email</label> 
                                </th>
                                <td>
                                    <input type="text" name="email" id="email">
                                </td>
                            </tr>
                              <tr>
                                <th>
                                    <label for="message">Message</label> 
                                </th>
                                <td>
                                    <textarea name="message" id="message"></textarea>
                                </td>
                            </tr>
                        </table>
                        <input type="submit" value="send">
                    </form>

                <?php } ?>
        </div>

    </div>

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

Thank you very much!

5 Answers

I took a look at your code, and it appears the issue in on the first if statement:

if($_server["REQUEST_METHOD"] == "POST") {

You are trying to access the $_SERVER array for it's request method. Variables in PHP are case sensitive, and in your code you have typed out the variable in lowercase. To correct this, simply adjust the case to:

if($_SERVER["REQUEST_METHOD"] == "POST") {

Once this is done, the conditional will trigger, the message should be created, and the page should redirect to the location with the GET variable of status that causes your custom message to be displayed.

Grace Kelly
Grace Kelly
33,990 Points

Joe's explanation is way better haha

Grace Kelly
Grace Kelly
33,990 Points

Hey tuukka!!

All you have to do is change the spelling of $_server to $_SERVER (all caps) and it should work fine!!

Thanks guys!

It works :)

I hate to ask, but would you mind accepting an answer? We get points when someone accepts an answer as correct.

Hi Joe,

Of course. I did not realise that I have to choose the best answer. I did up vote already :)

I'll choose the answer now.

Sorry and thank you :)