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 trialtuukka uosukainen
22,107 PointsPHP 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’ll be in touch shortly.</p>
<?php } else {?>
<p>I’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
Joe Cochran
18,249 PointsI 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
33,990 PointsHey tuukka!!
All you have to do is change the spelling of $_server to $_SERVER (all caps) and it should work fine!!
tuukka uosukainen
22,107 PointsThanks guys!
It works :)
Joe Cochran
18,249 PointsI hate to ask, but would you mind accepting an answer? We get points when someone accepts an answer as correct.
tuukka uosukainen
22,107 PointsHi 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 :)
Grace Kelly
33,990 PointsGrace Kelly
33,990 PointsJoe's explanation is way better haha