C# – formule de Luhn

La formule de Lhun permet de vérifier un numéro de carte bleue, un siret, un siren, … tellement utile pour les contrôles de formulaire que je me suis penché sur la question ne trouvant rien de probant sur Internet.

La partie front :

Juste un formulaire pour envoyer le chiffre, rien de bien palpitant 🙂

La partie programmée :

Quelques remarques :

  • Bien penser à ajouter le using regularExpressions qui permet de simplifier grandement les choses avec le Regex. Entre autre je m’en sers pour convertir un string en array de chiffres à 1 digit > « 123 » => [1][2][3], pas trouvé mieux pour la méthode !
  • J’ai coupé le traitement en deux parties que vous visualisiez bien le fonctionnement, cela peut bien entendu être simplifié mais en cas de souci ça permet de vérifier les deux tableaux, le premier avec les digits, le deuxième avec les multiples de deux pour les colonnes impaires sauf pour la première colonne.
  • Par rapport à Wikipedia, il existe un cas particulier par rapport au SIRET de la poste que je n’ai pas traité dans ce cas ! Je verrai avec le temps si j’en ai besoin …

Quelques liens utiles :

https://fr.wikipedia.org/wiki/Formule_de_Luhn

https://portal.hardis-group.com/pages/viewpage.action?pageId=120357227

JQuery – Json : compte nombre d’occurrences

Une petite méthode simple et rapide pour compter le nombre d’occurrences identiques dans un array multi dimensionnel :

Retourne :
Nombre d’occurrences de new wave = 2

CQFD 🙂

c# – énumérer un Enum

Bien pratique les enum afin de lier une valeur entière à un texte, ex : 0 = chat, mais comment lister les valeurs ?

Et voilà on retrouve la valeur numérique et textuelle …

Jquery – Json : cherche Lycos !

Je vous propose dans ce tuto de faire une recherche dans un array Json, à ce jour j’utilise deux méthodes, la première étant ma préférée.

Méthode 1 : Jquery.grep

On va chercher la ligne qui correspond à locs[n].id == 1, si on trouve on extrait le array qui correspond à la requête. Bien entendu si on trouve plusieurs enregistrements (item.length > 1) il faudra faire un for each afin d’afficher tous les enregistrements trouvés.

Méthode 2 : $.each

Cette méthode permet de trouver le premier enregistrement correspond à la recherche. Pour obtenir les mêmes avantages que la première méthode il faut créer un item, stocker le résultat dans ce dernier et inhiber la sortie du loop. Plus long à traiter car on scrute tous les enregistrements dans ce cas …

Jquery – Select2 : auto remplissage depuis Json

Remplir un select2 via un Json, rien de plus simple en quelques lignes :

Bien entendu il faut en entête appeler jquery et la bibliothèque de Select2 :

https://select2.org/getting-started/installation
https://code.jquery.com/


Astuces select2

Select2 est prédéfini avec les valeurs id et text, si vous créez votre Json avec ces deux identifiants on peut simplifier le remplissage du select par :

Vous souhaitez changer la valeur du select en sélectionnant une valeur, Jquery répond à ce besoin :

Vous souhaitez récupérez la valeur du select en automatique sur changement du select (j’ai utilisé .each si vous avez un Json complexe et souhaitez retrouver des informations complémentaires) :


Résultat via CodePen :
https://codepen.io/laurent-zminka/pen/WNojyxN


IIS7 – security : filtrage par ip

Comment refuser l’accès à votre site à certaines Ip via le web.config ?

Modification du fichier applicationHost.config

Ouvrez le fichier host config :

C:\Windows\System32\inetsrv\config\applicationHost.config

Cherchez la ligne :

et transformez « Deny » en « Allow »

Modification du fichier web.config

Modifiez le fichier web.config de la sorte :

Donc désormais l’ip 217.128.42.22 n’est plus autorisée à accéder à votre site.

NB : attention, le blocage génère maintenant une erreur 403, généralement non définie dans le web.config, donc ajoutez une section pour cette erreur :

ASP.NET 4.0+ Request Validation Error et Web.config Ciblé

Le problème à résoudre concerne la « Request Validation » qui empêche de recevoir certains caractères comme notamment les balises < … >
Il s’agit d’une requête POST qui sera traitée, analysée puis enregistrée via LINQ, les strings seront donc « parameterized ».
Cependant, cela n’est pas le cas de l’ensemble du site nous devons donc appliquer cela à une zone donnée.

  1.  validateRequest= »false »
    ce paramètre permet de supprimer la validation en .NET 2.0
    Il s’insère soit dans la page ciblée :

    soit dans le fichier Web.config :

     
  2. <httpRuntime requestValidationMode= »2.0″ />
    A partir d’ASP.NET 4 ou plus, cet élément du Web.config est indispensable pour que l’annulation du REQUEST VALIDATION soit prise en compte.
    En effet, depuis ASP.NET 4, la validation de la requête se fait plus tôt dans le cycle de vie de la page.

     
  3. « location » : Ciblage d’une page ou d’un répertoire
    La touche finale, il faut impérativement n’affecter que les pages concernées, à cette fin nous utilisons un élement du Web.config qui permet de cibler une location :

     
  4. Le résultat final est celui-ci :

     

Sources :
https://msdn.microsoft.com/en-us/library/hh882339(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/b6x6shw7(v=vs.100).aspx

 

 

IIS7 – Leverage Browser Caching

Afin de passer à A sous GTmetrix pour la notion de cache des images sous windows il suffit juste d’ajouter le snippet suivant dans le web.config

Ce qui donne un cache de 30 jours, largement suffisant 🙂

Souci de caractères mal encodés

Quand on veut utiliser du texte dans une fonction (style envoyer des mails avec un texte pré enregistré), les caractères se retrouvent mal encodés :

Ex : , l’AŠquipe au lieu de l’équipe.

Pas un souci d’encodage de mail, cherché des heures avec Encoding mais sans succès.
Il suffit juste de ré encoder le texte en UTF8.