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
Andrea Zepeda
90 PointsContact Form
Hi! Im having a little trouble with the validation of the contact form... I come out with this "Undefined index" on some lines of the code. Just dont know how to implement the isset to see where the error us coming from.
Could you please help me? I know im kinda lame but im learning how to use php language.
My form is this:
<form class="clearfix" method="post" action="contact.php"> <div class="col-lg-4"> <p class="field"><input type="text" name="name" placeholder="Nombre*" class="field"></p> </div> <div class="col-lg-4"> <p class="field"><input type="text" name="email" placeholder="E-mail*" class="field"></p> </div> <div class="col-lg-4"> <p class="field field-last"><input type="text" name="subject" placeholder="Subject" class="field"></p> </div>
<div class="col-lg-12">
<textarea name="message" placeholder="Message*" class="field" cols="40" rows="10"></textarea></p>
</div>
<div class="col-lg-12"><input id="send" class="btn btn-default" value="Enviar" type="submit" /></div>
<div class="loading"></div>
</form>
</div>
The contact.php is this:
<?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']; $thesubject = ($_GET['thesubject']) ?$_GET['thesubject'] : $_POST['thesubject']; $message = ($_GET['message']) ?$_GET['message'] : $_POST['message'];
//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 (!$thesubject) $errors[count($errors)] = 'Please enter your subject.'; if (!$message) $errors[count($errors)] = 'Please enter your message.';
//if the errors array is empty, send the mail if (!$errors) {
// ====== Your mail here ====== //
$to = 'Your Name <yourname@example.com>';
//sender
$from = $name . ' <' . $email . '>';
//subject and the html message
$subject = 'yourwebsite.com / ' . $thesubject . '';
$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($message) . '</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 {}
//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;
}
?>