5592 sujets

Sémantique web et HTML

Bonjour et d'avance merci de votre temps.
Je galère avec mon formulaire de contact, car celui ci refuse d'envoyer les message sur ma boite mail.
Voila le code :
<div class="row">
    <div class="col-lg-8 mb-5">
        <form action="mailer.php">

            <div class="row form-group">
                <div class="col-md-6 mb-3 mb-md-0">
                    <label class="text-white" for="fname">Prénom</label>
                    <input type="text" id="fname" class="form-control" />
                </div>
                <div class="col-md-6">
                    <label class="text-white" for="lname">Nom</label>
                    <input type="text" id="lname" class="form-control" />
                </div>
            </div>

            <div class="row form-group">

                <div class="col-md-12">
                    <label class="text-white" for="email">Email</label>
                    <input type="email" id="email" class="form-control" />
                </div>
            </div>

            <div class="row form-group">

                <div class="col-md-12">
                    <label class="text-white" for="subject">Sujet</label>
                    <input type="subject" id="subject" class="form-control" />
                </div>
            </div>

            <div class="row form-group">
                <div class="col-md-12">
                    <label class="text-white" for="message">Message</label>
                    <textarea name="message" id="message" cols="30" rows="7" class="form-control" placeholder="Écrivez vos notes ou questions ici..."></textarea>
                </div>
            </div>

            <div class="row form-group">
                <div class="col-md-12">
                    <input type="submit" value="Envoyer votre message" class="btn btn-primary py-2 px-4 text-white" />
                </div>
            </div>
        </form>
    </div>

Je précise que que je suis chez free, peut être y'a t'il un manipulation sur le serveur ?
Merci d'avance.
Bonjour, ceci n'est le code que du formulaire lui même pas du programme d’envois de mail qui est pour vous le fichier mailer.php. Que contient ce fichier? Quel est le code PHP que vous avez écrit?
Attention 1) en l'absence de l'attribut method="post" de la balise <form> le formulaire s'envoie en get c'est à dire que les informations sont passées dans l'URL.
Je vous recommande de passer en POST les informations soumissent par vos visiteurs et de les récupérer via $_POST en PHP.
Attention 2) Vos balises input doivent obligatoirement avoir un attribut name pour que le serveur puisse récupérer l'information.Voir comment écrire un formulaire (MDN)
Vous pouvez utiliser la fonction mail() de PHP, certain vous diront d'utiliser PHPMailer. A vous de voir.
Quelque lien pour vous aidez:
https://assistance.free.fr/articles/652
https://www.php.net/manual/fr/function.mail.php
http://les.pages.perso.chez.free.fr/l-art-d-envoyer-des-mails-depuis-les-pp-de-free.io
http://les.pages.perso.chez.free.fr/utiliser-correctement-les-formulaires-d-envoi-sur-les-pp-de-free.io
Modifié par casper2 (13 Jun 2025 - 18:48)
Merci casper2.
Voilà le code mailer.php
<?PHP 
$to = "team.0cool@gmail.com"; 
$subject = "Messsage du site Pic & Coud 2.0";
$headers = "Nom: Form Mailer";
$forward = 1;
$location = "merci.html";

$date = date ("l, F jS, Y"); 
$time = date ("h:i A"); 



$msg = "Message sent from website on date  $date, hour: $time.\n\n\n\n"; 

if ($_SERVER['REQUEST_METHOD'] == "POST") {
	foreach ($_POST as $key => $value) { 
		$msg .= ucfirst ($key) ." : ". $value . "\n\n"; 
	}
}
else {
	foreach ($_GET as $key => $value) { 
		$msg .= ucfirst ($key) ." : ". $value . "\n\n"; 
	}
}

mail($to, $subject, $msg); 
if ($forward == 1) { 
    header ("Location:$location"); 
} 
else { 
    echo "Thank you for your message. We will contact you as soon as possible."; 
} 

