Pages :
(reprise du message précédent)

Oui, je n'ai pas pensé à parcourir l'intégralité du sujet, meaculpa.

L'adaptation reste facile (même pour vous).

Il vous suffit de virer tout ce qu'il y après </table>';
et d'y apposer tout ce que j'ai mis à partir de unset en y remplaçant les variables contenues dans la fonction mail() par leurs homologues.
Modifié par Greg_Lumiere (31 Dec 2018 - 13:22)
C'est à dire comme ci-dessous ? Et là on sécurise les données saisies ?

Merci d'avance. Je suis un peu emmerdant je sais !

<?php
session_start();//on démarre la session
// $errors = [];
//On check les infos transmises lors de la validation
  if(!empty($errors)){ // si erreur on renvoie vers la page précédente
  $_SESSION['errors'] = $errors;//on stocke les erreurs
  $_SESSION['inputs'] = $_POST;
  header('Location: contact.html');
  }else{
  $_SESSION['success'] = 1;
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  $headers .= 'FROM:' . htmlspecialchars($_POST['email']);
  $to = 'contact@6ro.fr'; // Insérer votre adresse email ICI
  $subject = 'Message envoyé par ' . htmlspecialchars($_POST['name']);
  $message_content = '
  <table>

/** reset des données envoyées **/
unset($_POST);

/** envoi du courriel **/
if (mail($to, $subject, $message_content, $headers)) {
$frontMsg = 'You mail was correctly sent, thank you!';
$frontLink = '<a href="home.html">Return Home</a>';
} else {
$frontMsg = 'An error has occurs. Your message don\'t have been sent!';
$frontLink = '<a href="contact.html">Return Form</a>';
}

/** Affichage du message pour l'utilisateur **/
echo '<div>', $frontMsg, '</div>';
echo '<p>', $frontLink, '</p>';
?
Donc comme ci-dessous.
Et là on sécurise les données saisies ?

<?php
session_start();//on démarre la session
// $errors = [];
//On check les infos transmises lors de la validation
  if(!empty($errors)){ // si erreur on renvoie vers la page précédente
  $_SESSION['errors'] = $errors;//on stocke les erreurs
  $_SESSION['inputs'] = $_POST;
  header('Location: contact.html');
  }else{
  $_SESSION['success'] = 1;
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  $headers .= 'FROM:' . htmlspecialchars($_POST['email']);
  $to = 'contact@6ro.fr'; // Insérer votre adresse email ICI
  $subject = 'Message envoyé par ' . htmlspecialchars($_POST['name']);
  $message_content = '
  <table>
  <tr>
  <td><b>Emetteur du message:</b></td>
  </tr>
  <tr>
  <td>'. $subject . '</td>
  </tr>
  <tr>
  <td><b>Contenu du message:</b></td>
  </tr>
  <tr>
  <td>'. htmlspecialchars($_POST['message']) .'</td>
  </tr>
  </table>
  ';

/** reset des données envoyées **/
unset($_POST);

/** envoi du courriel **/
if (mail($to, $subject, $message_content, $headers)) {
$frontMsg = 'You mail was correctly sent, thank you!';
$frontLink = '<a href="home.html">Return Home</a>';
} else {
$frontMsg = 'An error has occurs. Your message don\'t have been sent!';
$frontLink = '<a href="contact.html">Return Form</a>';
}

/** Affichage du message pour l'utilisateur **/
echo '<div>', $frontMsg, '</div>';
echo '<p>', $frontLink, '</p>';
?
* Il vous manque un bout au niveau de <table> (la fin de la table ainsi que de l'instruction).

* Disons que là vous sécurisez à minima par des htmlspecialchars() mais vous pourriez aller bien plus loin.

* vous conditionnez $errors mais cette variable sera systématiquement vide en l'état. Je ne vois aucun intérêt à cette condition qui fourmille de bêtises et qui n'est jamais fermée.

* Quel est l'intérêt de $_SESSION['success'] = 1; ? A priori aucun !

* "emmerdant" ? Je ne me serais pas permis Smiley smile

Pour résumer, un bon départ serait:
<?php
session_start();//on démarre la session ; obligatoire si on souhaite utiliser $_POST et $_SESSION

/** On prend l'habitude de traiter les données reçues en amont du script afin d'y appliquer nos filtres de sécurisation (voir autres sujets du forum pour plus de détail) **/
$email = htmlspecialchars($_POST['email']);
$name = htmlspecialchars($_POST['name']);
$message = htmlspecialchars($_POST['message']);

/** reset des données envoyées **/
unset($_POST);

/** Création du courriel **/
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  $headers .= 'FROM:' . $email;
  $to = 'contact@6ro.fr'; // Insérer votre adresse email ICI
  $subject = 'Message envoyé par ' . $name;
  $message_content = '
  <table>
  <tr>
  <td><b>Emetteur du message:</b></td>
  </tr>
  <tr>
  <td>'. $subject . '</td>
  </tr>
  <tr>
  <td><b>Contenu du message:</b></td>
  </tr>
  <tr>
  <td>'. $message .'</td>
  </tr>
  </table>
  ';

/** envoi du courriel **/
if (mail($to, $subject, $message_content, $headers)) {
$frontMsg = 'Your mail was correctly sent, thank you!';
$frontLink = '<a href="home.html">Return Home</a>';
} else {
$frontMsg = 'An error has occurs. Your message doesn\'t have been sent!';
$frontLink = '<a href="contact.html">Return Form</a>';
}

/** Affichage du message pour l'utilisateur **/
echo '<div>', $frontMsg, '</div>';
echo '<p>', $frontLink, '</p>';
?>

Modifié par Greg_Lumiere (31 Dec 2018 - 13:48)
Oui ça fonctionne mais le message est sur la page suivante, pas sur la même par, en dessous du formulaire par exemple !

Sinon j'avais un truc qui fonctionne très bien sur : https://www.cyril-d.fr/form4/
mais qui ne gère pas le reCaptcha en mode invisivle.
Sérieux ?
Au risque de me répéter: sérieux ? T'as un truc qui te va et tu questionne sur un truc qui ne te va pas ?!

Pour que le message viennent sous le formulaire il faut récupérer le résultat de l'envoi du script. Je le répète mais c'est impossible uniquement en html.


Bon, c'est pas tout ça mais faut que je prépare mon réveillons maintenant alors, bonne année et à l'année prochaine Smiley smile
Non, ça ne fonctionne pas comme je le souhaite.

C’est pourquoi j’ai mis le lien https://www.cyril-d.fr/form4/ en exemple, la page est en html et le message de remerciement se fait sur la même page après le submit.

Peut-être que quelqu’un peut me dire comment adapter le formulaire du lien en utilisant le recaptcha en mode invisible et non case à cocher.

Merci d’avance.
Comme t'a dit Greg_Lumiere qui est un dieu du code, ce n'est pas possible en html pure. Regarde si il n'y a pas un coup de Js derrière ... Smiley vieux
Merci.

J’aI bien compris que c’était un As et moi qui l’ennui avec mon formulaire tout nase.

Oui apparemment dans l’exemple que j’ai mis y’a du js ! Mais j’y comprends rien.

C’est la loose pour moi, mais en ce moment je n’ai pas les moyens de payer un développeur, j’essaye de me débrouiller tout seul et je galère.
Comme je suis plus sympa que Grer dit la lumière éteinte Smiley blebleb

Ton code en js qui va bien

$(function () {

    window.verifyRecaptchaCallback = function (response) {
        $('input[data-recaptcha]').val(response).trigger('change')
    }

    window.expiredRecaptchaCallback = function () {
        $('input[data-recaptcha]').val("").trigger('change')
    }

    $('#contact-form').validator();

    $('#contact-form').on('submit', function (e) {
        if (!e.isDefaultPrevented()) {
            var url = "contact.php";

            $.ajax({
                type: "POST",
                url: url,
                data: $(this).serialize(),
                success: function (data) {
                    var messageAlert = 'alert-' + data.type;
                    var messageText = data.message;

                    var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>';
                    if (messageAlert && messageText) {
                        $('#contact-form').find('.messages').html(alertBox);
                        $('#contact-form')[0].reset();
                        grecaptcha.reset();
                    }
                }
            });
            return false;
        }
    })
});


Ton formulaire c'est pour du bootstrap petit Smiley vieux Si tu n'utilises pas le framework qui va bien ça risque de ne pas marcher.

Avec la fiche explicative du site ça doit fonctionner Smiley baille

Si tu débutes, à mon avis passe ton chemin et va boire une bière Smiley biere
Modifié par Tintin75 (31 Dec 2018 - 16:55)
Merci Tintin75,

Je regarde ça demain, à vrai dire là je ne sais pas trop quoi en faire de ton js...

Je dois filer.

Bonne soirée et bonne année.
Tu dois faire un appel Js en début de code pour ça marche.

Le code tu le met dans un fichier par exemple Greg.js

Et tu fais un appel vers Greg.js pour que celui-ci soit pris en charge par ton serveur.

Tu as la doc sur le net, c'est la base. Joyeuses Pâques Smiley winner
Modifié par Tintin75 (31 Dec 2018 - 17:26)
Apparemment quelqu'un s'amuse, avec les liens que j'ai donné, à envoyer des message vide via mon formulaire.
Pages :