L'écriture dans les fichiers locaux est l'une des fonctionnalités dont les nombreux plugins et thèmes ont besoin à diverses fins. La sécurité est le problème les plus importants que les plugins et les thèmes doivent s'occuper de l'écriture dans les systèmes de fichiers locaux. WordPress se déroule sur divers services et configurations d'hébergement, il devient donc difficile pour les développeurs de créer des plugins et des thèmes qui accèdent aux systèmes de fichiers locaux pour fonctionner dans tous les différents types d'environnements sans compromettre la sécurité.
Dans ce didacticiel, nous apprendrons à utiliser l'API de Système de fichiers WordPress pour accéder aux systèmes de fichiers locaux qui s'occupent des autorisations de fichiers appropriées. Dans le processus, nous allons créer un plugin qui affiche un formulaire avec un TextArea dans une page d'administration qui enregistre le contenu de la TextArea dans un fichier.
Vous vous demandez peut-être pourquoi nous n'utilisons pas seulement les fonctions du système de fichiers de PHP pour lire et écrire des fichiers locaux au lieu d'apprendre et d'utiliser un tout nouvel ensemble d'API?
Le problème de l'utilisation des API du système de fichiers PHP est qu'il ne prend pas en charge automatiquement les autorisations de fichiers. Supposons que vous utilisiez un service d'hébergement partagé pour héberger votre site WordPress et que votre serveur Web d'hébergement s'exécute en tant que compte du système d'exploitation «Admin». Chaque fois que vous créez des fichiers à l'aide de PHP, ils appartiennent à l'utilisateur «Admin». Par conséquent, tout autre site Web hébergé dans le même hébergement partagé peut également accéder à vos fichiers de site Web car ils s'exécutent également en tant qu'utilisateur «Admin», posant un problème de sécurité à votre site. Pour nous protéger de ce problème, vous devez modifier le propriétaire du fichier et les autorisations manuellement à l'aide de php.
Mais lorsque vous vous connectez à l'aide de SSH ou FTP / SFTP pour créer des fichiers, ils appartiennent au compte d'utilisateur du système d'exploitation que vous êtes connecté. Si le serveur FTP s'exécute en tant qu'utilisateur «Admin» et que vous êtes connecté en tant qu'utilisateur «Narayanpruty», les fichiers nouvellement créés auront un propriétaire en tant que «Narayanpruty», pas «admin».
WordPress a introduit l'API du système de fichiers qui peut s'occuper automatiquement des autorisations de fichiers. L'API du système de fichiers a été publiée dans WordPress 2.6. WordPress l'a réellement publié pour prendre en charge son plugin, son système de mise à jour de plugin, de thème et de base, mais plus tard sur les plugins et les thèmes qui commencent à l'utiliser à leurs propres fins.
L'API du système de fichiers peut écrire dans des systèmes de fichiers à l'aide d'appels système (c'est-à-dire directement, FTP, socket FTP ou SSH2). Il choisit l'une des méthodes basées sur la méthode qui crée des fichiers avec des autorisations de fichiers appropriées et quelle extension PHP est disponible. L'API du système de fichiers vérifie d'abord la méthode directe, puis FTP et enfin ssh2.
En utilisant FTP ou SSH, vous devrez obtenir les informations d'identification de votre utilisateur. L'API du système de fichiers fournit une fonction facilite l'affichage d'un formulaire pour prendre des informations d'identification et les stocker.
Créons maintenant notre plugin qui affiche une TextArea dans une page, où la soumission du formulaire enregistre le contenu de la TextArea dans un fichier local.
Voici la structure du répertoire de notre plugin:
--filesystem --filesystem.php --filesystem-demo --demo.txt
Créez ces fichiers et répertoires dans le répertoire WP-Content / Plugins de votre installation WordPress.
Pour rendre le plugin installable, mettez ce code dans le fichier fileSystem.php:
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: Filesystem API </span></span><span><span>Plugin URI: http://www.sitepoint.com </span></span><span><span>Description: A sample plugin to demonstrate Filesystem API </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span>
Visitez maintenant votre panneau d'administration et installez le plugin.
Ensuite, nous avons besoin d'une page dans notre administrateur où notre exemple résidera. Voici le code pour créer cette page et afficher la TextArea. Placez simplement ce code dans le fichier fileSystem.php:
function menu_item() { add_submenu_page("options-general.php", "Demo", "Demo", "manage_options", "demo", "demo_page"); } add_action("admin_menu", "menu_item"); function demo_page() { ?> <span><span><span><div</span> class<span>="wrap"</span>></span> </span> <span><span><span><h1</span>></span>Demo<span><span></h1</span>></span> </span> <span><span><span><form</span> method<span>="post"</span>></span> </span> <span><span><?php </span></span><span> <span>$output = ""; </span></span><span> </span><span> <span>if(isset($_POST["file-data"])) </span></span><span> <span>{ </span></span><span> <span>$output = write_file_demo($_POST["file-data"]); </span></span><span> <span>} </span></span><span> <span>else </span></span><span> <span>{ </span></span><span> <span>$output = read_file_demo(); </span></span><span> <span>} </span></span><span> </span><span> <span>if(!is_wp_error($output)) </span></span><span> <span>{ </span></span><span> <span>?></span> </span> <span><span><span><textarea</span> name<span>="file-data"</span>></span><span><?php echo $output; ?></span><span><span></textarea</span>></span> </span> <span><span><?php wp_nonce_field("filesystem-nonce"); ?></span> </span> <span><span><span><br</span>></span> </span> <span><span><span><input</span> type<span>="submit"</span>></span> </span> <span><span><?php </span></span><span> <span>} </span></span><span> <span>else </span></span><span> <span>{ </span></span><span> <span>echo $output->get_error_message(); </span></span><span> <span>} </span></span><span> <span>?></span> </span> <span><span><span></form</span>></span> </span> <span><span><span></div</span>></span> </span> <span><span><?php </span></span><span><span>}</span></span>
Voici comment fonctionne le code:
Remarque, le code ci-dessus rompra votre site WordPress, car nous n'avons pas encore créé les fonctions read_file_demo et write_file_demo. Créons-les maintenant!
Voici l'implémentation de notre fonction write_file_demo:
--filesystem --filesystem.php --filesystem-demo --demo.txt
Voici comment fonctionne le code:
Remarque: Si vous essayez d'utiliser les méthodes de l'objet $ WP_FILESYSTEM sans demander et vérifier les informations d'identification, ils ne fonctionneront pas.
Voici l'implémentation de la fonction read_file_demo.
<span><span><?php </span></span><span> </span><span><span>/* </span></span><span><span>Plugin Name: Filesystem API </span></span><span><span>Plugin URI: http://www.sitepoint.com </span></span><span><span>Description: A sample plugin to demonstrate Filesystem API </span></span><span><span>Version: 1.0 </span></span><span><span>Author: Narayan Prusty </span></span><span><span>*/</span></span>
Voici comment fonctionne le code:
En supposant que WordPress a choisi FTP comme méthode appropriée pour créer des fichiers, voici les captures d'écran de l'ensemble du processus:
Tout d'abord lorsque nous ouvrons la page de démonstration, nous verrons ce formulaire:
Ici, nous devons saisir des informations d'identification FTP ou FTPS et la soumettre. Une fois que nous l'avons soumis, nous verrons ce formulaire:
Une textare vide a été affichée. Entrez le texte "Hello World !!!" soumettre le formulaire. Vous verrez à nouveau le formulaire d'identification.
Vous devez le remplir à nouveau parce que WordPress ne stocke pas le mot de passe FTP par défaut (vous pouvez le faire dans WP-Config.php, plus à ce sujet plus tard). Ainsi, chaque fois que votre plugin doit fonctionner avec un système de fichiers, il doit demander des informations d'identification. Maintenant, la soumission redirigera vers l'URL de redirection avec les noms de champ et les valeurs soumis précédemment. Voici comment la TextArea apparaît:
Ici, nous lisons le contenu du fichier et l'avons affiché.
L'objet $ wp_filesystem fournit de nombreuses autres méthodes pour effectuer diverses autres opérations sur les fichiers et les répertoires. Nous venons de voir l'écriture et la lecture du fichier n. Vous pouvez trouver la liste complète de ce que vous pouvez faire sur la page de documentation WP_FileSystem_base ().
Voyons certains des importants:
Vous pouvez trouver la méthode de connexion utilisée par WordPress pour accéder au système de fichiers à l'aide de $ wp_filesystem-> Propriété publique de méthode.
Nous avons vu que WordPress ne stocke pas les références FTP ou SSH en permanence. Il n'est pas convivial de demander des détails encore et encore. Il existe un moyen de stocker les informations d'identification en permanence à l'aide du fichier WP-Config.php.
Utilisez ces options pour stocker les informations d'identification FTP et SSH:
Dans cet article, nous avons vu le processus de conception d'une page d'administration qui accède à notre système de fichiers à l'aide de l'API du système de fichiers WordPress. Dans le cas où vous essayez d'accéder à un système de fichiers dans un processus d'arrière-plan (comme l'utilisation d'un travail CRON), il n'est pas possible d'afficher le formulaire d'identification si nécessaire, dans ce cas, vous devrez vous assurer que vous en informez votre utilisateur Pour placer les constantes d'identification dans le fichier wp-config.php. Vous pouvez aller de l'avant et expérimenter davantage cette API et partager vos expériences avec nous ci-dessous.
L'API du système de fichiers WordPress est un ensemble de fonctions fournies par WordPress qui permet aux développeurs de lire, d'écrire et de modifier les fichiers et les répertoires de manière standardisée . Il est important car il fournit un moyen sécurisé et fiable d'interagir avec le système de fichiers sur votre serveur. Ceci est crucial pour les tâches telles que la création, la modification ou la suppression des fichiers et répertoires, du téléchargement de fichiers multimédias ou de la mise à jour de votre installation WordPress.
Comment puis-je utiliser l'API WordPress FileSystem dans mes propres plugins ou thèmes?
Le principal avantage de l'utilisation de l'API de système de fichiers WordPress sur les fonctions traditionnelles du système de fichiers PHP est que l'API fournit une interface cohérente, quelle que soit du système d'exploitation ou du système de fichiers du serveur. Cela signifie que vous pouvez écrire du code qui fonctionne sur n'importe quel serveur, sans avoir à vous soucier des différences entre les différents systèmes de fichiers. De plus, l'API fournit un niveau de sécurité plus élevé en s'assurant que toutes les opérations de fichiers sont effectuées avec les autorisations correctes.
Oui, vous pouvez Utilisez l'API WordPress FileSystem pour télécharger des fichiers. L'API fournit une fonction appelée «wp_handle_upload ()» qui gère l'intégralité du processus de téléchargement, y compris la vérification du type de fichier, en s'assurant que le fichier n'est pas trop grand et en déplaçant le fichier vers le répertoire correct. Cela facilite la gestion des téléchargements de fichiers de manière sécurisée et fiable.
L'API de fichiers WordPress fournit une fonction appelée 'IS_WP_ERROR ( ) «que vous pouvez utiliser pour vérifier si une fonction a renvoyé une erreur. Si une erreur s'est produite, vous pouvez utiliser la fonction «get_error_message ()» pour obtenir un message d'erreur lisible par l'homme. Cela permet de gérer facilement les erreurs et de fournir des commentaires utiles à l'utilisateur.
Oui, vous pouvez utiliser l'API WordPress FileSystem API? Pour modifier le fichier .htaccess. L'API fournit une fonction appelée «insert_with_markers ()» qui vous permet d'insérer des lignes dans le fichier .htaccess entre des marqueurs spécifiques. Cela facilite l'ajout de règles personnalisées au fichier .htaccess de manière sûre et fiable.
Oui, l'API de fichiers WordPress est sécurisé. Il garantit que toutes les opérations de fichiers sont effectuées avec les autorisations correctes, et il fournit des fonctions pour désinfecter les noms de fichiers et les chemins. Cela aide à prévenir les problèmes de sécurité communs tels que les attaques de traversée de répertoires.
Oui, vous pouvez utiliser l'API WordPress FileSystem pour créer des répertoires. L'API fournit une fonction appelée «wp_mkdir_p ()» qui crée un répertoire et tous les répertoires parentaux nécessaires. Cela facilite la création de structures de répertoires complexes de manière fiable.
Oui, vous pouvez utiliser l'API WordPress FileSystem pour supprimer fichiers et répertoires. L'API fournit une fonction appelée «Delete ()» qui peut supprimer à la fois les fichiers et les répertoires. Cela facilite le nettoyage après vous-même et s'assure que votre plugin ou votre thème ne laisse pas des fichiers inutiles sur le serveur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!