?>
Bonsoir, j'ai édité mon message précédant pendant que vous répondiez.
Le point "Attention 2)" est important cela ne fonctionnera pas sans.
Le script PHP gére les deux method POST et GET.
Il manque un exit(); après la fonction header(); sans quoi le script continue (pas grave ici mais autant respecter les bonnes pratiques.)
$headers n'est pas utiliser dans la fonction mail(). Cela pourrait avoir une incidence dans l'utilisation sur ce serveur...... A voir.
Corriger déjà le HTML pour voir.
Autre erreur HTML type="subject" n'existe pas c'est type="text". Passez votre code au validateur HTML pour voir si il n'y a pas d'autre erreurs => https://validator.w3.org/
Modifié par casper2 (13 Jun 2025 - 19:28)
Bonjour,
J'ai galéré et maintenant j'ai ce message d'erreur.
"Sorry BruChri, it seems that our mail server is not responding. Please try again later!"

Voilà le code :
 <div class="row px-xl-5">
     <div class="col-lg-7 mb-5">
         <div class="contact-form">
             <div id="success"></div>
             <form name="sentMessage" id="contactForm" novalidate="novalidate">
                 <div class="control-group">
                     <input type="text" class="form-control" id="name" placeholder="Votre nom"
                            required="required" data-validation-required-message="Veuillez entrer votre nom" />
                     <p class="help-block text-danger"></p>
                 </div>
                 <div class="control-group">
                     <input type="email" class="form-control" id="email" placeholder="Votre Email"
                            required="required" data-validation-required-message="Veuillez entrer votre email" />
                     <p class="help-block text-danger"></p>
                 </div>
                 <div class="control-group">
                     <input type="text" class="form-control" id="subject" placeholder="Sujet"
                            required="required" data-validation-required-message="Veuillez saisir un sujet" />
                     <p class="help-block text-danger"></p>
                 </div>
                 <div class="control-group">
                     <textarea class="form-control" rows="6" id="message" placeholder="Message"
                               required="required"
                               data-validation-required-message="Veuillez entrer votre message"></textarea>
                     <p class="help-block text-danger"></p>
                 </div>
                 <div>
                     <button class="btn btn-primary py-2 px-4" type="submit" id="bouton d'envoi de message">
                         Envoyer
                         Message
                     </button>
                 </div>
             </form>
         </div>
         
     </div>


