[RESOLU] Formulaire de contact free ou nulled

Vous recherchez un programme, une solution, posez votre question ici.
Répondre
Avatar du membre
Auteur du sujet
Orimatema
Habitué
Habitué
Messages : 148
Enregistré le : il y a 4 ans

[RESOLU] Formulaire de contact free ou nulled

Message par Orimatema »

Bonjour
Comme je n'ai pas trop envie de me faire une formation php/javascript vite fait, je suis à la recherche d'un formulaire de contact fonctionnel en gratuit ou en "nulled", quoique j'en aie testé quelques uns sans succès car ils n'ont de "nulled" que l'étiquette (simple forms, conformy...)
Je suis allé sur php scripts en gratuit mais rien qui ne soit fonctionnel non plus
Si vous avez ce genre de ressource (c'est personnel) ou un/des sites qui en proposent des fiables, merci
(Je ne recherche pas de truc sophistiqué)
Avatar du membre
sharky
Habitué
Habitué
Messages : 211
Enregistré le : il y a 7 ans

Message par sharky »

Hello,

Il manque peut-être des prérequis ou des contraintes.
Comme je ne connais pas si c'est pour intégrer un CMS ou non, pourquoi ne pas utiliser google ou Microsoft forms selon le compte que tu as ?

Si par contre, tu as un CMS sur un hébergeur (Joomla, wordpress, drupal ...) il existe des extensions pour les ajouter et créer.

Sinon, voici quelques liens qui peuvent peut-être t'aider

https://www.freecontactform.com/forms/contact-form-free
https://www.easyphpcontactform.com/
https://github.com/aurelienpierreeng/St ... ntact-form
https://formspree.io/html/
Avatar du membre
Auteur du sujet
Orimatema
Habitué
Habitué
Messages : 148
Enregistré le : il y a 4 ans

Message par Orimatema »

Bonjour et déjà merci pour ta réponse @sharky
Le dispose d'un hébergement mutualisé et j'ai un site statique "vitrine" pour mes activités
J'aurais pu mettre en clair ou en crypté basique, mon adresse mail de contact mais je préfère une application serveur pour déjouer les robots (j'ai essayé de crypter l'adresse ail en javascript, en css, en image mais ça ne fonctionne pas, n'est pas "convivial" et ça ne fait pas "sérieux"
D'où la demande pour un script PhP
J'ai testé les deux premières ressources que tu proposes, sans résultat
Je vais voir pour les autres et je ferai un feedback ;)
Avatar du membre
sharky
Habitué
Habitué
Messages : 211
Enregistré le : il y a 7 ans

Message par sharky »

Tu as raison, il est préférable de mettre un formulaire.
Mais ne soit pas bloqué sur le PHP, il n'est pas nécessaire d'avoir du PHP pour un formulaire. On le fait sans aussi.
Il est important de connaitre les méthodes d'envoi de mail de ton hébergeur. Car ton formulaire envoie un mail au bout du compte.

Sinon tout simplement

Code : Tout sélectionner

<?php
// contact.php

// 1) CONFIGURATION
$to = "contact@votre-domaine.fr"; // <-- Remplacez par votre adresse de réception
$siteName = "Mon site";          // <-- Optionnel (nom affiché dans l'objet)

// 2) INITIALISATION
$errors = [];
$success = false;

function clean_text(string $s): string {
  $s = trim($s);
  $s = str_replace(["\r", "\n"], " ", $s); // évite l'injection d'en-têtes
  return $s;
}

function e(string $s): string {
  return htmlspecialchars($s, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");
}

// 3) TRAITEMENT POST
$nom_prenom = $_POST["nom_prenom"] ?? "";
$email      = $_POST["email"] ?? "";
$sujet      = $_POST["sujet"] ?? "";
$message    = $_POST["message"] ?? "";

// Champ anti-spam (honeypot) : doit rester vide
$website = $_POST["website"] ?? "";

if ($_SERVER["REQUEST_METHOD"] === "POST") {
  // Honeypot
  if ($website !== "") {
    $errors[] = "Une erreur est survenue.";
  }

  // Validation
  $nom_prenom = clean_text($nom_prenom);
  $email      = trim($email);
  $sujet      = clean_text($sujet);
  $message    = trim($message);

  if ($nom_prenom === "") $errors[] = "Le champ « Nom & prénom » est obligatoire.";
  if ($email === "" || !filter_var($email, FILTER_VALIDATE_EMAIL)) $errors[] = "Veuillez saisir une adresse e-mail valide.";
  if ($sujet === "") $errors[] = "Le champ « Sujet » est obligatoire.";
  if ($message === "") $errors[] = "Le champ « Message » est obligatoire.";

  // Envoi
  if (!$errors) {
    $subject = "[" . $siteName . "] " . $sujet;

    $body  = "Nouveau message depuis le formulaire de contact\n\n";
    $body .= "Nom & prénom : " . $nom_prenom . "\n";
    $body .= "E-mail       : " . $email . "\n";
    $body .= "Sujet        : " . $sujet . "\n\n";
    $body .= "Message :\n" . $message . "\n";

    $headers = [];
    $headers[] = "MIME-Version: 1.0";
    $headers[] = "Content-Type: text/plain; charset=UTF-8";
    // From doit idéalement être une adresse du domaine (meilleure délivrabilité)
    $headers[] = "From: " . $siteName . " <no-reply@votre-domaine.fr>";
    // Reply-To permet de répondre directement au demandeur
    $headers[] = "Reply-To: " . $email;

    $ok = @mail($to, $subject, $body, implode("\r\n", $headers));

    if ($ok) {
      $success = true;
      // Optionnel : vider les champs après succès
      $nom_prenom = $email = $sujet = $message = "";
    } else {
      $errors[] = "Impossible d’envoyer le message pour le moment. Réessayez plus tard.";
    }
  }
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Contact</title>
</head>
<body>

<h1>Formulaire de contact</h1>

<?php if ($success): ?>
  <p><strong>Merci.</strong> Votre message a bien été envoyé.</p>
<?php endif; ?>

<?php if ($errors): ?>
  <div>
    <p><strong>Merci de corriger les erreurs suivantes :</strong></p>
    <ul>
      <?php foreach ($errors as $err): ?>
        <li><?php echo e($err); ?></li>
      <?php endforeach; ?>
    </ul>
  </div>
<?php endif; ?>

<form method="post" action="">
  <p>
    <label for="nom_prenom">Nom &amp; prénom</label><br />
    <input type="text" id="nom_prenom" name="nom_prenom" value="<?php echo e($nom_prenom); ?>" required />
  </p>

  <p>
    <label for="email">Adresse e-mail</label><br />
    <input type="email" id="email" name="email" value="<?php echo e($email); ?>" required />
  </p>

  <p>
    <label for="sujet">Sujet</label><br />
    <input type="text" id="sujet" name="sujet" value="<?php echo e($sujet); ?>" required />
  </p>

  <p>
    <label for="message">Message</label><br />
    <textarea id="message" name="message" rows="8" cols="40" required><?php echo e($message); ?></textarea>
  </p>

  <!-- Honeypot anti-spam : à laisser vide (ne pas renommer en "website" si vous avez déjà un champ réel "site web") -->
  <div style="display:none;">
    <label for="website">Website</label>
    <input type="text" id="website" name="website" value="" autocomplete="off" />
  </div>

  <p>
    <button type="submit">Envoyer</button>
  </p>
</form>

</body>
</html>
Il faut peut-être adapté selon tes méthode SMTP/POST de ton hébergement. Tu es chez qui ?
Avatar du membre
Auteur du sujet
Orimatema
Habitué
Habitué
Messages : 148
Enregistré le : il y a 4 ans

Message par Orimatema »

Je suis hébergé chez o2switch et effectivement je bataille avec les ID SMTP
Deux coups de fil et 2 infos différentes...mais j'ai testé les deux sans succès
J'ai copié ton script, je vais voir ça dans la journée, merci ;)
Avatar du membre
sharky
Habitué
Habitué
Messages : 211
Enregistré le : il y a 7 ans

Message par sharky »

Je ne connais pas o2switch. Et en plus pas de FAQ.
Il te faut donc ouvrir un ticket pour connaitre la méthode de soumissions de formulaire sur leur hébergement.
Avatar du membre
Auteur du sujet
Orimatema
Habitué
Habitué
Messages : 148
Enregistré le : il y a 4 ans

Message par Orimatema »

https://www.o2switch.fr/
Bon, apparemment le problème est réglé chez mon hébergeur. A la suite d'un énième coup de fil on a su me donner les bons renseignements sur l'hôte SMTP et les indications de mes identifiants. Il aurait été dommage que je ne puisse pas me servir d'une ressource que j'ai achetée 40€ chez Envato!
Par contre je n'ai pas pu envoyer de mail avec les autres formulaires: le mail part (où?) et n'arrive jamais et ce sans message d'erreur
Merci @all pour l'aide apportée :)
Avatar du membre
ThiWeb
Administrateur
Administrateur
Messages : 10184
Enregistré le : il y a 17 ans
Localisation : On earth
Contact :

Message par ThiWeb »

La bonne nouvelle : pour un **formulaire de contact simple, fiable, gratuit, sans prise de tête**, tu n’as *pas* besoin de te plonger dans une formation PHP/JS ni de chercher des scripts “nulled” (souvent incomplets, vérolés ou cassés).
Il existe des solutions **propres, gratuites, fonctionnelles**, et surtout **sans dépendances lourdes**.

Je te propose **3 options** :
1) un script PHP minimaliste **clé en main** (aucun JS requis)
2) une version un peu plus robuste avec validation côté serveur
3) des services externes gratuits si tu veux zéro backend

---

## 🟩 1. **Le formulaire PHP minimaliste (100% fonctionnel)**
C’est le plus simple possible : un fichier `contact.html` + un fichier `send.php`.
Pas de dépendances, pas de framework, pas de “nulled”.

