Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1789 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Javascript - Controle d'une chaine de caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Javascript - Controle d'une chaine de caractère

n°2296321
coco_atcho​um
Padawan geek
Posté le 13-02-2017 à 11:56:37  profilanswer
 

Bonjour
 
Je suis en train de développer une petite interface pour gérer un répertoire téléphonique, avant d'envoyer la valeur du champ dans ma base de données, je fais un contrôle sur la longueur de la chaine (entre 1 et 30 caractères) et sur la présence de caractères spéciaux. Le premier test fonctionne mais pas le deuxième , j'ai beau retourner le problème dans tout les sens je n'arrive pas à trouver d'où viens le problème.
 
Le code :
 

Code :
  1. function verifchamps()
  2. {
  3.    var champs = document.envoiemodif.lib_modif.value;
  4.    //Permet de récupéré ce qui a été tapé au clavier et le traduit en hexa
  5.    var keyCode = champs.which ? champs.which : champs.keyCode;
  6.    var touche = String.fromCharCode(keyCode);
  7.    // Liste des caractères authorisé    
  8.    var interdit = 'âäãçéìïòôöõùûüñ &*?!:;,\t#~"^¨%$£?²¤§%*()]{}<>|\\/`\'';
  9.    if ((champs.lenght < 1)||(champs.length > 31)) {
  10. alert ("Pas de fonction vide SVP ni de fonction > 30 caracteres" );
  11. return false;
  12.      
  13.    }
  14.    else
  15.    {
  16.      
  17. if(interdit.indexOf(touche) >= 0) {
  18.   alert ("Caractère(s) interdit(s) détecté(s) -> rappel : seulement : abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-éèàêî" );
  19.   return false;
  20.      } else {
  21. //on retourne vrai seulement si les deux tests sont ok (entre 1 et 30 et pas de caractères spéciaux)
  22. return true;
  23. }
  24.    }
  25. }


 
Merci pour vos suggestions

mood
Publicité
Posté le 13-02-2017 à 11:56:37  profilanswer
 

n°2296323
rat de com​bat
attention rongeur méchant!
Posté le 13-02-2017 à 12:06:15  profilanswer
 

faute de frappe
>champs.lenght
(qui étrangement n'empêche pas l'exécution du script?!?)
 
et tu utilises la mauvaise fonction je pense. http://www.w3schools.com/jsref/jsref_indexof.asp  
 
J'ai pas regardé ce que c'est les champs.which etc.
 
Un coup de regex me paraît mieux, mais avec tout ses caractères bizarres je crains un problème d'encodage. Peut-être un truc genre

Code :
  1. function verifchamps()
  2. {
  3. var champs = "sésdsssssssssssssssssss";
  4. var interdit = /[^a-zA-Z_-éèàêî]/;
  5. if ((champs.length < 1)||(champs.length > 31))
  6. {
  7.  alert ("Pas de fonction vide SVP ni de fonction > 30 caracteres" );
  8. }
  9. else
  10. {
  11.  if(interdit.test(champs))
  12.  {
  13.   alert ("Caractère(s) interdit(s) détecté(s) -> rappel : seulement : abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-éèàêî" );
  14.  }
  15.  else
  16.  {
  17.   alert("ok" );
  18.  }
  19. }
  20. }
  21. verifchamps();


(à adapter)


Message édité par rat de combat le 13-02-2017 à 12:16:34
n°2296325
coco_atcho​um
Padawan geek
Posté le 13-02-2017 à 12:09:14  profilanswer
 

faute de frappe ? bizarre car le premier test fonctionne correctement pourtant. Concernant l'encodage avez vous une piste ?

Message cité 1 fois
Message édité par coco_atchoum le 13-02-2017 à 12:09:33
n°2296326
coco_atcho​um
Padawan geek
Posté le 13-02-2017 à 12:11:04  profilanswer
 

Si cela peux aider voici le code PHP associé :
 

Code :
  1. <?php
  2. require 'connect.php';
  3. // Gestion de la suppression de la fiche
  4. if (isset($_GET['suppr'])) {
  5.    $code_fonction = $_GET['coderepart'];
  6.    $req_suppr = "DELETE FROM repartition WHERE code_repart =".$code_fonction;
  7.    $res_suppr = mysql_query($req_suppr);
  8.    if ($res_suppr) {
  9.    echo "suppression ok";
  10.    } else {
  11.    echo "Attention probleme suppression";
  12.    };
  13. };
  14. // Gestion de la modification de la fiche
  15. if (isset($_GET['modif'])) {
  16.    $code_fonction = $_GET['coderepart'];
  17.    $req_select = "select * from repartition,service where code_repart =".$code_fonction." and repartition.code_serv=service.code_serv";
  18.    $res_select = mysql_query($req_select);
  19.    while ($liste = mysql_fetch_array($res_select)) {
  20. echo "<form action='modifsupprfonction.php' method='post' target='droite' name='envoiemodif'>";
  21. echo "<table>"; 
  22. echo "<tr><td><u>Service :</u></td><td>".$liste['lib_serv']."</td></tr>";
  23. echo "<br>";
  24. echo "<tr><td><u>Fonction</u></td><td><input type='text' name='lib_modif' value='".$liste['lib_repart']."'></td></tr>";
  25. echo "<tr><td><div align='right'> <input type='submit' value='   ENVOYER   ' onclick ='return verifchamps();'></div></td><td></td></tr>";
  26. echo "<INPUT TYPE=HIDDEN NAME='code_repart' VALUE=".$code_fonction."></input>";
  27. echo "</table>";
  28. echo "</form>";
  29.    };
  30. };

n°2296328
rat de com​bat
attention rongeur méchant!
Posté le 13-02-2017 à 12:18:23  profilanswer
 

coco_atchoum a écrit :

faute de frappe ? bizarre car le premier test fonctionne correctement pourtant.

Je connais vraiment pas grand chose au JS mais longeur en anglais c'est length, pas lenght. :o  
 
J'ai édité mon 1er message.
 
edit encore: Avec lenght le test ne fonctionne pas (j'ai testé), mais il n'y a pas d'erreur car machin.lenght c'est undefined et on peut très bien tester pour ça, c'est considéré comme false.

Message cité 1 fois
Message édité par rat de combat le 13-02-2017 à 12:20:48
n°2296329
coco_atcho​um
Padawan geek
Posté le 13-02-2017 à 12:22:15  profilanswer
 

rat de combat a écrit :

Je connais vraiment pas grand chose au JS mais longeur en anglais c'est length, pas lenght. :o  
 
J'ai édité mon 1er message.
 
edit encore: Avec lenght le test ne fonctionne pas (j'ai testé), mais il n'y a pas d'erreur car machin.lenght c'est undefined et on peut très bien tester pour ça, c'est considéré comme false.


 
la vache je ne l'avais même pas vu cette faute de frappe  :sweat:  je vais retester tout ca et je posterais une réponse sur le forum  

n°2296330
rat de com​bat
attention rongeur méchant!
Posté le 13-02-2017 à 12:25:12  profilanswer
 

Concernant ton code PHP, tu sais ce que c'est une injection SQL?

n°2296331
coco_atcho​um
Padawan geek
Posté le 13-02-2017 à 12:26:28  profilanswer
 

sur le principe oui mais je suis pas vraiment expert en la matière :/, donc de la à corriger du code

Message cité 1 fois
Message édité par coco_atchoum le 13-02-2017 à 12:30:15
n°2296332
rat de com​bat
attention rongeur méchant!
Posté le 13-02-2017 à 12:30:03  profilanswer
 

coco_atchoum a écrit :

je suis pas vraiment expert en la matière je dois t'avouer :/

Hélas tu n'est pas le seul. Ne le prends surtout pas mal, mais il y a beaucoup trop de gens qui bricolent des sites internet sans vraiment connaître la matière ce qui donne souvent des serveurs facilement piratables. https://fr.wikipedia.org/wiki/Injection_SQL Créer un truc un PHP qui marche je saurais faire en utilisant quelque tutos et du try-and-error, mais fabriquer un truc sécurisé ça c'est beaucoup plus dur et je ne sais pas faire.


Message édité par rat de combat le 13-02-2017 à 12:31:14
n°2296334
coco_atcho​um
Padawan geek
Posté le 13-02-2017 à 12:33:46  profilanswer
 

après c'est pour de l'intranet donc pas de risque , je vais jeter un petit coup d'oeil au lien . La programmation n'est pas mon coeur de metier je suis admin système réseau et j'ai beaucoup à apprendre en développement !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  Javascript - Controle d'une chaine de caractère

 

Sujets relatifs
Rechercher une chaine qui ressemble à une autre en SQL[Regex] prenant en compte le caractère "à"
probleme detection Adblock en Javascript+PHP tourne pas rondrecupérer une chaine de texte d'un variable FOR
[JQueryUI] Envoi données javascript en BDDCreer une chaîne de N "espaces"
javascript et barre de navigation[PHP] [débutant] strlen() et chaîne de caractères particulière
Plus de sujets relatifs à : Javascript - Controle d'une chaine de caractère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR