Mon formulaire de contact fonctionne, mais il ne me redirigera pas vers ma page de remerciements. Cela fonctionnait avant que je le transfère à un nouvel hôte.La redirection PHP ne fonctionne pas sur le formulaire de contact (le message est envoyé)
<!-- Contact PHP Stuff -->
<?php
session_start();
require_once 'libs/phpmailer/PHPMailerAutoload.php';
$errors = [];
if(isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['message'])) {
$fields = [
'name'=> $_POST['name'],
'email'=> $_POST['email'],
'subject'=> $_POST['subject'],
'message'=> $_POST['message']
];
foreach($fields as $field => $data) {
if(empty($data)) {
$errors[] = 'The ' . $field . ' field is required';
}
}
if(!empty($fields['name'])) {
if (!preg_match("/^[a-zA-Z ]*$/",$fields['name'])) {
$errors[] = "Name can only include letters A-Z";
}
}
if(!empty($fields['email'])) {
if (!filter_var($fields['email'], FILTER_VALIDATE_EMAIL)) {
$errors[] = "Please enter a valid email address";
}
}
if(empty($errors)) {
$mail = new PHPMailer(); // create a new object
$mail->IsHTML(true);
$mail->Username = "[email protected]";
$mail->Password = "*****";
$mail->SetFrom($fields['email'], $fields['name']);
$mail->Subject = $fields['subject'];
$mail->Body = $fields['message'];
$mail->AddAddress("[email protected]");
if($mail->Send()) {
header('Location: thanks');
die();
} else {
$errors[] = "Sorry could not send message. Try again later";
}
}
} else {
$errors[] = 'Something went wrong';
}
$_SESSION['errors'] = $errors;
$_SESSION['thanks'] = $thanks;
$_SESSION['fields'] = $fields;
header('Location: contact#contact-form');
?>
La ligne header('Location: thanks');
me allez être redirigé vers merci.html avec mon hôte précédent mais maintenant cela ne se produit même si le message est envoyé et livré.
J'ai trouvé le code dans un didacticiel et je ne me souviens pas où il était il y a plus d'un an.
Quelle est l'erreur? essayez d'ajouter au début de votre fichier après avoir lancé la balise php 'error_reporting (E_ALL);' Aussi ... quelque chose est-il imprimé sur la page? cela a généralement pour conséquence que l'en-tête ne peut pas être réglé, puisque l'un est déjà envoyé. –