Bonjour, j'ai fait un formulaire de contact en suivant le tuto "Formulaire de contact en PHP" Tout fonctionne excepté le champs $sujet et $headers. Quand je fais un var_dump de $_SESSION tout est là, mais ça ne sort pas dans le mail envoyé. Ça fait un de bon moment que je cherche mais là franchement je ne voie pas. Si un oeil averti peut trouver où ça cloche je suis preneur.
HTML
<div class="container">
<?php if (array_key_exists('errors', $_SESSION)): ?>
<div class="alert alert-danger">
<?= implode('<br>', $_SESSION['errors']); ?>
</div>
<?php endif; ?>
<?php if (array_key_exists('success', $_SESSION)): ?>
<div class="alert alert-success">
Votre mail a bien été envoyé
</div>
<?php endif; ?>
<form action="post-contact.php" method="POST">
<div class="contact-form">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label for="inputname">Nom</label><input type="text" name="name" value="<?= isset($_SESSION['inputs']['name']) ? $_SESSION['inputs']['name'] : ''; ?>" placeholder="René Dupont" class="form-control" id="inputname">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="inputemail">Email</label>
<input type="text" name="email" value="<?= isset($_SESSION['inputs']['email']) ? $_SESSION['inputs']['email'] : ''; ?>" placeholder="r.dupont@gmail.com" class="form-control"id="inputemail">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="inputsubject">Sujet</label><input type="text" name="subject" value="<?= isset($_SESSION['inputs']['subject']) ? $_SESSION['inputs']['subject'] : ''; ?>" placeholder="Sujet" class="form-control" id="inputsubject">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="inputmessage">Message</label>
<textarea name="message" class="form-control" placeholder="Ici vous écrivez votre message" rows="8" id="inputmessage"><?= isset($_SESSION['inputs']['message']) ? $_SESSION['inputs']['message'] : ''; ?></textarea>
</div>
<div>
<div class="col-md-2 col-md-offset-5 col-sm-2 col-sm-offset-5">
<button class="btn btn-lg btn-black btn-contact">
ENVOYER <i class="fa fa-paper-plane"></i>
</button>
</div>
</div>
</div>
</div>
</div>
</form>
<h2>Debug :</h2>
<?= var_dump($_SESSION); ?>
</div>
<?php
unset($_SESSION['errors']);
unset($_SESSION['inputs']);
unset($_SESSION['success']);
?>
</body>
ET PHP
<?php
$errors = array();
if (!array_key_exists('name', $_POST) || $_POST['name'] == '') {
$errors['name'] = "Vous n'avez pas renseigné votre nom";
}
if (!array_key_exists('subject', $_POST) || $_POST['subject'] == '') {
$errors['subject'] = "Vous n'avez pas renseigné votre sujet";
}
if (!array_key_exists('email', $_POST) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errors['email'] = "Votre email ne semble pas valide";
}
if (!array_key_exists('message', $_POST) || $_POST['message'] == '') {
$errors['message'] = "Vous n'avez pas renseigné votre message";
}
session_start();
if (!empty($errors)) {
$_SESSION['errors'] = $errors;
$_SESSION['inputs'] = $_POST;
header('location: test2.php');
}else {
$_SESSION['success'] = 1;
$to = 'fabrice.chapot@gmail.com';
$message = $_POST['message'];
$headers = 'FROM: fabrice.chapot@gmail.com';
mail($to, $subject, $message, $headers);
header('location: test2.php');
}
Merci à vous !!
Bonjour.
Pour le sujet, c'est normal, vu que la variable $subject n'est pas définie.
Il te faut la définir, tout comme tu l'as fait pour les variables $to, $message et $headers.
Ou alors placer directement $_POST['subject'] à la place de $subject.
De rien.
Quand nous sommes plongé dans notre code, au bout d'un moment des détails insignifiants nous échappe, ça arrive. :)