Sur le Web, presque toutes les applications de votre navigateur sont sauvegardées par un magasin de données de certains type. Habituellement, ces magasins de données se présentent sous la forme d’un type de base de données..
Jusqu'à récemment, la plupart des applications étaient construites sur un type de base de données SQL, mais avec l'essor des bases de données basées sur des documents telles que CouchDB, d'autres applications ont également commencé à utiliser d'autres logiciels de base..
De plus, avec HTML5 et les navigateurs mettant en œuvre des services pour stockage local
, nous sommes en mesure de commencer à stocker certains données du côté client. Évidemment, ce n’est pas quelque chose que vous voudriez faire de façon permanente, mais cela donne un niveau de flexibilité et de pouvoir que nous n’avons pas eu récemment.
Quoi qu'il en soit, dans la veine classique des applications Web, WordPress est une application reposant sur une base de données qui utilise une base de données MySQL pour stocker ses informations..
Mais cette série concerne la construction d’applications sur WordPress. À cette fin, il est important de comprendre non seulement comment enregistrer des informations, mais également comment les récupérer..
Bien sûr, lorsque vous travaillez avec la sérialisation des données, il est également important de prendre en compte le fait que les utilisateurs peuvent essayer d'insérer des données malveillantes dans la base de données. En tant que tel, il est de notre devoir de nettoyer correctement les données lors de leur insertion dans la base de données, ainsi que de nous assurer que nous les échappons correctement lorsque nous les récupérons à partir de la base de données..
Dans cet article, nous allons examiner les API proposées par WordPress pour la sérialisation des informations et les fonctionnalités disponibles pour la désinfection des données. Nous compléterons ensuite l'article en examinant comment récupérer en toute sécurité des informations de la base de données..
De toute évidence, l’un des principaux différenciateurs entre les sites Web normaux et les applications Web est leur capacité à gérer les données stockées dans certains type de base de données. En règle générale, cela signifie également que les informations sont stockées par utilisateur (mais pas toujours)..
Quoi qu'il en soit, WordPress, prêt à l'emploi, offre une variété d'API facilitant le stockage et la récupération de données. Et peut-être que la chose la plus agréable à propos de la sauvegarde de données dans la base de données WordPress est qu’une fois que vous comprenez le fonctionnement d’une API, vous avez généralement l’intuition de savoir comment les autres fonctionnent..
Cela dit, commençons par regarder comment on enregistre les informations dans la base de données WordPress..
Pour ceux d'entre vous qui ne sont pas déjà familiers, WordPress ne contient qu'une poignée de tableaux. Pour les besoins de cette discussion, nous souhaitons avant tout connaître les tableaux suivants:
wp_options
. La table d'options permet de stocker des informations relatives aux préférences, à la configuration et à tout ce qui concerne les paramètres applicables à l'ensemble du site..wp_posts
. Cette table stocke les données liées aux publications. Bien que nous ne travaillions pas directement avec cette table, il est important de comprendre qu'elle existe afin de pouvoir utiliser des méta-informations postérieures..wp_postmeta
. Comme mentionné précédemment, cette table est responsable de la conservation des méta-informations relatives aux postes individuels. Et comme les publications peuvent représenter des pages, des publications et des types de publication personnalisés, vous enregistrez ici les informations relatives à chacun de vos types de publication. Il est extrêmement flexible dans le type de données stockées, vous pouvez donc vraiment avoir beaucoup de pouvoir quant à la manière dont vous associez les informations aux publications (quel que soit leur type).wp_comments
. Ce tableau devrait aller de soi, mais c’est ici que sont stockés tous les commentaires des articles, pages et types d’articles personnalisés. Comme wp_posts
, nous n'écrirons pas directement les données, mais il est important de comprendre que cette table existe et qu'il existe une table de métadonnées de commentaires à laquelle nous pouvons accéder lors de l'écriture d'informations dans la table..wp_commentmeta
. Comme mentionné, comme wp_postmeta
, c'est là que les métadonnées sur les commentaires sont conservées. Et bien entendu, même si vous ne travaillez pas nécessairement avec des commentaires dans les applications Web, vous pouvez vous retrouver avec un composant de blog dans votre application. Et dans ce cas, il est utile de savoir comment lire et écrire des données dans la table..De toute évidence, il ne s’agit que d’une enquête de haut niveau sur certaines des tables de base de données qui alimentent WordPress. Si vous souhaitez vous familiariser avec le reste des informations, ne serait-ce que pour votre propre édification, veillez à consulter la description de la base de données..
Néanmoins, cela devrait être suffisant pour nous permettre de lire et d’écrire des informations dans la base de données..
À ce stade, nous disposons de suffisamment d'informations sur la couche de base de données pour commencer à analyser les API disponibles dans la couche d'application WordPress, ce qui nous permet de prendre des informations fournies par nous-mêmes et / ou par les entrées de l'utilisateur..
Maintenant, écrire des informations dans chacune des tables ci-dessus est vraiment facile.
Dans un premier temps, nous allons examiner les fonctions disponibles pour la lecture, l’écriture et la mise à jour des informations dans les tableaux d’options WordPress..
WordPress fournit deux fonctions d'API de spécification pour écrire des données dans la base de données. On vient sous la forme d'ajouter des informations, on vient sous la forme de mettre à jour des informations.
Pour ajouter des informations à la table d'options WordPress, utilisez la fonction API suivante.
add_option
accepte trois paramètres:
Par exemple, si nous voulions stocker des informations, telles que mon nom, nous ferions quelque chose comme ceci:
add_option ('mon-nom', 'tom mcfarlin');
Si, par contre, nous voulions prendre quelque chose venant du $ _POST
collection, alors nous pouvons faire quelque chose comme ceci:
if (isset ($ _POST ['valeur']) &&! vide ($ _POST ['valeur'])) add_option ('ma-valeur', $ _POST ['valeur']))
La mise à jour des options est très différente. Il suit le même schéma et peut effectivement être utilisé en place de add_option
parce que si l'option n'existe pas déjà, il va le créer.
Par souci de précision, je n’entrerai pas plus dans les informations sur cette fonction particulière. Essentiellement, update_option
volonté:
Pas mal, droit?
Pour ceux d’entre vous qui ont travaillé avec des thèmes WordPress - en particulier lors de l’utilisation du thème Customizer - vous êtes probablement familiarisé avec le set_theme_mod
une fonction.
Cette fonction API particulière n’est pas tout à fait pertinente pour créer des applications Web avec WordPress; Cependant, pour être complet, je voulais être en mesure de montrer toutes les API qui sont responsable de l'écriture des données dans la base de données.
Note spécifiquement du Codex:
Crée ou met à jour un paramètre de modification pour le thème actuel. Avec get_theme_mod (), cette fonction offre parfois aux développeurs de thèmes une alternative plus simple à l'API de paramètres lorsqu'il est nécessaire de gérer des paramètres de base spécifiques à un thème..
Ceci est clairement lié au travail avec des thèmes.
Honnêtement, travailler avec post meta n’est pas très différent de travailler avec des options. En fait, vous pouvez même considérer les fonctions de l’API pour la sérialisation des méta-données de post et les méta-données de commentaire presque identiques à la façon dont les options sont stockées dans wp_options
base de données.
En bref, les fonctions de l'API prennent en compte trois informations:
Ainsi, dans le cas de la sauvegarde des informations de publication, l’ID d’élément correspondrait à l’ID de publication; dans le cas des commentaires, l'ID d'élément correspondrait à l'ID de commentaire.
Et, tout comme pour l’enregistrement de données dans la table d’options, il est important de noter que l’ajout d’une option introduira l’option dans la base de données et que sa mise à jour créera l’option si elle n’existait pas déjà. valeur existante dans la base de données.
Exemple: enregistrer des informations dans la table meta:
add_post_meta (get_the_ID (), 'my-post-information', 'Ceci est mon message favori.');
Et, disons, mettre à jour les informations dans la table méta de commentaires ressemblerait à ceci:
update_post_meta (get_the_ID (), 'my-post-information', 'Ceci est mon message favori.');
Sinon, vous devrez peut-être utiliser le logiciel global $ post
variable si la méthode n'est pas appelée dans The Loop. Par exemple:
global $ post; add_post_meta ($ post-> ID, 'my-post-information', 'Ceci est mon post préféré.');
Et pour écrire des données dans les méta-tables de commentaires, vous suivez les exact même format, sauf que vous utilisez add_comment_meta
et update_comment_meta
.
Mais maintenant que nous avons expliqué comment enregistrer des informations dans la table d'options, la table méta de publication et la table méta de commentaire, comment nous assurer réellement qu'aucune information dangereuse n'est enregistrée dans la base de données?
Facile: désinfection des données.
Quand cela vient à économie données à la base de données, l'une des choses les plus importantes que les développeurs doit faire est de désinfecter toutes les informations qui proviennent de l'utilisateur et entrer dans la base de données.
Désormais, le problème de la désinfection des données est que cela dépend des données que vous devez sauvegarder. Par exemple, il est très rare que vous souhaitiez réellement enregistrer du balisage, du code SQL ou d'autres types de code source dans la base de données..
Pour éviter cela, vous voudrez probablement utiliser les fonctions PHP telles que strip_tags
et striplahes
afin de nettoyer les informations.
Par exemple:
if (isset ($ _POST ['value']) &&! empty ($ _POST ['value'])) $ clean_value = strip_tags (stripslashes ($ _POST ['value'])); add_option ('ma-valeur', $ clean_value);
Bien sûr, être absolument clair, ce n’est qu’un exemple de la façon de désinfecter l’information. Votre implémentation peut varier en fonction du type d'application que vous construisez. Le point de partager cette information montre l'un des beaucoup idées sur la façon de nettoyer les informations pour les sauvegarder dans la base de données WordPress.
Là encore, ce ne sont pas les seuls moyens de purifier les valeurs. N'oubliez pas de suivre les installations que WordPress fournit prêtes à l'emploi:
sanitize_email
sanitize_file_name
sanitize_html_class
sanitize_key
sanitize_meta
sanitize_mime_type
sanitize_option
sanitize_sql_orderby
sanitize_text_field
sanitize_title
sanitize_title_for_query
sanitize_title_with_dashes
sanitize_user
À ce stade, n'oubliez pas les utilitaires tels que les expressions régulières. Ils sont incroyablement puissants, car ils ne font correspondre que certaines chaînes et certains modèles d'une collection de données pouvant être extraites pour enregistrer les données..
Certes, nous avons seulement parlé de la façon de sauvegarder des informations dans la base de données WordPress.
Nous n'avons pas encore déterminé comment récupérer des informations, et encore moins comment valider les informations provenant de la base de données..
Donc, dans le prochain article, nous allons examiner comment le verso de cet article - en particulier, nous allons examiner comment obtenir des informations. de la base de données, échappez à tous les caractères potentiels potentiellement problématiques pour les rendre au navigateur, et comment les gérer.