8710 sujets

Développement web côté serveur, CMS

Bonjour,

Je me bats depuis deux jours pour essayer de faire fonctionner ma page formulaire de contact. Smiley decu
Je sollicite vos lumières et merci par avance pour votre aide.

Voici mes codes HTML et ensuite PHP :
   <div id="form-main">
  <div id="form-div">
    <form method="post" action="contact.php">
      
      <p class="name">
        <input name="name" type="text" class="validate[required,custom[onlyLetter],length[0,100]] feedback-input" placeholder="Nom" id="name" />
      </p>
      
      <p class="email">
        <input name="email" type="text" class="validate[required,custom[email]] feedback-input" id="email" placeholder="Email" />
      </p>
      
      <p class="text">
        <textarea name="text" class="validate[required,length[6,300]] feedback-input" id="comment" placeholder="Message"></textarea>
      </p>
      
      
      <div class="submit">
        <input type="submit" value="SEND" id="button-blue"/>
        <div class="ease"></div>
      </div>
    </form>
  </div>    


et la page "contact.php" :

  <?php
$adresse="jean.dupont@gmail.com.com";
$from="From: " . $_POST['name'] . " ". $_POST['email'] ."<". $_POST['comment'] . ">\r\n";
$from.="Reply-To: " . $_POST['name'] . " ". $_POST['email'] ."<". $_POST['comment'] . ">\r\n";
$from.="X-priority:3\r\n";
$texte="<html>";
$texte.= $_POST['texte'];
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
if (mail($adresse,$sujet,$texte,$from))
echo("<center><font color=green><br><br><br><h2>Formulaire envoyé ! Je vous répondrais rapidement. Merci!</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>" );
else
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href="mailto:$adresse">classiquement</a>" );
?>   
Modérateur
Bonjour,

Côté Php, Il vient d'où le $_POST['comment'] ?

Dans if (mail($adresse,$sujet,$texte,$from)), $sujet est au libre choix du serveur ? Smiley cligne

Je serais fort surpris qu'avec une telle adresse un courriel puisse un jour arriver : $adresse="jean.dupont@gmail.com.com"; Smiley langue
Bonjour Greg et merci pour cette réponse.
En effet il y avait de grosses erreurs. J'ai fait quelques modifications, sans plus de succès.
Quand je teste ma page en ligne voilà ce qui s'affiche: upload/1494489275-65553-pageerreur.jpg

et voici le code corrigé, enfin j'espère....
 <div id="form-main">
  <div id="form-div">
    <form method="post" action="contact.php">
      
      <p class="name">
        <input name="name" type="text" class="validate[required,custom[onlyLetter],length[0,100]] feedback-input" placeholder="Nom" id="name" />
      </p>
      
      <p class="email">
        <input name="email" type="text" class="validate[required,custom[email]] feedback-input" id="email" placeholder="Email" />
      </p>
      
      <p class="text">
        <textarea name="text" class="validate[required,length[6,300]] feedback-input" id="comment" placeholder="Message"></textarea>
      </p>
      
      
      <div class="submit">
        <input type="submit" value="SEND" id="button-blue"/>
        <div class="ease"></div>
      </div>
    </form>
  </div> 



ma page contact.php
<?php
$adresse="jean.dupont@gmail.com.";
$from="From: " . $_POST['name'] . " ". $_POST['email'] ."<". $_POST['comment'] . ">\r\n";
$from.="Reply-To: " . $_POST['name'] . " ". $_POST['email'] ."<". $_POST['comment'] . ">\r\n";
$from.="X-priority:3\r\n";
$texte="<html>";
$texte.= $_POST['texte'];
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html";
if (mail($adresse,$texte,$from))
echo("<center><font color=black><br><br><br><h2>Message envoyé</h2></font><br><a href=../index..html>Accueil</a></center>" );
else
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href="mailto:$adresse">classiquement</a>" );
?>    

Je patauge... Smiley confused
Merci pour votre aide.
Il y a un problème sur cette ligne déjà :
echo "<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href='mailto:".$adresse."'>classiquement</a>";

Écrire du HTML dans du PHP c'est pas super propre d'ailleurs.. je peux que te conseiller de séparer la logique de l'affichage
Et les structures simplifiées sont toujours sources d'erreurs, en plus de diminuer la visibilité du code, préfère les formes plus standards :
if () {
    //
} else {
    //
}

Modifié par Adwim (11 May 2017 - 10:20)
Modérateur
Erreur 500 ???

Soit une grosse erreur côté serveur. Il peut y avoir plusieurs source de ce genre d'erreur.

* Tu as modifié ton htaccess et une commande est mal digérée (j'ai eu le cas et j'ai cherché comme un fou pour me rendre compte au final que la config du serveur ne tolérait pas une de mes lignes). Essaie sans. Si ça passe, le problème vient de là. Ensuite tu commente toutes les lignes sauf la première. Tu teste, si c'est ok, tu dé-commente la seconde puis etc jusqu'à la dernière.

* Tu as initié une boucle infinie. Un exemple bien sympathique pour illustrer mon propos

for ($i = 1; $i > 0; ++$i) { echo 'Exemple bidon mais ça peut arriver de façon plus subtile'; }


* Autre... En tout cas rien ne cause ceci dans le bout de code posté.

Par contre, au risque de faire mon re-lou, il vient d'où $_POST['comment'] vu qu'il n'est pas transmit par le formulaire ?


Autrement je suis en partie d'accord avec la remarque d'Adwim. Je ne vois pas d'erreur à la ligne citée toutefois [Edit: en fait si comme me le fait remarquer Adwin dans la réponse suivante] il reste préférable de séparer html et php (dans la mesure du possible bien entendu) et effectivement les structures complètes donnent un excellent visuel même si par la suite c'est plus une question d'habitude. Celui qui a l'habitude sans les marques de paragraphe s'y retrouve tout autant que celui qui les appose systématiquement. Le tout étant de toujours coder de la même façon et de ne pas mélanger les styles. Smiley smile


Conclusion, l'origine du problème est comme la vérité, ailleurs. Smiley cligne [Edit: en fait l'origine du problème semble bien être provenir de ce malheureux bout de code]
Modifié par Greg_Lumiere (11 May 2017 - 11:57)
Modérateur
Au fait, la fonction mail($adresse,$texte,$from) ne se forme pas ainsi.

L'objet du message semble indispensable
mail('adresse@provider.ext', 'Objet', 'Contenu')

D'un point de vue du serveur, les en-têtes sont facultatives. Du point de vue des messageries, elles se révèlent fort souvent indispensables si vous ne souhaitez pas que votre message finisse dans la boi-boite à spam.


Quand vous aurez finis de faire mumuse avec mail(), je vous invite à vous rapprocher de PHPMailer Smiley cligne
Greg_Lumiere a écrit :
Erreur 500 ???
Soit une grosse erreur côté serveur. Il peut y avoir plusieurs source de ce genre d'erreur.


Ou tout simplement : une grosse erreur de syntaxe dans le code Smiley cligne

La ligne que je cite comporte une FatalErrorException, en ouvrant à nouveau une apostrophe on coupe le echo en question, générant ainsi l'erreur 500.

Greg_Lumiere a écrit :
effectivement les structures complètes donnent un excellent visuel même si par la suite c'est plus une question d'habitude. Celui qui a l'habitude sans les marques de paragraphe s'y retrouve tout autant que celui qui les appose systématiquement.


Le problème de la structure simplifiée c'est qu'elle n'apporte aucun gain de visibilité, et génère des cas un peu stupides de ce genre :

// // affiche : 2
if (false)
    echo 1;
    echo 2;

// affiche : 1,3
if (true)
    echo 1;
else
    echo 2;
    echo 3;

// erreur fatale : le echo 2 se trouve en dehors du if
if (true)
    echo 1;
    echo 2;
else
    echo 3;
    echo 4;


On trouve également des tordus qui combinent les 2 Smiley sweatdrop
if (true) {
    echo 1
}
else
    echo 2;


Les recommandations PSR déconseillent également les structures simplifiées, c'est une raison suffisante pour ne plus les utiliser Smiley cligne : http://www.php-fig.org/psr/psr-1/
Modifié par Adwim (11 May 2017 - 11:48)
Modérateur
Adwim a écrit :


Ou tout simplement : une grosse erreur de syntaxe dans le code Smiley cligne

La ligne que je cite comporte une FatalErrorException, en ouvrant à nouveau une apostrophe on coupe le echo en question, générant ainsi l'erreur 500.
Oups, autant pour moi, je n'avais prêté attention au fait qu'il n'avait pas échappé les guillemets. Désolé Smiley confused
Modifié par Greg_Lumiere (11 May 2017 - 11:55)
Merci à tous les deux(Greg et Adwim) pour votre aide. Smiley smile
Je vais vous dire tout simplement, que j'ai récupéré le formulaire HTML+CSS parce qu'il me plait beaucoup dans sa présentation, et à partir de là j'ai essayé de lui adjoindre la page contact.php, mais je ne comprends rien au PHP.(voilà c'est dit!! Smiley confused )
Je pensais qu'avec seulement 3 champs (nom,mail,message) quelques lignes de PHP feraient l'affaire.
Là je suis largué, et je ne sais pas ce que je dois faire.
Il n'existe pas un script PHP tout simple où j'aurais juste à mettre mon adresse mail en remplaçant celle de l'exemple ?
Sinon je ne vais pas y arriver.

Dans tous les cas merci encore.
Modérateur
Il n'y a pas de honte. J'étais dans le même cas que toi auparavant. Comme tout le monde en fait, nous ne sommes pas nés avec des lignes de code sortant naturellement de la raie des fesses.

Je pense que trifouiller la fonction mail() ne te permettra pas de pérenniser ton projet et suivant ton client de messagerie tu risque de devoir revenir sur le code régulièrement.

Je pense qu'il te faille utiliser un outil "clé en main". Je ne peux que te conseiller PHPMailer dont je t'ai mis le lien précédemment.
La mise en place est fort simple, il s'agit de télécharger les quelques fichiers prévus à cet effet puis de paramétrer l'outil en PHP.

Tu peux t'inspirer de ce sujet dont l'auteur a bien comprit comment l'intégrer.

Après, si comme lui tu essuie quelques déboires, le forum reste ouvert Smiley biggrin


Jele a écrit :
j'ai récupéré le formulaire HTML+CSS parce qu'il me plait beaucoup
Dommage que le dit formulaire ne date du Moyen-Âge Smiley cligne
<center> est une hérésie causée par la guerre de cent ans Smiley lol
Bonjour,

J'ai trouvé ce que je cherchais.
Quand on n'est pas développeur comme c'est mon cas, et qu'on a pas l'intention de le devenir,
on cherche le bout de code qui nous manque. Dans mon cas c'etait quelques lignes de PHP, et non apprendre le PHP pendant des semaines pour écrire 5 lignes.
Tout ça pour dire que j'ai trouvé quelqu'un qui a généreusement mis en ligne un formulaire de contact très bien fait.
voici son adresse, si ça peut aider :
http://mark-anthony.ca/html5-contact-form-with-css-php-tutorial/