Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Soumission sécurisée du formulaire WordPress

7

Il y a des années, j’ai écrit un article dans lequel je partageais une fonction publique pour déterminer si l’utilisateur était autorisé à enregistrer des informations dans la base de données WordPress. Vous pouvez voir l’essentiel original dans toute sa splendeur (avec les commentaires solides) ici (il a cinq ans, même – wow).

Comme pour tout ce qui concerne la programmation, le temps passe, les choses s’affinent et les choses [espérons-le] s’améliorent par rapport à avant.

Bien que j’utilise et recommande toujours une variante de la fonction user_can_save (ou userCanSave ), je pense également qu’il est important de passer par le processus de séparation du processus de vérification de la demande.

Alors maintenant, il ne s’agit pas seulement de déterminer si l’utilisateur a des autorisations, mais il s’agit de vérifier les informations de sécurité provenant du client – que ce soit via une publication vers le serveur ou une demande faite via Ajax – et de le faire en utilisant de bonnes techniques de programmation qui s’alignent à la fois avec WordPress et avec PHP.

Pour être clair, il s’agit plus d’une soumission de formulaire WordPress sécurisée à partir d’une page d’options ou d’une page de paramètres que d’un formulaire provenant d’un modèle. C’est un autre post pour une autre fois.

Mais encore, nous sommes nombreux à travailler sur la création d’applications sur WordPress et qui nécessitent ce qui suit.

Soumission sécurisée du formulaire WordPress

Dans cet article, je ne vais pas me préoccuper de passer en revue les détails pour déterminer si quelque chose est une sauvegarde automatique ou une révision de publication.

Cependant, je vais parcourir le processus de prise en charge d’une fonction chargée de valider les informations entrantes et de le faire en utilisant une approche moderne utilisant des pratiques orientées objet et à la fois des API WordPress et des fonctions PHP.

1 Commencer à un niveau générique

Du niveau fondamental, supposons qu’il existe une classe de base à partir de laquelle il existe d’autres sous-classes qui exploitent cette fonction. Cela nous indique que nous devons utiliser le modificateur de visibilité protégé.

Nous savons également que nous allons avoir affaire à une valeur WordPress nonce et à une action associée. Cela signifie que la signature de la fonction ressemblera à ceci :

2 Désinfectez les données, vérifiez le nonce

Comme pour tout ce qui est publié sur le serveur, nous savons que nous allons devoir vérifier que les données sont définies et si c’est le cas, nous allons devoir nettoyer les informations.

Cela signifie que nous allons avoir besoin des fonctions suivantes :

Et nous savons aussi que nous allons devoir vérifier le nonce, donc nous allons aussi avoir besoin de wp_verify_nonce.

3 Un premier passage fonctionnel

Une première passe de travail de cette fonction peut ressembler à ceci :

Mais que se passe-t-il si quelqu’un partage des données qui ont envoyé une requête POST (par opposition à une requête GET ) ? Ensuite, nous pourrions modifier la fonction pour qu’elle ressemble à ceci :

Et ce serait suffisant. Mais si nous voulons vraiment qu’une fonction donnée soit aussi pure que possible, alors nous pourrions la décomposer encore plus.

4 Une fonction pour chaque usage

Compte tenu du code ci-dessus, nous savons que nous devons gérer à la fois les requêtes GET et les requêtes POST. PHP propose une fonction filter_input qui est utile, plus facile à lire (enfin, c’est subjectif), mais passe également plusieurs inspections de qualité du code.

De plus, nous pouvons utiliser une simple fonction d’usine pour séparer la logique en plusieurs fonctions comme celle-ci :

Soumission sécurisée du formulaire WordPress

Tout d’abord, nous devons écrire deux fonctions distinctes – une pour une requête POST :

Et un pour une requête GET :

Ensuite, nous pouvons le lier ensemble dans la fonction d’origine comme ceci :

Gérer proprement les demandes entrantes

Cela ressemble peut-être à une manière compliquée de gérer une solution simple compte tenu de l’ensemble initial de code partagé.

C’est certainement possible, surtout si vous êtes soumis à des contraintes de temps ou si vous ne vous souciez pas autant de diviser les choses en composants atomiques (ou même testables) les plus petits possibles.

Mais si vous cherchez à écrire du code orienté objet avec le plus haut degré de précision, peut-être que ce processus vous aidera exactement à cela.

Source d’enregistrement: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More