PHP http_response_code(); rapport de l'en-tête();

J'ai fait un formulaire de contact basé sur ce tutoriel:
http://blog.teamtreehouse.com/create-ajax-contact-form

Je suis en utilisant la Version de PHP 5.3.10-1ubuntu3.4 sur mon serveur, et j'ai eu du mal avec http_response_code(); qui est ce que l'exemple de tutoriel sur le lien ci-dessus utilise. J'ai lu http_response_code(); ne fonctionne qu'avec PHP 5.4. Donc à la place j'ai été rétrocédés à l'aide de header();.

J'ai mon formulaire fonctionne très bien et qu'il affiche un message de succès quand je soumettre, plutôt que des messages d'erreurs lorsque j'ai été en utilisant http_response_code(); mais mon PHP n'est pas grande et je suis désireux de savoir si ce que j'ai fait est acceptable ou si je devrais faire cela d'une façon différente? Merci de corriger mon code si.

Voici le contenu de mon mailer.php de fichiers, où vous pouvez voir que j'ai commenté http_response_code(); et je suis en utilisant header();.

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);
$phone = trim($_POST["phone"]);
$company = trim($_POST["company"]);
$minbudget = trim($_POST["minbudget"]);
$maxbudget = trim($_POST["maxbudget"]);
$message = trim($_POST["message"]);
$deadline = trim($_POST["deadline"]);
$referred = trim($_POST["referred"]);
//Check that data was sent to the mailer.
if ( empty($name) OR empty($phone) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
//Set a 400 (bad request) response code and exit.
//http_response_code(400);
header("HTTP/1.1 400 Bad Request");
echo "Error (400). That's not good, refresh and try again otherwise please email me and let me know you are having trouble submitting this form.";
exit;
}
//Set the recipient email address.
//FIXME: Update this to your desired email address.
$recipient = "[email protected]";
//Set the email subject.
$subject = "Website enquiry from $name";
//Build the email content.
$email_content = "Name: $name\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Phone: $phone\n";
$email_content .= "Company: $company\n\n";
$email_content .= "Budget: $minbudget $maxbudget\n";
$email_content .= "Deadline: $deadline\n";
//$email_content .= "Max Budget: $maxbudget\n";
$email_content .= "\n$message\n\n";        
$email_content .= "Referred: $referred\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);
header("HTTP/1.1 200 OK");
echo "Thank You! I'll be in touch soon.";
} else {
//Set a 500 (internal server error) response code.
//http_response_code(500);
header("HTTP/1.0 500 Internal Server Error");
echo "Error (500). That's not good, refresh and try again otherwise please email me and let me know you are having trouble submitting this form.";
}
} else {
//Not a POST request, set a 403 (forbidden) response code.
//http_response_code(403);
header("HTTP/1.1 403 Forbidden");
echo "Error (403). That's not good, refresh and try again otherwise please email me and let me know you are having trouble submitting this form.";
}
Merci de ne pas modifier les codes d'état HTTP, sauf si vous êtes réellement en utilisant correctement, 403 est missused(c'est censé indiquer que vous n'avez pas la permission, non pas que vous êtes à la soumission de la demande du mal 405), et vous ne devriez pas être la soumission de 400 erreurs, à moins que les en-têtes sont réellement corrompu(depuis 400 indique une erreur lors de l'analyse des en-têtes, qui manifestement il n'est pas).
Votre code de courrier a beaucoup de problèmes, je vous suggère d'utiliser une bibliothèque, comme PHPMailer, puisque vous tagged la question, mais ne l'utilisez pas!
pas vrai. À l'aide de 400 comme une réponse à malformés/non valide les données en json/api post, est assez banal, et est en outre pris en charge par cette populaire thread sur stackoverflow

OriginalL'auteur Glen | 2014-08-14