I tried using this phpmailer to create my contact form but it didn’t work. I would like to use phpmailer in the future and I was close to creating a successful php form, but too bad this code didn’t work and I can’t figure out what it means or why it is being used. Can anyone explain to me what this is for?
<?php
// Only process POST reqeusts.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Get the form fields and remove whitespace.
$name = strip_tags(trim($_POST["name"]));
$name = str_replace(array("\r","\n"),array(" "," "),$name);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$message = trim($_POST["message"]);
// Check that data was sent to the mailer.
if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Set a 400 (bad request) response code and exit.
http_response_code(400);
echo "Oops! There was a problem with your submission. Please complete the form and try again.";
exit;
}
// Set the recipient email address.
// FIXME: Update this to your desired email address.
$recipient = "e-mail@example.com";
// Set the email subject.
$subject = "New contact from $name";
// Build the email content.
$email_content = "Name: $name\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Message:\n$message\n";
// Build the email headers.
$email_headers = "From: $name <$email>";
// Send the email.
if (mail($recipient, $subject, $email_content, $email_headers)) {
// Set a 200 (okay) response code.
http_response_code(200);
echo "Thank You! Your message has been sent.";
} else {
// Set a 500 (internal server error) response code.
http_response_code(500);
echo "Oops! Something went wrong and we couldn't send your message.";
}
} else {
// Not a POST request, set a 403 (forbidden) response code.
http_response_code(403);
echo "There was a problem with your submission, please try again.";
}
?>
What version of PHP are you running? The function http_response_code() was introduced with PHP 5.4. Of course you should be running a newer version than this anyway…
I had a look on the awardspace.net web site (where the OP seems to be hosting) and it just says “PHP 5”, it doesn’t seem to give any more information. The demo login to the server control panel says “try again later” and the forum is discontinued. So I can’t see exactly what version it is.
<?php
if (!function_exists('http_response_code'))
{
function http_response_code($code = NULL)
{
if ($code !== NULL)
{
switch ($code) {
case 100: $text = 'Continue'; break;
case 101: $text = 'Switching Protocols'; break;
case 200: $text = 'OK'; break;
case 201: $text = 'Created'; break;
case 202: $text = 'Accepted'; break;
case 203: $text = 'Non-Authoritative Information'; break;
case 204: $text = 'No Content'; break;
case 205: $text = 'Reset Content'; break;
case 206: $text = 'Partial Content'; break;
case 300: $text = 'Multiple Choices'; break;
case 301: $text = 'Moved Permanently'; break;
case 302: $text = 'Moved Temporarily'; break;
case 303: $text = 'See Other'; break;
case 304: $text = 'Not Modified'; break;
case 305: $text = 'Use Proxy'; break;
case 400: $text = 'Bad Request'; break;
case 401: $text = 'Unauthorized'; break;
case 402: $text = 'Payment Required'; break;
case 403: $text = 'Forbidden'; break;
case 404: $text = 'Not Found'; break;
case 405: $text = 'Method Not Allowed'; break;
case 406: $text = 'Not Acceptable'; break;
case 407: $text = 'Proxy Authentication Required'; break;
case 408: $text = 'Request Time-out'; break;
case 409: $text = 'Conflict'; break;
case 410: $text = 'Gone'; break;
case 411: $text = 'Length Required'; break;
case 412: $text = 'Precondition Failed'; break;
case 413: $text = 'Request Entity Too Large'; break;
case 414: $text = 'Request-URI Too Large'; break;
case 415: $text = 'Unsupported Media Type'; break;
case 500: $text = 'Internal Server Error'; break;
case 501: $text = 'Not Implemented'; break;
case 502: $text = 'Bad Gateway'; break;
case 503: $text = 'Service Unavailable'; break;
case 504: $text = 'Gateway Time-out'; break;
case 505: $text = 'HTTP Version not supported'; break;
default:
exit('Unknown http status code "' . htmlentities($code) . '"');
break;
}
$protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
header($protocol . ' ' . $code . ' ' . $text);
$GLOBALS['http_response_code'] = $code;
} else {
$code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200);
}
return $code;
}
}
When I was running PHP 5.3? I used a similar function but only returned either 200 or 301 integers. It served my purposes until my Web Host upgraded to PHP 5.5
patch support for PHP 5.4 ended almost a year ago so any server still running it is vulnerable to any security holes as they will never be patched. Even 5.5 has only a few weeks to go before patch support ends.
If your current hosting doesn’t provide at least 5.6 then you should be looking for new hosting.
When I was running PHP 5.3? I used a similar function but only returned
either 200 or 301 integers. It served my purposes until my Web Host
upgraded to PHP 5.5
This was quite some time ago. I now run a VPS and PHP is updated whenever I run apt-get update. Current version is PHP:
yes but you are being provided with the latest version of PHP - you are not using one of the dodgy hosts that doesn’t provide at least 5.6 (as the earliest version that still has full support)
Yes, your client should highly consider upgrading this website/application to run on php 5.6 and changing hosts if the current host does not provide boxes with php 5.6. Running a production box with php 5.3 has severe security and technological limitations that increase risk and cost of development significantly. I’m going to assume your host is also running an out of date, unsupported os as well that is susceptible to security vulnerabilities at the server level. That being said I understand the politics and work involved in doing all this. Depending on the website/application size and dependencies it can be a large task. Especially if you are running a cms and/or framework version which does not support 5.6. In that scenario you effectively need to upgrade the cms/framework to a newer version which can be difficult without migration paths for the core and dependencies. Worse case scenario the project needs to be rebuilt. Best case scenario is the project is small enough that moving to 5.6 is seamless. I think most people end up somewhere in-between those two extremes.