Javascript - Controle d'une chaine de caractère

Javascript - Controle d'une chaine de caractère - Javascript/Node.js - Programmation

Marsh Posté le 13-02-2017 à 11:56:37    

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

Reply

Marsh Posté le 13-02-2017 à 11:56:37   

Reply

Marsh Posté le 13-02-2017 à 12:06:15    

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
Reply

Marsh Posté le 13-02-2017 à 12:09:14    

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
Reply

Marsh Posté le 13-02-2017 à 12:11:04    

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. };

Reply

Marsh Posté le 13-02-2017 à 12:18:23    

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
Reply

Marsh Posté le 13-02-2017 à 12:22:15    

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  

Reply

Marsh Posté le 13-02-2017 à 12:25:12    

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

Reply

Marsh Posté le 13-02-2017 à 12:26:28    

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
Reply

Marsh Posté le 13-02-2017 à 12:30:03    

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
Reply

Marsh Posté le 13-02-2017 à 12:33:46    

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 !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed