Afficher les erreurs d'un formulaire en bas de page
- Accueil
- Forum
- Programmation
- PHP
- Afficher les erreurs d'un formulaire en bas de page
Gyadarun Le 25 mai 2018 à 19:14 (Édité le 25 janvier 2019 à 17:54)
<?php //message
// Vérification si envoie du formulaire
if (filter_has_var(INPUT_POST, 'submit')) {
// Variables des champs du formulaire
$name = $_POST['name'];
$email = $_POST['mail'];
$message = $_POST['message'];
// Vérification si les champs sont rempli
if (!empty($name) && !empty($email) && !empty($message)) {
// Ok
// Vérification sur le mail
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
// Non
$msg = 'Veuillez entrer un email valide';
} else {
// Ok
// Préparation du mail
$toEmail = '*****';
$subject = 'Contact via formulaire ' .$name;
$body = '<h2>Demande de contact</h2>
<h4>Nom</h4><p>'.$name.'</p>
<h4>Mail</h4><p>'.$email.'</p>
<h4>Message</h4><p>'.$message.'</p>
';
// Headers
$headers = "MIME-Version: 1.0" ."\r\n";
$headers.= "Content-Type:text/html;charset=UTF-8" . "\r\n";
$headers.= "De: " .$name." ".$email. "\r\n";
if (mail($toEmail, $subject, $body, $headers)) {
// mail envoyé
$msg = "Merci de m'avoir contacté, je vous répondrai dans les plus bref délai";
} else {
// mail non reçu
$msg = "Votre mail n'a pas pu être envoyé";
}
}
} else {
// Non
$msg = 'Veuillez remplir tout les champs';
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Développeur web - Amaury Letapissier</title>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<div class="pimg1">
<div class="ptext">
<span class="border">
Titre
</span>
</div>
</div>
<section class="section section-dark">
<h2>Qui suis-je</h2>
<p>
Bio
</p>
</section>
<div class="pimg2">
<div class="ptext">
<span class="border trans">
Mes projets
</span>
</div>
</div>
<section class="section section-dark">
<h2>Mes premières tentatives</h2>
<div class="projets">
<Projets
</div>
</section>
<div class="pimg3">
<div class="ptext">
<span class="border trans">
Me contacter
</span>
</div>
</div>
<section class="section section-dark">
<h2>Retrouvez moi sur les réseaux sociaux</h2>
<div class="reseaux">
réseaux sociaux
</div>
<p>
Vous pouvez également m'envoyer un mail via le formulaire en bas de page où directement à <a href="***">****</a>
</p>
</section>
<div class="pimg1">
<form id="form" action="" method="POST">
<input type="text" name="name" placeholder="Nom, Prénom" <?php if (isset($_POST['name']) === true) { echo 'value="', strip_tags($_POST['name']), '"';} ?>>
<input type="text" name="mail" placeholder="Votre e-mail" <?php if (isset($_POST['mail']) === true) { echo 'value="', strip_tags($_POST['mail']), '"';} ?>>
<textarea name="message" placeholder="Votre message"><?php if (isset($_POST['message']) === true) { echo strip_tags($_POST['message']);} ?></textarea>
<button type="submit" name="submit" onclick="redirection()">Envoyer</button>
</form>
<div class="message">
<?php if(isset($msg)): ?>
<?php echo $msg ?>
<?php endif; ?>
</div>
</div>
</body>
</html>
Mon soucis arrive lorsque j'essaye de séparer la première partie du php dans un fichier contactform.php (rajouté dans l'action du formulaire bien sûr). Je n'arrive plus à afficher les erreurs et y'a il une une meilleure solution que de faire un header('Location: index.php?#form) qui dans tout les cas n'affiche pas les erreurs avec ou sans le #form.
ThomasLBA Le 26 mai 2018 à 10:40 (Édité le 27 mai 2018 à 09:56)
$_SESSION["msg"]
qui te permet de sauvegarder ta variable à travers les pages, pour la redirection : simplement une petite redirection :header("Location: page.php")
ensuite arrivé sur ta page, tu peux afficher le message s’il existe et le détruire juste après :<?php if(isset($_SESSION["msg"])): ?>
<div class="message">
<?= $_SESSION["msg"] ?>
// Permet d’afficher une variable sans passer par « echo », ici pas besoin de « ; »
</div>
<?php unset($_SESSION["msg"]); ?>
<?php endif; ?>
PS : N’oublie pas de démarrer ta session au tout début de ta page, avant tout affichage de code HTML, de texte, et sans aucun espace avant au rique d’avoir une erreur qui s’affiche !!!
Exemple :
<?php session_start(); ?>
<!DOCTYPE html>
<html>
code ...
</html>
Gyadarun Le 28 mai 2018 à 10:40 (Édité le 1 janvier 1970 à 01:00)