Et le fichier:
<?php
if(empty($_POST['name']) || empty($_POST['subject']) || empty($_POST['message']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
  http_response_code(500);
  exit();
}

$name = strip_tags(htmlspecialchars($_POST['name']));
$email = strip_tags(htmlspecialchars($_POST['email']));
$m_subject = strip_tags(htmlspecialchars($_POST['subject']));
$message = strip_tags(htmlspecialchars($_POST['message']));

$to = "team.0cool@gmail.com"; // Change this email to your //
$subject = "$m_subject:  $name";
$body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\n\nEmail: $email\n\nSubject: $m_subject\n\nMessage: $message";
$header = "From: $email";
$header .= "Reply-To: $email";	

if(!mail($to, $subject, $body, $header))
  http_response_code(500);
?>


Est ce que cela ne viendrai pas du serveur FREE ?

D'avance merci de votre aide.
Modifié par BruChri (15 Jun 2025 - 10:04)
Bonjour,
tu parles de free, donc des pages free perso, free n'étant pas un hébergeur payant. La fonction mail de php fonctionne normalement sur les pages perso de free, si elle est configurée avec les conseils donnés dans le lien ci-dessous.
http://les.pages.perso.chez.free.fr/utiliser-correctement-les-formulaires-d-envoi-sur-les-pp-de-free.io
Pourtant, j'ai le souvenir d'avoir enlevé le formulaire d'un site chez eux, justement parce que ça ne fonctionnait pas. Le site en question n'étant pas critique, je n'ai pas approfondi et j'ai supprimé le formulaire.
De toute façon, de plus en plus d'hébergeurs pro payants n'acceptent plus la fonction mail de php. J'en ai fait l'expérience il y a quelques mois. Il faut dans ce cas passer par un mailer (PHPMailer, par exemple).
On n'a pas le lien du site en question ?
Sur le lien que j'ai donné
http://les.pages.perso.chez.free.fr/utiliser-correctement-les-formulaires-d-envoi-sur-les-pp-de-free.io
il y a dans la section "Scripts" un autre lien qui pointe vers un fichier zip. Ce fichier, à décompresser, contient tout ce qu'il faut pour réaliser un formulaire compatible. Le html et le php d'un formulaire qui est censé fonctionner sur les pages free perso. Il y a aussi un modèle de htaccess à modifier en conséquence afin d'activer php5 (!!!), ainsi qu'un modèle de captcha crypté.
Je n'ai pas testé tout ça, car je le découvre. Il n'est pas étonnant que ton formulaire (et le mien) ne fonctionne pas. Les serveurs pages free perso ont quelques petites particularités.
Ce serait dommage de renoncer, le site est sympa, il mériterait un hébergement payant pro (40 € par an en mutualisé, SSL et tout...). Free perso est bien pour des sites d'amis ou sans enjeu. Après, il faut passer au niveau au-dessus. Et enlève ton formulaire qui ne fonctionne pas, c'est très mauvais pour les clients.
Attention au trafic qu'un formulaire pourrait générer sur ces pages. Free apporte quelques limitations dans le volume de trafic. Il faut lire les docs, situées sur le lien donné. Quand j'aurai le temps, je vais tenter de mettre en place tout ça, mais ce n'est pas pour cette semaine...
Bon courage.
Bonjour, 103 Errors, 15 warning(s) => https://validator.w3.org/check?uri=http%3A%2F%2Fbrunohague.free.fr%2F&charset=%28detect+automatically%29&doctype=Inline&group=0
Il faut corriger les erreurs détectées par le validateur, mais je vous recommande de changer de doctype car vous utilisez la balise <section> qui est une balise HTML5.
Votre doctype devrait être celui-ci :

<!DOCTYPE html>
<html lang="fr">

Apparemment vous n'avez pas compris comment fonctionne un formulaire. Un premier point est la manière dont le formulaire est envoyé, c'est le rôle de l'attribut method de la balise <form>. Si vous souhaitez récupérer en PHP en $_POST vos informations il faut les passer avec la méthode post. (voir les liens vers la doc MDN posté plus haut).
Ensuite les valeurs des champs sont récupérer coté serveur dans la superglobal $_POST, pour que la valeur atteigne la clés $_POST['name']; il faut que le champ input possède un attribut name="name". Sans cet attibut name, le serveur ne pourras pas récupérer les informations contenue dans les champs.
Modifié par casper2 (15 Jun 2025 - 12:56)
casper2 a écrit :
Bonjour, 103 Errors, 15 warning(s) =&gt; https://validator.w3.org/check?uri=http%3A%2F%2Fbrunohague.free.fr%2F&amp;charset=%28detect+automatically%29&amp;doctype=Inline&amp;group=0
Il faut corriger les erreurs détectées par le validateur, mais je vous recommande de changer de doctype car vous utilisez la balise &lt;section&gt; qui est une balise HTML5.
Votre doctype devrait être celui-ci :

&lt;!DOCTYPE html&gt;
&lt;html lang="fr"&gt;

Apparemment vous n'avez pas compris comment fonctionne un formulaire.

Merci casper2, oui j'avoue que je comprend rien. Je suis perdu. J'ai changé le doctype. Un suppo et au lit
BruChri a écrit :

Merci Bongota, j'avoue que je suis complètement perdu après le téléchargement de ces fichiers.
Je pense que je vais renoncer à ce type de formulaire.
Bon courage.

C'est dommage, d'autant plus que c'est apparemment le seul type de formulaire qui fonctionne sur les pages free perso. Il est vrai que les fichiers du lien sont un peu mélangés.
J'ai tenté, très rapidement, un formulaire avec mail de php sur une page free perso. Je n'ai pas eu de message d'erreur, mais le message n'est pas arrivé à destination. Ce n'était qu'un essai furtif. Il faut respecter les consignes des pages free perso. Leur serveur est un peu spécial.
Si j'ai le temps, je vais tenter d'en mettre un en place sur une page de free perso, je te tiendrai au courant. En attendant, il faut donner un mail de lien, crypté afin qu'il n'apparaisse pas en clair sur le site.
Avant tout, ce serait bien, comme signalé dans les autres posts, de corriger les erreurs les plus grossières du html.