Organisation de rédaction de fichiers

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 : Organisation de rédaction de fichiers

Re: Organisation de rédaction de fichiers

par albius » 21 juin 2010, 17:29

Ton code est un subterfuge, mais un subterfuge qui marche bien. Merci!

Re: Organisation de rédaction de fichiers

par Nours312 » 21 juin 2010, 16:27

dsl ... faute de frappe : jQuery.serialize()

donc là si tu regardes bien leur exemple, tu constates vite que l'input type="submit" dont le name="g" ne fait pas parti des éléments sérialisé ;) ...
<form>
  <div><input type="text" name="a" value="1" id="a" /></div>
  <div><input type="text" name="b" value="2" id="b" /></div>
  <div><input type="hidden" name="c" value="3" id="c" /></div>
  <div>
    <textarea name="d" rows="8" cols="40">4</textarea>
  </div>
  <div><select name="e">
    <option value="5" selected="selected">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
  </select></div>
  <div>
    <input type="checkbox" name="f" value="8" id="f" />
  </div>
  <div>
    <input type="submit" name="g" value="Submit" id="g" />
  </div>
</form>
[javascript]$('form').submit(function() {
alert($(this).serialize());
return false;
});[/javascript]

Code : Tout sélectionner

a=1&b=2&c=3&d=4&e=5
après, je ne suis pas utilisateur jQuery non plus ^^ :D
@++

Re: Organisation de rédaction de fichiers

par albius » 21 juin 2010, 16:24

C'est bon à savoir ça... D'autant plus que cela n'est pas précisé dans la doc française, ni dans le bouquin dont je dispose...
Merci,

Re: Organisation de rédaction de fichiers

par Nours312 » 21 juin 2010, 15:41

slt ::

il semblerait que la fonction jQuery.serialize() ne prenne pas en paramètres les input type="submit"
ce qui fait qu'il n'est pas envoyé en Ajax, ... et donc ne peux etre utilisé dans ta condition !

pour palier à ce problème, tu devrais pouvoir mettre un
<input type="hidden" name="typeForm" value="resetNBonCom" />
pour ensuite faire ta vérif sur ::
if(isset ($_POST['typeForm']) && $_POST['typeForm']=="resetNBonCom") {
//va faire telle chose
}
//
if(isset ($_POST['typeForm']) && $_POST['typeForm']=="transfertNBonCom") {
//va faire autre chose
}
@++

Organisation de rédaction de fichiers

par albius » 21 juin 2010, 12:11

Bonjour,

J'ai actuellement deux fichiers avec chacun 1 formulaire. Mais ces deux pointent sur le même fichier pour le traitement des données.
Fichier 1:
<form action="resetFonctionBonCom.php" method="post" name="choiceNBonCom" id="choiceNBonCom">
<select name="listeNBonCom" id="listeNBonCom">
...
<input type="submit" name="resetNBonCom" id="resetNBonCom" ...>
</form>
Fichier2:
<form action="resetFonctionBonCom.php" method="post" name="choiceNBonCom" id="choiceNBonCom">
...
<input type="submit" name="transfertNBonCom" id="transfertNBonCom" ...>
</form>
Seul diffère le nom du bouton d'envoi des formulaires. Je m'en sers d'ailleurs dans le fichier unique de traitement des données:
if(isset ($_POST['resetNBonCom'])) {
//va faire telle chose
}
//
if(isset ($_POST['transfertNBonCom'])) {
//va faire autre chose
}
Cette partie est pleinement fonctionnelle. Maintenant, je cherche à intégrer une couche java-script (ajax, jquery) pour l'envoi des données, qui est encore pratiquement la même pour les 2 fichiers. Il n'y a que les affichages de retour de fonction qui changent:

Code : Tout sélectionner

$(function(){ $("#choiceNBonCom").submit(function(){ ... $.post("resetFonctionBonCom.php", $("#choiceNBonCom").serialize(), function(data){ ... if(data != "ok"){ ... } }); return false; }); });
A ce moment là, il n'y a plus rien qui s'exécute côté serveur. Donc, première question : pourquoi mon script coté serveur n'est plus opérationnel dans ces conditions ?
Maintenant, je supprime la condition de traitement, c'est à dire lequel de bouton de soumission qui a été utilisé:
if(isset ($_POST['resetNBonCom'])) {...
Cela fonctionne à nouveau... (j'aurais pris soin évidemment de mettre en commentaire le second script de traitement, pour que le premier puisse marcher)
Alors comment faire ? Dois-je obligatoirement séparer tous les scripts de traitement. Je vais me retrouver avec 36 fichiers supplémentaires...
merci,