Que mettre dans mon contact.php ?

Résolu/Fermé
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013 - 15 nov. 2013 à 12:09
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013 - 18 nov. 2013 à 16:26
Bonjour, et merci d'avance pour toutes les personnes qui lisent ce topic.

Je suis en plein développement de mon site web mais ce contact.php me bloque la route.

Voici le code de mon form html situé dans mon index :

<form id="form-contact" method="post" action="#">

<div class="span6 center"><input type="text" placeholder="Nom" name="contact_name" id="contact_name" /></div>
<div class="span6 center"><input type="email" placeholder="Email" name="contact_email" id="contact_email" /></div>
<div class="span6 center hide"><input type="text" placeholder="Société" name="contact_company" id="contact_company" /></div>
<div class="span6 center hide"><input type="text" placeholder="Budget" name="contact_budget" id="contact_budget" /></div>
<div class="span6 center"><textarea cols="6" rows="4" placeholder="Message" name="contact_message" id="contact_message"></textarea></div>
<div class="span12 center"><a href="#" id="contact_send" class="btn btn-large btn-icon white"><i class="icon-envelope-alt"></i>Envoyer</a></div>
</form>

Ensuite voici le code javascript pour l'envoie du formulaire :

contactForm: function() {

"use strict";
var $tis = this;

$("#contact_send").click(function(e){
e.preventDefault();

var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
name = $('#contact_name').val(),
phone = $('#contact_phone').val(),
email = $('#contact_email').val(),
budget = $('#contact_budget').val(),
company = $('#contact_company').val(),
message = $('#contact_message').val(),
html = "",
error = false;

if(name === ""){
$('#contact_name').addClass('invalid');
error = true;
}else{
$('#contact_name').removeClass('invalid');
html = "name=" + name;
}

if ( $tis.formType === 1 ){
html += "&subject=Ask for proposal";

if(budget === ""){
$('#contact_budget').addClass('invalid');
error = true;
}else{
$('#contact_budget').removeClass('invalid');
html += "&budget=" + budget;
}

if(company === ""){
$('#contact_company').addClass('invalid');
error = true;
}else{
$('#contact_company').removeClass('invalid');
html += "&company=" + company;
}
} else {
html += "&subject=General Contact";
}

if(email === ""){
$('#contact_email').addClass('invalid');
error = true;
}else if(re.test(email) === false){
$('#contact_email').addClass('invalid');
error = true;
}else{
$('#contact_email').removeClass('invalid');
html += "&email="+ email;
}

if(message === ""){
$('#contact_message').addClass('invalid');
error = true;
}else{
$('#contact_message').removeClass('invalid');
html += "&message="+ message;
}

if(!error && !$tis.sendingMail) {
$tis.sendingMail = true;
$('#contact_send i').addClass('icon-cog icon-spin');
$('#contact_send').addClass('disabled');

$.ajax({
type: 'POST',
url: 'contact.php',
data: html,
success: function(msg){
$('#contact_send i').removeClass('icon-cog icon-spin');
$('#contact_send').removeClass('disabled');

if (msg === 'ok'){
$('#contact_send i').addClass('icon-ok').delay(1500).queue(function(next){
$(this).removeClass('icon-ok');
next();
});
$('#contact_send').addClass('btn-success').delay(1500).queue(function(next){
$(this).removeClass('btn-success');
next();
});
$('#form-contact')[0].reset();
}else{
$('#contact_send i').addClass('icon-remove').delay(1500).queue(function(next){
$(this).removeClass('icon-remove');
next();
});
$('#contact_send').addClass('btn-danger').delay(1500).queue(function(next){
$(this).removeClass('btn-danger');
next();
});
}

$tis.sendingMail = false;
},
error: function(){
$('#contact_send i').removeClass('icon-cog icon-spin');
$('#contact_send').removeClass('disabled');

$('#contact_send i').addClass('icon-remove').delay(1500).queue(function(next){
$(this).removeClass('icon-remove');
next();
});
$('#contact_send').addClass('btn-danger').delay(1500).queue(function(next){
$(this).removeClass('btn-danger');
next();
});

$tis.sendingMail = false;
}
});
} else{
$('#contact_send i').removeClass('icon-cog icon-spin');
$('#contact_send').removeClass('disabled');

$('#contact_send i').addClass('icon-remove').delay(1500).queue(function(next){
$(this).removeClass('icon-remove');
next();
});
$('#contact_send').addClass('btn-danger').delay(1500).queue(function(next){
$(this).removeClass('btn-danger');
next();
});
}

return false;
});
},



Et finalement après quelques jours de recherches pour coder mon contact.php je suis venu ici vous demander de l'aide pour envoyer ce mail.

Si quelqu'un aurait la gentillesse de prendre quelques minutes pour jeter un oeil et trouver une solution à mon problème ceci m'arrangerait grandement.

Merci d'avance.

14 réponses

jee pee Messages postés 40489 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 novembre 2024 9 433
18 nov. 2013 à 12:20
le paramétrage smtp dans php.ini ? https://a-pellegrini.developpez.com/tutoriels/php/mail/
1
jee pee Messages postés 40489 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 novembre 2024 9 433
15 nov. 2013 à 12:22
Salut,

Tu n'as pas réussi avec toutes ces lignes à indiquer quel est le problème, que se passe t-il, quel est le message d'erreur, ...
0
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013
15 nov. 2013 à 12:56
Salut jee pee, merci pour ta réponse.

Le problème est seulement que le mail ne s'envoie pas car mon fichier contact.php est vide, et après plusieurs jours je n'y parviens toujours pas. Sinon côté web lorsque je clique sur "envoyer" le bouton deviens rouge pour montrer l'échec de l'envoie vu que je n'est pas de fonction mail. Je pense que le code doit être relativement simple mais je n'est toujours pas réussi à faire fonctionner ce formulaire.
0
jee pee Messages postés 40489 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 novembre 2024 9 433
15 nov. 2013 à 15:58
Et où y a t-il du php dans tout ça ??

J'ai essayé de copier le code, mais il est incomplet il est où l'anchor # lancé par le bouton envoyer ?

Le code javascript il est dans quel source ? t il se termine par une virgule !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013
15 nov. 2013 à 16:25
La fonction pour envoyer le mail doit normalement se trouver dans le fichier "contact.php" comme il est appelé ici dans le javascript:
$.ajax({

type: 'POST',
url: 'contact.php',
data: html,
success: function(msg)


L'anchor # se trouve dans mon formulaire html :

<div class="span12 center"><a href="#" id="contact_send" class="btn btn-large btn-icon white"><i class="icon-envelope-alt"></i>Envoyer</a></div>

Et pour la virgule c'est normal il y a encore du code en dessous pour un deuxième type de formulaire.

Voila le site pour que vous compreniez mieux comment il fonctionne si ça peut vous éclaircir. Dans la rubrique contact.

www.kolibry-design.fr

Je précise que mon problème est simplement la fonction envoyant le mail sinon comme vous pouvez le constater la gestion des erreurs de syntaxe et des champs non valide sont fonctionnelles.

Merci encore de vous pencher sur mon problème.
0
jee pee Messages postés 40489 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 novembre 2024 9 433
15 nov. 2013 à 17:03
C'est un beau site. Mais vous devez être plus fort que moi en développement de site web ;-)

J'étais d'abord intervenu parce que la question ne me semblait pas claire.

J'espère que d'autres intervenants de CCM pourront vous aider. Vous avez aussi cet autre site CCM CS spécialisé dans le développement : https://codes-sources.commentcamarche.net/forum/

ps :

Je n'ai toujours pas compris comment le # lance le contact.php

et vous n'avez pas donné le contenu de contact.php
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
15 nov. 2013 à 17:11
Salut,

En testant l'envoie d'email depuis la rubrique Contact, le fichier contact.php retourne ce message d'erreur :

Warning: mail() expects at most 5 parameters, 7 given in /customers/4/e/8/kolibry-design.fr/httpd.www/contact.php on line 13

Vous avez donc définie deux paramètres en trop dans la fonction mail() de votre code. Vous pouvez trouver plus de détail sur l'utilisation de cette depuis la documentation officielle : https://www.php.net/manual/fr/function.mail.php

PS : penser à désactiver l'affichage des erreurs si le site est en production

Bonne journée
0
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013
15 nov. 2013 à 18:15
Merci pour les réponses et oui je suis assez nul en php ^^

Voila le pauvre contenu de mon contact.php :



<?php
$email_to = "contact@kolibry-design.fr";
@mail($email_to, $contact_name, $contact_phone, $contact_email , $contact_message);

?>

Je pense qu'il doit manquer quelques petites choses mais je ne vois pas trop quoi.
0
jee pee Messages postés 40489 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 novembre 2024 9 433
16 nov. 2013 à 00:52
Suivant la doc ci-dessus il ne faudrait (en version simple) que trois paramètres à la fonction mail (destinataire, sujet, message).

Donc concaténer les infos du contact avec le message pour en faire le corps du mail.
0
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013
18 nov. 2013 à 12:04
Même avec seulement 3 paramètres il refuse de m'envoyer ce mail. Et dans les exemples de la doc il monte jusqu'à 5 paramètres. Il doit manquer quelque chose de très banale mais la je sèche.
0
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013
18 nov. 2013 à 14:35
Alors finalement je reçois les emails mais ils sont vides, c'est déjà ça :)

Juste un problème de récupération des données voici mon contact.php actuel :
<?php

$contact_name = $_POST["#contact_name"];
$contact_company = $_POST["#contact_company"];
$contact_budget = $_POST["#contact_budget"];
$contact_message = $_POST["#contact_message"];
$email_to = "contact@kolibry-design.fr";
mail($email_to, $contact_name, $contact_message, $contact_budget, $contact_company);
?>

Si vous voyez un truc qui cloche ^^

Merci.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
18 nov. 2013 à 14:37
Les variables ne sont pas définies dans ton fichier contact.php. Il faudrait récupérer les infos de ton formulaire pour commencer (nom du contact, email, téléphone, message...)

Tu peux trouver plein de tutoriel avec ton moteur de recherche préféré sur l'utilisation de la fonction mail en php.
0
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013
Modifié par c0rnich0n le 18/11/2013 à 16:20
C'est bon ça fonctionne , je reçois les informations du formulaire dans le mail.

Mon dernier petit problème est que que l'email arrive à destination mais mon bouton "envoyer" est censé afficher une icône de validation mais il continue à afficher une croix rouge. le problème doit surement venir de cette fonction dans le fichier javascript :

$.ajax({
type: 'POST',
url: 'contact.php',
data: html,
success: function(msg){
$('#contact_send i').removeClass('icon-cog icon-spin');
$('#contact_send').removeClass('disabled');
      
if (msg === 'ok'){
$('#contact_send i').addClass('icon-ok').delay(1500).queue(function(next){
$(this).removeClass('icon-ok');
next();
});

$('#contact_send').addClass('btn-success').delay(1500).queue(function(next){
$(this).removeClass('btn-success');
next();
});

$('#form-contact')[0].reset();
}

else{
$('#contact_send i').addClass('icon-remove').delay(1500).queue(function(next){
$(this).removeClass('icon-remove');
next();
});

$('#contact_send').addClass('btn-danger').delay(1500).queue(function(next){
$(this).removeClass('btn-danger');
next();
});
}

$tis.sendingMail = false;
}


Si j'ai bien compris, lorsqu'il envoie le message le fichier contact.php ne doit certainement pas retourner la valeur msg = ok.

Pensez vous que dans mon contact.php lorsque le mail est envoyé on peut retourner msg = ok ? pour qu'il puisse afficher mon icon-ok et btn-success.

Merci
0
c0rnich0n Messages postés 8 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 18 novembre 2013
18 nov. 2013 à 16:26
Bon finalement j'en suis arrivé a bout :)

Merci à tous de m'avoir éclairci et d'avoir répondu rapidement.
0