### **contact.html**
```html

Code : Tout sélectionner

<form action="send.php" method="POST">
    <label>Votre nom :</label>
    <input type="text" name="name" required>

    <label>Votre email :</label>
    <input type="email" name="email" required>

    <label>Message :</label>
    <textarea name="message" required></textarea>

    <button type="submit">Envoyer</button>
</form>
```

### **send.php**
```php

Code : Tout sélectionner

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {

    $name    = htmlspecialchars($_POST["name"]);
    $email   = htmlspecialchars($_POST["email"]);
    $message = htmlspecialchars($_POST["message"]);

    $to      = "ton-email@domaine.fr";
    $subject = "Nouveau message depuis le formulaire";
    $body    = "Nom : $name\nEmail : $email\nMessage :\n$message";

    $headers = "From: $email";

    if (mail($to, $subject, $body, $headers)) {
        echo "Message envoyé.";
    } else {
        echo "Erreur lors de l'envoi.";
    }
}
?>
```

👉 **Ça marche sur n’importe quel hébergement PHP**, même OVH, o2switch, LWS, etc.
👉 Pas de dépendances, pas de JS, pas de librairies.

---

## 🟦 2. **Version un peu plus solide (validation + anti-spam léger)**
Si tu veux éviter les bots sans captcha :

### Ajoute un champ “honeypot”
Dans `contact.html` :
```html

Code : Tout sélectionner

<input type="text" name="website" style="display:none">
```

Dans `send.php` :
```php

Code : Tout sélectionner

if (!empty($_POST["website"])) {
    exit("Spam détecté.");
}
```

Et une validation email :
```php

Code : Tout sélectionner

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    exit("Email invalide.");
}
```

Ça reste ultra simple mais beaucoup plus fiable.

---

## 🟨 3. **Si tu veux zéro backend : services gratuits fiables**
Sans PHP, sans JS, sans serveur, juste un formulaire HTML :

### 🔹 **FormSubmit** (gratuit, fiable)
Formulaire :
```html

Code : Tout sélectionner

<form action="https://formsubmit.co/ton-email@domaine.fr" method="POST">
    <input type="text" name="name" required>
    <input type="email" name="email" required>
    <textarea name="message" required></textarea>
    <button type="submit">Envoyer</button>
</form>
```

### 🔹 **StaticForms**
Même principe, gratuit jusqu’à 100 envois/mois.

### 🔹 **Netlify Forms** (si ton site est statique)
Très fiable, mais nécessite d’héberger sur Netlify.

👉 Ces services sont **bien plus fiables** que les scripts “nulled” que tu as testés.

---

## 🟧 4. **Sites qui proposent des scripts PHP gratuits et fonctionnels**
Voici des sources **fiables**, sans “nulled” :

- **phpjabbers.com [(phpjabbers.com in Bing)](https://www.bing.com/search?q="https%3A ... scripts%2F")**
Scripts gratuits, propres, maintenus.
- **[codeseek.co](https://codeseek.co)**
Beaucoup de snippets simples.
- **[github.com](https://github.com)**
Cherche “php contact form” → tu trouveras des scripts minimalistes et maintenus.
- **[codewithawa.com](https://codewithawa.com)**
Très simple, orienté débutants.

---

## 🟩 Conclusion
Vu ton besoin (“pas sophistiqué”, “fonctionnel”, “gratuit”), la **solution la plus simple et fiable** est le petit script PHP ci-dessus.
Tu le poses sur ton serveur, tu mets ton email, et ça tourne.

Si tu veux, je peux aussi te générer :
- un formulaire avec design propre (Bootstrap ou minimaliste)
- une version avec fichier de log
- une version avec envoi SMTP (plus fiable que `mail()`)

Souhaites-tu que je t’adapte le formulaire à ton site actuel via un formulaire personnalisé ou que je t’ajoute une version SMTP pour fiabilité maximale ?

Copilot :copilot:
Avatar du membre
Auteur du sujet
Orimatema
Habitué
Habitué
Messages : 148
Enregistré le : il y a 4 ans

Message par Orimatema »

@ThiWeb:
C'est très gentil à toi de proposer de l'aide et je vais bien sûr tester les solutions que tu proposes, même si je ne les adopte pas, elles pourront toujours servir comme ressources d'apprentissage
Pour ce qui est de l'habillage d'un formulaire, ça je sais faire avec CSS et il faudrait que cela corresponde à la charte graphique de mon site
Je vais tester tout ça et je reviens te dire
Et merci pour les liens vers les ressources en ligne mais j'en ai déjà testé sans succès
Avatar du membre
Auteur du sujet
Orimatema
Habitué
Habitué
Messages : 148
Enregistré le : il y a 4 ans

Message par Orimatema »

Last:
Dans tout ce que tu as proposé seul fonctionne correctement
### 🔹 **FormSubmit** (gratuit, fiable) avec une inscription of course mais le gratuit n'est valable que pour 7 jours avant qu'on ne soit sollicité pour un article payant ou de la publicité
Ce que je n'aime pas c'est qu'on soit obligé de valider l'envoi par l'activation du formulaire via notre adresse d'inscription, c'est un peu lourd...
Mais dans la mesure où le problème est réglé chez mon hébergeur je vais en rester là
Merci @Thiweb
Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités