comment traiter de tres grand formulaire ?

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 : comment traiter de tres grand formulaire ?

Re: comment traiter de tres grand formulaire ?

par del_samples » 24 août 2014, 14:00

salut a tous vous aller chercher un peu loin
je veux dire lorsqu'il y a trop de conditions

Re: comment traiter de tres grand formulaire ?

par sirakawa » 21 août 2014, 10:37

J'ajouterai à ce que vient d enoter auresmus que, m^eme si tous les navigateurs ne les supportent pas encore, il existe des méthodes complémentaires c^oté HTMl et formulaire:
cf : http://www.alsacreations.com/tuto/lire/ ... umber.html
et required = 'required' dans les input

Re: comment traiter de tres grand formulaire ?

par Aureusms » 21 août 2014, 08:10

Je traite des gros formulaires de gestion de feuilles de calculs de machine de laboratoires (environ 20 - 30 input anonymes à la volée).
Mon conseil : vérifies le type de données qui est envoyées via des preg_match (ce sont les fameux REGEX) et ou en écrasant le type comme cet exemple où la valeur ne peut être égale à zéro.
$variable = (integer) $_POST["input"];
//ou
$variable = intval ($_POST["input"]);
$retour = (empty($variable)) ? false : true;
L'avantage de cela est que si tu connais le type que tu attends, tu peux "boucler" sur les sorties formulaires et même créer une fonction ou une classe qui vérifie le formulaire avant de le traiter.
$tabTypesInteger = array ("input_456478", "input_8796545");
foreach ($_POST as $cle => $valeur) {
  //si integer
  if (in_array($cle,$tabTypesInteger) {
    if (is_numeric($valeur))
       ...
  }
}
//ou via une fonction

fonction estInteger ($valeur = false) {
	//si pas définie => return false
	if (empty($valeur))
		return false;
	
	return (preg_match('#[0-9]#',$valeur) ? true : false;
}
Pour compléter les protections, utilises que mysqli_real_escape_string (la version mysql devient obsolète) ou (XOR) celle de pdo si tu utilises la classe PDO (perso j'utilise mysqli).
Enfin tu peux aussi utiliser (en plus) javascript (j'utilise jQuery pour cela) pour vérifier le type avant l'envoi du formulaire. C'est une vérification complémentaire, tu dois obligatoirement vérifier côté serveur :

dans l'HTML
<input typeAttendu="[0-9]" type="text" value="Entrer un Entier" class="integer" n="Entrer un Entier"/>
Dans le javascript avec jQuery lancé :
[javascript]$(document).on ({
keyup : function () {
var regex = nex RegExp($(this).attr('typeAttendu'),"gi");
var valeur = $(this).val();
var retour = regex.test(valeur);
if (!retour) {
$(this).val(valeur.substring(0,valeur.length-1));
}
},
focus: function () {
//si c'est "Entrer un Entier" => on efface
if ($(this).val() == $(this).attr("n"))
$(this).val('');
}
},'input');[/javascript]

Re: comment traiter de tres grand formulaire ?

par sirakawa » 20 août 2014, 15:59

Fallait-il que xtg mit des OU pour etre mieux compris? Faut-il quant à moi que je précise qu'il s'agit de OU EXCLUSIFS?
Utilise le addslashees() pour éviter les injections. sauf si ton serveur de production à le magic quote
Pardon ? Ne revenons pas 10ans en arrière s'il vous plait...
mysql_real_escape_string
OU
mysqli_real_escape_string
OU
PDO::quote
OU
ou encore les requêtes préparées.
Mais oser utiliser addslashes pour empêcher les injections... #-o

Re: comment traiter de tres grand formulaire ?

par JokerMentalist » 20 août 2014, 15:09

Utilise le addslashees() pour éviter les injections. sauf si ton serveur de production à le magic quote
Pardon ? Ne revenons pas 10ans en arrière s'il vous plait...
mysql_real_escape_string
mysqli_real_escape_string
PDO::quote
ou encore les requêtes préparées.
Mais oser utiliser addslashes pour empêcher les injections... #-o
Merci de ta réponse constructive. Mais visiblement la personne n'utilise pas PDO.

Bonne journée

Re: comment traiter de tres grand formulaire ?

par xTG » 20 août 2014, 13:24

Utilise le addslashees() pour éviter les injections. sauf si ton serveur de production à le magic quote
Pardon ? Ne revenons pas 10ans en arrière s'il vous plait...
mysql_real_escape_string
mysqli_real_escape_string
PDO::quote
ou encore les requêtes préparées.
Mais oser utiliser addslashes pour empêcher les injections... #-o

Re: comment traiter de tres grand formulaire ?

par JokerMentalist » 19 août 2014, 19:19

Salut l'ami tu as beaucoup de champs dans ton formulaire ?

Coté Formulaire :
<form action="" method="">
    <input type="text" name="mon_super_nom" placeholder="Mon super placeholder" />
    ...

</form>
Pour ton code en PHP nh'hésite pas a faire des :
var_dump($_POST);
die();
comme sa tu auras un visuel de tes variable sa te donneras des infors sur se qui peut merder au niveau de ta requette SQL
Utilise le addslashees() pour éviter les injections. sauf si ton serveur de production à le magic quote
ergonomiquement parlant limite au max la saisie celas t'éviteras que tes visiteurs dégagent..


<?php
    if(isset($_POST)){
        if(!empty($_POST)){
            extract($_POST)
            // ici ton traitement
        }
    }
?>

Re: comment traiter de tres grand formulaire ?

par sirakawa » 16 août 2014, 16:10

à ma connaissance, les formulaires se traitent tous de la même façon.
Ce qui peut changer, c'est la notation en tableau de certains <input...>
ou plusieurs boutons submit entrainant le passage à des pages différentes
ou l'utilisation de required ='required' dans les input
oun l'emploi du type email et quelques autres (pas reconnus de tous les navigateurs) cf http://www.alsacreations.com/tuto/lire/ ... email.html

comment traiter de tres grand formulaire ?

par del_samples » 16 août 2014, 14:55

bonjour !
j'aimerais savoir quel est la meilleur méthode selon vous pour traiter de très très grand formulaires.
mon projet est baser en très grande partie sur les formulaires et les calcules mathématiques.
donc je recherche une meilleur méthode pour traiter mes formulaire et facile a maintenir