[RESOLU] Formulaire html, methode post, code php : variables vides

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Formulaire html, methode post, code php : variables vides

Re: Formulaire html, methode post, code php : variables vide

par vinceorl » 19 sept. 2014, 20:43

Avec plaisir, un grand merci en tout cas !

Vince

Re: Formulaire html, methode post, code php : variables vide

par arnaud69 » 19 sept. 2014, 15:55

Enlève le

Code : Tout sélectionner

alert(html); // affiche le
Sinon, si tu comptes faire de la newsletter, tu peux toujours t'intéresser au projet phpmynewsletter qui est dans ma signature... :mrgreen: :mrgreen:

Re: Formulaire html, methode post, code php : variables vide

par vinceorl » 19 sept. 2014, 15:33

FOR-Mi-DA-BLE ! :-)

Merci ça fonctionne !
Il reste juste un petit bémol : lorsque l'email est envoyé, une fenêtre s'ouvre qui affiche [object][object]. Et je crois qu'il faut la fermer.
Est-ce un test intégré à ton code ?

Merci,

Vince

Re: Formulaire html, methode post, code php : variables vide

par arnaud69 » 19 sept. 2014, 12:29

Tu vas recopier ce code stp : [javascript]$(function () {
$('a.folio').fancybox();
$('#portfolio').mixitup();
$('.nav-tabs a').click(function (e) {
e.preventDefault();
$(this).tab('show');
})
$('.navbar-nav a').click(function (e) {
e.preventDefault();
$(this).parent('li').toggleClass('active');
$(this).parent('li').siblings('.active').removeClass('active');
})
$('.header .navbar-nav a').smoothScroll();
$('#jump2top').css('bottom', '-100px');
$(window).scroll(function () {
var btn = $('#jump2top');
if ($(this).scrollTop() > 100) {
btn.stop().animate({ 'bottom': '0' }, 200);
} else {
btn.stop().animate({ 'bottom': '-100px' }, 200);
}
});
$('#jump2top').smoothScroll();
$('#contact_form').on('submit', function(e) {
$('#button-send').html('Sending E-Mail...');
e.preventDefault();
var $this = $(this);
var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();
if(name === '' || email === '') {
alert('Les champs doivent êtres remplis');
} else {
$.ajax({
url: $this.attr('action'),
type: $this.attr('method'),
data: $this.serialize(),
dataType: 'json', // JSON
success: function(html) { // récup du json/php
alert(html); // affiche le
if (html.success == '1') {
$('#button-send').html('Mail envoyé');
$('#success').show();
}else {
$('#button-send').html('Mail en erreur');
$('#error').show();
}
}
});
}
});
});
function scrollTo(elem) {
$('body,html').animate({
scrollTop: elem.offset().top
}, 500);
}

function valemail(email) {
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,}))$/;
return re.test(email);
}[/javascript]

Car du coup, il y a finalement un }); en trop.
Enregistre le document en UTF8 stp

Re: Formulaire html, methode post, code php : variables vide

par vinceorl » 19 sept. 2014, 12:28

Je peux te transmettre les sources si tu veux.

Vince

Re: Formulaire html, methode post, code php : variables vide

par vinceorl » 19 sept. 2014, 12:21

Fatigué fin de semaine agitée désolé :
à la place de

Code : Tout sélectionner

$('#button-send').click(function (event) {
tu mets STP :

Code : Tout sélectionner

$('#contact_form').on('submit', function(e) {
ainsi que supprimer le second </form>
Je me demandais aussi où était passé le nom du formulaire :-)

Après essaie, il semble se passer quelque chose, mais je ne reçois toujours rien (j'ai modifié ajax...).

J'aurais mis le }]; à la toute fin du code js pour former l'ensemble de fonctions. Mais je te suis.

Vince

Re: Formulaire html, methode post, code php : variables vide

par arnaud69 » 19 sept. 2014, 12:15

En fait, quand tu ouvrais ton form, ça ne marchait pas car il n'y avait aucune valeur à envoyer.
Le }); que je t'ai fait mettre c'est pour fermer la fonction qui commence en ligne 1 de custom.js.
Pour être propre mets le sans tabulation.

Ensuite, pas évident de donner du code quand on développe à distance et qu'on écrit à l'arrache :
html.success n'est pas défini, normal, j'ai omis la fonction qui recevra html.*
Donc :

Code : Tout sélectionner

$.ajax({ url: $this.attr('action'), type: $this.attr('method'), data: $this.serialize(), dataType: 'json', // JSON success: function(html) { // récup du json/php alert(html); // affiche le if (html.success == '1') { $('#button-send').html('Mail envoyé'); $('#success').show(); }else { $('#button-send').html('Mail en erreur'); $('#error').show(); } } });

Re: Formulaire html, methode post, code php : variables vide

par vinceorl » 19 sept. 2014, 12:06

J'ai ajouté form dans la balise button parce que d'après la norme html 5 c'est possible.
Je l'ai surtout fait car, une fois que ce formulaire fonctionnera, j'envisage d'avoir 2 formulaires de ce type pour m'envoyer des emails. Il ne faudra donc pas qu'il y ait confusion entre les button et les form.
Enfin j'ai effectué la modif et du coup il se passe quelque chose avec ton script, c'est à dire que ma page revient au niveau de l'accueil après avoir cliqué sur le bouton. En revanche je ne reçois pas d'email.

Concernant le js. Je n'arrive pas à voir à quoi correspond ce }]; que tu veux me faire ajouter. J'en vois plutôt un en trop. Non ?
Enfin de toute façon j'ai fait plusieurs tests et ça n'envoie rien pour autant...

Vince

Re: Formulaire html, methode post, code php : variables vide

par arnaud69 » 19 sept. 2014, 11:45

Fatigué fin de semaine agitée désolé :
à la place de

Code : Tout sélectionner

$('#button-send').click(function (event) {
tu mets STP :

Code : Tout sélectionner

$('#contact_form').on('submit', function(e) {
ainsi que supprimer le second </form>

Re: Formulaire html, methode post, code php : variables vide

par arnaud69 » 19 sept. 2014, 11:33

:evil: :evil: :evil:
Ca vient d'où ça : :?: :?: :?: :non: :non:

Code : Tout sélectionner

<button id="button-send" class="btn btn-block btn-success" type="submit" form="contact_form">
Tu vas le changer par

Code : Tout sélectionner

<button id="button-send" class="btn btn-block btn-success" type="submit">
Ensuite, il te manque un avant

Code : Tout sélectionner

function scrollTo(elem) { $('body,html').animate({ scrollTop: elem.offset().top }, 500); }
Tu vas donc faire ces mises à jour STP et revenir

Re: Formulaire html, methode post, code php : variables vide

par vinceorl » 19 sept. 2014, 11:10

Merci,
C'est fait j'ai remplacé la fonction.
J'ai fait un test. En apparence il ne se passe rien. En tout cas ni message du succès ou d'échec et je ne reçois rien dans ma boite email.

Vince

Re: Formulaire html, methode post, code php : variables vide

par arnaud69 » 19 sept. 2014, 10:58

Me suis trompé,

vite fait mets ça à la place de ta fonction :

Code : Tout sélectionner

$('#button-send').click(function (event) { $('#button-send').html('Sending E-Mail...'); e.preventDefault(); var $this = $(this); var name = $('#name').val(); var email = $('#email').val(); var message = $('#message').val(); if(name === '' || email === '') { alert('Les champs doivent êtres remplis'); } else { $.ajax({ url: $this.attr('action'), type: $this.attr('method'), data: $this.serialize(), dataType: 'json', // JSON if (html.success == '1') { $('#button-send').html('Mail envoyé'); $('#success').show(); } else { $('#button-send').html('Mail en erreur'); $('#error').show(); } }); } }); });

Re: Formulaire html, methode post, code php : variables vide

par arnaud69 » 19 sept. 2014, 10:34

Non, ça a l'air correct.
Dans le js, après

Code : Tout sélectionner

if (html.success == '1') { $('#button-send').html('Send E-Mail');
Tu vas mettre alert(data); et dire quand ok

Re: Formulaire html, methode post, code php : variables vide

par vinceorl » 19 sept. 2014, 10:26

Merci BEAUCOUP pour cette réponse détaillée Arnaud !

J'ai supprimé le premier appel au javascript redondant. Je m'en doutais mais comme ça ne bloquais pas et n'était pas ma priorité. Enfin bref tu confirmes et ça c'est fait.

En ce qui concerne la différence de référence au formulaire, MERCI, car j'étais allé dans les js mais ne sachant pas quoi chercher j'en suis sorti bredouille.
J'ai donc renommé le formulaire et mis à jour. Mais, même échec d'envoi.
J'ai alors renommé le formulaire tel qu'initialement et modifié le script js. Mais pareil.

J'ai pris le temps de vérifier. Peut-être l'ai-je mal fait. Peut-être aussi ai-je manqué une modification à faire d'après ta première réponse ?

Merci,

Vince

Re: Formulaire html, methode post, code php : variables vide

par arnaud69 » 19 sept. 2014, 09:35

Alors...

Tu peux supprimer la ligne :
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jq ... '></script>
car tu inclus déjà une version récente jquery en bas de page (js en bas, css en haut)
Ou alors tu mets <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jq ... '></script> en bas à la place de <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
Ensuite, le formulaire :
- chaque champ est identifié par un id... C'est bien !
Le problème est que quand on regarde le header de l'appel ajax :

Code : Tout sélectionner

POST http://vmarce.phpnet.org/payfair/meilleur/send_form_email.php HTTP/1.1 Host: vmarce.phpnet.org Proxy-Connection: keep-alive Content-Length: 0 Accept: */* Origin: http://vmarce.phpnet.org X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.68 Safari/537.17 Referer: http://vmarce.phpnet.org/payfair/meilleur/ Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8,fr;q=0.6 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
On ne voit aucune variable dans l'envoi !

Et la réponse :

Code : Tout sélectionner

{"success":"0","name_msg":"Saisissez votre nom svp","email_msg":"Saisissez votre email svp","message_msg":"Saisssez un message svp"}
Te dis bien que rien n'est passé et t'invite à saisir les champs.

En gros, ton formulaire n'envoie rien !

En cherchant dans les js, il y a :

Code : Tout sélectionner

//setup email here $('#button-send').click(function (event) { $('#button-send').html('Sending E-Mail...'); event.preventDefault(); $.ajax({ type: 'POST', url: 'send_form_email.php', data: $('#contact_form').serialize(), success: function (html) { if (html.success == '1') { $('#button-send').html('Send E-Mail'); $('#success').show(); } else { $('#button-send').html('Send E-Mail'); $('#error').show(); } }, error: function () { $('#button-send').html('Send E-Mail'); $('#error').show(); } }); });
et quand on regarde le code source de ta page web, on a un formulaire qui s'appelle contactform et non contact_form :non:

Je te laisse poster ici la conclusion ? J'ai fait tout le travail, là c'est facile maintenant :wink: :wink: :mrgreen: :mrgreen: