Enregistrer mes membres.

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 : Enregistrer mes membres.

par the_grinch » 22 déc. 2008, 23:20

Merci pour vos reponses.
Mon code est basique :
Champ prénom, champ nom, champ mail et un bouton envoyer.

Je souhaite :
détécter si le champ est vide, si il a bien les caractères qu'il faut et si ce n'est pas le cas, on lui dit.
if isset post prenom
if caractere post prenom

INSERT INTO ...

else
Vous ne devez mettre que des lettres et des chiffres sans accent.

else
Remplissez le champ prénom.

Et cela pour tous les champs. Sauf que si il y en a 10, c'est mal barré... Il n'y a pas un moyen de raccourcir ??

par niuxe » 22 déc. 2008, 23:05

Malheureusement je n'ai pas apporté avec moi la boule de cristal. Peux tu mettre sur le forum ton formulaire ? Je pourrais mieux comprendre ton petit soucis ;)

Sinon, tu peux faire ceci par exemple* :
try{
  if(strlen($nom)<0 || empty(trim($prenom)) || //etc. )
    $erreur[]="Veuillez remplir correctement le formulaire (prenom, nom, etc.)";
  if(!empty($erreur))
    throw new Exception("Erreur(s) trouvée(s) :");
}catch (Exception $e){
  echo $e->getMessage();
  echo "<ul>";
  for($i=0;$i<count($erreur);$i++){
     echo "<li>".$erreur[$i]."</li>";
  }
  echo "</ul>";
}
*code fait de tête

++

par AB » 22 déc. 2008, 23:00

Pour faire une première vérification, javascript suffira.
Mais on a coutume de faire une seconde vérification en php au cas ou javascript serait désactivé.

Si tu rentres "vérification formulaire javascript" dans google tu auras pas mal d'exemples.

par the_grinch » 22 déc. 2008, 19:31

Je te remercie pour ton aide, ça va beaucoup m'aider pour mes futures pages.
J'utilise déjà ces méthodes =) sauf que je me suis dis que c'était mieux de bloquer les caractères spéciaux donc encore moins de risque d'injection. :)
Voilà je te remercie.

Edit: J'ai une autre petite question, comment faire pour vérifier plusieurs champs ( une dizaine ) sans faire 10 fois if elseif elseif etc...
Car non seulement j'ai des conditions pour savoir si le champ est bien remplis mais aussi si il respecte les caractères ...
Je vais voir si avec l'ajax ça fonctionnerais pour vérifier les champs et les caractères champ par champ.

par niuxe » 22 déc. 2008, 16:15

Salut the_Grinch,

Je crois que ton script est totalement erroné. Ce que tu veux faire est simple à mettre en place :
pour le pseudo, ne laisser que les lettres et chiffres, [a-z ; A-Z ; 0-9 ].
une petite REGEX te suffit amplement* :
if (!preg_match("#[a-zA-Z0-9]#",$login))
  $erreur[]="Votre nom doit comporter que des lettres ou des chiffres";
mail : ne laisser que @ a-Z A-Z 0-9 _ -
Également, tu peux avoir recourt à une REGEX ou tout simplement utiliser la méthode filter_var()* :
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
  $erreur[]="Merci de saisir une adresse courriel valide";
Afin d'éviter les attaques courantes, je peux te proposer de regarder ces méthodes :
- htmlentities()
- htmlspecialchars()
- mysql_real_escape_string()
- strip_tags()

* code fait de tête, j'ai pu faire une petite coquille.

++

par guilt92 » 22 déc. 2008, 16:14

Bonjour,

je te conseille pour cela d utiliser les expressions regulieres, pour verifier le format de la chaine et n autoriser ainsi que ce qui va bien...

Un exemple / tuto ici

Enregistrer mes membres.

par the_grinch » 22 déc. 2008, 15:49

Bonjour,
Je souhaiterais protéger mon enregistrement de mes membres,
pour le pseudo, ne laisser que les lettres et chiffres, [a-z ; A-Z ; 0-9 ].
mail : ne laisser que @ a-Z A-Z 0-9 _ -
etc...
Comment faire pour n'autoriser que certaines lettres au lieu de dire plutôt celle que l'on ne veut pas ??
Merci !

Sachant que j'ai ceci :
                //Début:  enlever le HTML et les injections SQL
                $input_arr = array();
                foreach ($_POST as $key => $input_arr) {
				
				$interdit=array(">", "<",  ":", "*", "/", "|", "?", '"', '<', '>', '\\', '=', '&', ',', ';', '!', '%', '§', 'µ', '$', '¤', '£', '(', ')', '{', '}'
				, '[', ']', '+', '^', '#', '~', '²', '°', '\'', '`', 'Â', 'ù');
				$_POST[$key] = str_replace($interdit, "_", $input_arr);
				}
                //Fin :  enlever le HTML et les injections SQL
                
                extract($_POST); // J'extrait les variables POST.