Les plats clés
- Le registre de Windows, une base de données structurée hiérarchiquement des informations de configuration, est accessible avec PHP à l'aide de l'extension Win32STD, qui peut être téléchargée en tant que bibliothèque pré-compilée à partir de téléchargements.php.net/pierre /.
- Le registre de Windows est divisé en cinq groupes principaux appelés clés: hkey_current_config, hkey_local_machine, hkey_users, hkey_classes_root et hkey_current_user. Chaque clé contient des sous-clés qui à leur tour contiennent d'autres sous-clés, valeurs de configuration ou les deux.
- La fonction reg_open_key () ouvre une connexion au registre et renvoie une ressource, qui peut être utilisée avec d'autres fonctions de registre pour agir sur cette connexion. La fonction reg_close_key () ferme la connexion. La fonction reg_set_value () est utilisée pour écrire une valeur dans le registre, écraser les valeurs existantes ou en créer de nouveaux.
- Le registre Windows peut être utilisé pour des applications pratiques telles que le stockage des informations de configuration pour les applications Web, le stockage des données d'application et les préférences des utilisateurs pour les applications de bureau ou la vérification de la présence d'appareils matériels comme un dongle USB. Cependant, la modification du registre doit être effectuée avec prudence car elle peut affecter le fonctionnement du système.
La disposition du registre
Le registre a la réputation d'être un endroit sombre, dangereux et effrayant dans le système d'exploitation Windows. C'est probablement une peur trop exagérée, mais je vais quand même réitérer le mantra de registre de Microsoft: ?Avant de modifier le registre, sauvegardez-le et assurez-vous de comprendre comment le restaurer si un problème se produit. Des changements inappropriés pourraient causer de graves problèmes qui peuvent vous obliger à réinstaller votre système d'exploitation. ? Alors, à quoi ressemble cet endroit sombre et effrayant? Le registre Windows est divisé en 5 groupes principaux appelés clés: hkey_current_configCette clé stocke les informations sur le matériel de l'ordinateur telles que la résolution du moniteur et les paramètres de haut-parleur. Vous pouvez voir cette clé abrégée comme HKCC. hkey_local_machine
Cette clé contient des informations de configuration pour la machine telles que les imprimantes, les logiciels et les informations de réseautage. La clé est chargée en premier, puis les entrées du profil de l'utilisateur remplacent diverses valeurs. Vous verrez cette clé abrégée comme HKLM. hkey_users
Cette clé contient tous les profils pour les comptes d'utilisateurs locaux sur la machine. Des éléments tels que la sélection de l'économiseur d'écran de l'utilisateur, les informations sur le thème et d'autres préférences sont stockés ici. Cette clé est abrégée en HKU. hkey_classes_root
Cette clé est un alias pointant vers HKEY_LOCAL_MACHINESOFTware qui stocke des informations sur les associations de fichiers et les types de mime. L'abréviation est HKCR. hkey_current_user
Cette clé est un alias pointant vers le profil de Hkey_users pour l'utilisateur actuellement connecté. Vous verrez cette clé abrégée comme HKCU. Chaque clé contient des sous-clés qui à leur tour contiennent d'autres sous-clés, valeurs de configuration ou les deux. Travailler sous hkey_current_user est suffisant pour jouer avec quelques scripts CLI et un bac à sable. Utilisez uniquement HKEY_LOCAL_MACHINE pour les données d'application à l'échelle du système et les situations où vous êtes à l'aise de travailler avec les autorisations de sécurité de Microsoft. Comprenez ce qui est bon pour votre situation, sachez en vertu de quel compte PHP exécute et créez vos clés de manière appropriée.
Faire un bac à sable
Je recommande de mettre en place une clé spéciale pour une utilisation dans vos scripts par souci de sécurité, surtout lorsque vous développez. Erch est humain et nous ne voulons pas écraser accidentellement quoi que ce soit d'important. L'organisation est une autre raison de mettre en place une clé désignée. Il y a beaucoup d'informations stockées dans le registre et nous voulons être en mesure de localiser facilement nos propres valeurs. L'éditeur de registre est un programme Microsoft utilisé pour afficher et modifier le registre. Pour créer notre bac à sable, allez pour démarrer, tapez ?regedit? dans la barre de recherche et sélectionnez regedit.exe dans la liste des résultats qui appara?t. Le volet gauche montre une structure d'arbre des touches existantes tandis que le volet droit montre des valeurs stockées en eux. Développez le n?ud HKEY_CURRENT_USER, cliquez avec le bouton droit sur la touche logicielle et sélectionnez NOUVEAU> Clé dans le menu contextuel popup. Alternativement, nous aurions pu également traverser l'arbre à l'aide des touches fléchées afin que la touche logicielle soit mise en évidence et sélectionnez la nouvelle touche> dans le menu Edit. Fournissez un nom pour la touche et appuyez sur Entrée.
Lecture du registre
La fonction reg_open_key () ouvre une connexion au registre et renvoie une ressource. Cette ressource est ensuite utilisée avec d'autres fonctions de registre pour agir sur cette connexion. La fonction reg_close_key () ferme la connexion. reg_open_key () prend deux arguments: d'abord une constante prédéfinie représentant l'un des cinq groupes de registre principaux, puis le reste du chemin vers la clé souhaitée.<span><span><?php </span></span><span><span>$keyConst = HKEY_CURRENT_USER; </span></span><span> </span><span><span>// backslash is used as an escape so it must be escaped itself </span></span><span><span>$key = "Software\Intel"; </span></span><span> </span><span><span>// open the registry key HKCUSoftwareIntel </span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) { </span></span><span> <span>throw new Exception("Cannot access registry."); </span></span><span><span>} </span></span><span><span>... </span></span><span> </span><span><span>reg_close_key($reg);</span></span>Maintenant que vous avez une connexion ouverte, vous pouvez récupérer des informations du registre à l'aide des fonctions reg_enum_key (), reg_enum_value () et reg_get_value (). Si juste la ressource est transmise à reg_enum_key (), elle renverra un tableau de sous-clés sous la clé actuelle. Une valeur entière peut également être transmise pour récupérer la sous-clé à un index particulier.
<span><span><?php </span></span><span><span>// retrieve an array of subkeys under the current key </span></span><span><span>$subkeys = reg_enum_key($reg); </span></span><span><span>foreach ($subkeys as $index => $subkey) { </span></span><span> <span>echo "The subkey at " . $index . " is " . $subkey . "n"; </span></span><span><span>} </span></span><span> </span><span><span>// retrieve a specific subkey </span></span><span><span>$index = 2; </span></span><span><span>$subkey = reg_enum_key($reg, $index); </span></span><span><span>echo "The subkey at " . $index . " is " . $subkey . "n";</span></span>Comme reg_enum_key () renvoie les clés, reg_enum_value () renvoie les valeurs des clés. La fonction accepte la ressource et un index facultatif. Le nom de valeur peut être transmis à reg_get_value () pour récupérer la valeur de la valeur (n'est pas une bouchée!).
<span><span><?php </span></span><span><span>// retrieve an array of values under a given key </span></span><span><span>$values = reg_enum_value($reg); </span></span><span><span>foreach ($values as $index => $value) { </span></span><span> <span>echo "The value at " . $index . " is " . $value . " and stores "; </span></span><span> <span>echo reg_get_value($reg, $value) . "n"; </span></span><span><span>} </span></span><span> </span><span><span>// retrieve a specific value given the index </span></span><span><span>$index = 1; </span></span><span><span>$value = reg_enum_value($reg, $index); </span></span><span><span>echo "The value at " . $index . " is " . $value . " and stores "; </span></span><span><span>echo reg_get_value($reg, $value) . "n";</span></span>
écriture dans le registre
Il existe une poignée de types de données parmi lesquels vous pouvez choisir lors de la lecture et de l'écriture au registre. Ils ont généralement peu de conséquences en raison de la nature dynamique de PHP, mais vous devez spécifier le type lorsque vous écrivez une valeur. La plupart du temps, vous vous retrouverez à utiliser Reg_sz ou Reg_dword, mais voici une liste des types de données exposés par l'extension:- reg_dword - La valeur est stockée sous forme de long entier de 32 bits
- reg_sz - la valeur est stockée sous forme de cha?ne de longueur fixe
- reg_expand_sz - la valeur est stockée en tant que cha?ne de longueur variable
- reg_multi_sz - La valeur est une liste d'éléments séparés par un délimiteur tel qu'un espace ou une virgule
- reg_binary - la valeur est une cha?ne binaire
- reg_none - la valeur n'a pas de type de données particulier qui y est associé
<span><span><?php </span></span><span><span>$keyConst = HKEY_CURRENT_USER; </span></span><span> </span><span><span>// backslash is used as an escape so it must be escaped itself </span></span><span><span>$key = "Software\Intel"; </span></span><span> </span><span><span>// open the registry key HKCUSoftwareIntel </span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) { </span></span><span> <span>throw new Exception("Cannot access registry."); </span></span><span><span>} </span></span><span><span>... </span></span><span> </span><span><span>reg_close_key($reg);</span></span>
un exemple - dongle de conduite USB
Vous vous demandez peut-être s'il y a une utilisation pratique pour travailler avec le registre. Dans une application Web, vous pouvez stocker vos informations de configuration dans le registre. Si vous avez écrit une application de bureau, le registre pourrait être un bon endroit pour stocker toutes sortes d'informations, des données d'application aux préférences des utilisateurs. Windows lui-même écrit toutes sortes de matériel intéressant et d'informations liées à l'état au registre, et une partie pourrait être utile si vous êtes assez créatif. Supposons que notre application PHP ait été licenciée de telle manière qu'un dongle USB doit être attaché au serveur pour l'exécuter. Comment PHP peut-il détecter la présence du dongle? La réponse sur Windows réside dans le registre! Chaque appareil a un identifiant unique, et le script peut donc rechercher les touches appropriées pour l'identifiant lorsqu'il démarre pour déterminer si le dongle est branché ou non. La première étape consiste à déterminer l'identifiant de l'appareil. Pour cet exemple, j'utiliserai un coffre de marchandises. Branchez simplement le lecteur sur un port USB sur l'ordinateur, puis allez pour démarrer, tapez ?périphérique? dans la barre de recherche et sélectionnez le gestionnaire de périphériques dans la liste des résultats qui appara?t. Recherchez l'appareil dans Device Manager, cliquez avec le bouton droit sur l'entrée et sélectionnez Propriétés dans le menu contextuel. Ensuite, accédez à l'onglet Détails de la fenêtre Propriétés et sélectionnez ?Chemin d'instance de périphérique? dans la liste déroulante. La séquence des nombres hexadécimaux vers la fin de la valeur est l'ID de dispositif (marqué en rouge).
<span><span><?php </span></span><span><span>$keyConst = HKEY_CURRENT_USER; </span></span><span> </span><span><span>// backslash is used as an escape so it must be escaped itself </span></span><span><span>$key = "Software\Intel"; </span></span><span> </span><span><span>// open the registry key HKCUSoftwareIntel </span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) { </span></span><span> <span>throw new Exception("Cannot access registry."); </span></span><span><span>} </span></span><span><span>... </span></span><span> </span><span><span>reg_close_key($reg);</span></span>Ce simple contr?le ouvre également d'autres possibilités intéressantes; Vous pouvez facilement coder une interface d'administration sensible qui vérifie le dongle et la demande est envoyée à partir du serveur lui-même en vérifiant $ _Server ["Remote_Addr"]. Cette configuration nécessiterait que l'utilisateur soit physiquement sur le serveur désigné et fournir une forme d'authentification physique.
en conclusion
Tout au long de cet article, nous avons vu ce qu'est le registre Windows et un petit échantillon de quelles informations peuvent être trouvées. Vous pouvez rédiger vos propres données de configuration, ou vous pouvez lire des informations, en utilisant les fonctions fournies par l'extension Win32STD. Soit dit en passant, l'extension Win32STD offre plus qu'un simple accès au registre. Si vous êtes intéressé, consultez wildphp.free.fr/wiki/doku.php?id=win32std: index pour voir ce qu'il offre d'autre. Image via FotoliaQuestions fréquemment posées (FAQ) sur l'accès au registre Windows à partir de PHP
Comment puis-je accéder au registre Windows à partir de PHP?
L'accès au registre Windows à partir de PHP peut être obtenu en utilisant la classe COM dans PHP. Cette classe permet à PHP d'interagir avec tous les objets COM, y compris le registre Windows. Vous pouvez créer une nouvelle instance de la classe COM, puis utiliser la méthode Regread pour lire une valeur du registre. Cependant, veuillez noter que cette méthode nécessite les autorisations correctes pour accéder au registre.
Qu'est-ce que le registre Windows et pourquoi aurais-je besoin d'y accéder à partir de PHP?
Le registre Windows est une base de données Cela stocke des paramètres de bas niveau pour le système d'exploitation et pour les applications qui choisissent d'utiliser le registre. Vous devrez peut-être y accéder depuis PHP pour diverses raisons, par exemple pour récupérer les informations du système, vérifier la présence de certains logiciels ou modifier les paramètres du système. Cependant, la modification du registre doit être effectuée avec prudence car elle peut affecter le fonctionnement du système.
Puis-je écrire au registre Windows à partir de PHP?
Oui, vous pouvez écrire au registre Windows à partir de PHP utilisant la méthode RegWrite de la classe COM. Cependant, cela devrait être fait avec une extrême prudence car des modifications incorrectes peuvent causer de graves problèmes qui peuvent vous obliger à réinstaller votre système d'exploitation.
De quelles autorisations ai-je besoin pour accéder au registre Windows à partir de PHP?
Pour accéder au registre Windows à partir de PHP, vous devez avoir des privilèges administratifs. En effet, le registre contient des paramètres de système et d'application critiques. Si vous exécutez votre script à partir d'un serveur Web, le compte utilisateur du serveur devra également avoir les autorisations nécessaires.
Quelle est la structure du registre Windows?
Le registre Windows est organisé hiérarchiquement comme un arbre, avec des clés et des valeurs. Les clés sont similaires aux dossiers et les valeurs sont les entrées de données dans les clés. Chaque touche peut contenir des sous-clés, et chaque sous-clé peut contenir d'autres sous-clés, formant une structure d'arbre.
Comment puis-je gérer les erreurs lors de l'accès au registre Windows à partir de PHP?
Lorsque vous accédez au registre Windows à partir du registre Windows depuis PHP, les erreurs peuvent être gérées à l'aide des fonctions de gestion des erreurs PHP standard. Par exemple, vous pouvez utiliser la fonction set_error_handler pour définir un gestionnaire d'erreur personnalisé.
Puis-je accéder au registre Windows à partir de PHP sur un système non Windows?
Non, vous ne pouvez pas accéder aux Windows Registre de PHP sur un système non Windows. Le registre Windows est une fonctionnalité spécifique au système d'exploitation Windows.
Quelle est la classe com en php?
La classe COM dans PHP est une classe intégrée qui permet à PHP d'interagir avec Com objets. Com (Component Object Model) est une norme d'interface binaire pour les composants logiciels introduits par Microsoft. Il permet à PHP d'interagir avec tous les objets COM, y compris le registre Windows.
Puis-je supprimer les clés du registre Windows à l'aide de PHP?
Oui, vous pouvez supprimer les clés du registre Windows à l'aide de PHP . Cela peut être fait en utilisant la méthode RegRelete de la classe COM. Cependant, cela devrait être fait avec une extrême prudence car la suppression de la mauvaise clé peut causer de graves problèmes.
Quels sont les risques de modification du registre Windows?
La modification du registre Windows comporte des risques. Des modifications incorrectes peuvent causer de graves problèmes qui peuvent vous obliger à réinstaller votre système d'exploitation. Par conséquent, il est recommandé de sauvegarder le registre avant d'apporter des modifications et de ne faire des modifications que si vous êtes confiant dans ce que vous faites.
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les problèmes et les solutions courants pour la portée de la variable PHP incluent: 1. La variable globale ne peut pas être accessible dans la fonction, et elle doit être transmise en utilisant le mot-clé ou le paramètre global; 2. La variable statique est déclarée avec statique, et elle n'est initialisée qu'une seule fois et la valeur est maintenue entre plusieurs appels; 3. Des variables hyperglobales telles que $ _get et $ _post peuvent être utilisées directement dans n'importe quelle portée, mais vous devez faire attention au filtrage s?r; 4. Les fonctions anonymes doivent introduire des variables de portée parents via le mot clé Utiliser, et lorsque vous modifiez les variables externes, vous devez passer une référence. La ma?trise de ces règles peut aider à éviter les erreurs et à améliorer la stabilité du code.

Pour gérer en toute sécurité les téléchargements de fichiers PHP, vous devez vérifier la source et taper, contr?ler le nom et le chemin du fichier, définir les restrictions du serveur et traiter les fichiers multimédias deux fois. 1. Vérifiez la source de téléchargement pour empêcher le CSRF via le jeton et détecter le type de mime réel via FINFO_FILE en utilisant le contr?le de liste blanche; 2. Renommez le fichier à une cha?ne aléatoire et déterminez l'extension pour la stocker dans un répertoire non Web en fonction du type de détection; 3. La configuration PHP limite la taille de téléchargement et le répertoire temporaire Nginx / Apache interdit l'accès au répertoire de téléchargement; 4. La bibliothèque GD résait les images pour effacer des données malveillantes potentielles.

Il existe trois méthodes courantes pour le code de commentaire PHP: 1. Utiliser // ou # pour bloquer une ligne de code, et il est recommandé d'utiliser //; 2. Utiliser /.../ pour envelopper des blocs de code avec plusieurs lignes, qui ne peuvent pas être imbriquées mais peuvent être croisées; 3. Compétences combinées Commentaires tels que l'utilisation / if () {} / pour contr?ler les blocs logiques, ou pour améliorer l'efficacité avec les touches de raccourci de l'éditeur, vous devez prêter attention aux symboles de fermeture et éviter les nidification lorsque vous les utilisez.

AgeneratorInphpisamemory-EfficientwaytoterateOrgedatasetsByyieldingValuesonEatatimeIntedofreturningThemallAtonce.1.GeneratorsUsEtheieldKeywordToproduceValuesondemand, ReducingMemoryUsage.2.TheyAreusefulForHandlingBigloops, ReadingLargeFiles, OR OR.

La clé pour rédiger des commentaires PHP est de clarifier l'objectif et les spécifications. Les commentaires devraient expliquer "pourquoi" plut?t que "ce qui a été fait", en évitant la redondance ou trop de simplicité. 1. Utilisez un format unifié, tel que DocBlock (/ * /) pour les descriptions de classe et de méthode afin d'améliorer la lisibilité et la compatibilité des outils; 2. Soulignez les raisons de la logique, telles que pourquoi les sauts JS doivent être sortis manuellement; 3. Ajoutez une description d'une vue d'ensemble avant le code complexe, décrivez le processus dans les étapes et aidez à comprendre l'idée globale; 4. Utilisez TODO et FIXME Rationalement pour marquer des éléments et des problèmes de taches pour faciliter le suivi et la collaboration ultérieurs. De bonnes annotations peuvent réduire les co?ts de communication et améliorer l'efficacité de la maintenance du code.

Toléarnphpeffective, startBySettingUpAlocalServerERironmentUsingToolsLILYXAMPPANDACODEDITERLIGHILLEVSCODE.1) INSTRUSITIONXAMPFORAPACHE, MYSQL, ANDPHP.2) USACODEDEDITORFORSYNTAXSUPPORT.3)

En PHP, vous pouvez utiliser des crochets ou des accolades bouclées pour obtenir des caractères d'index spécifiques à la cha?ne, mais les crochets sont recommandés; L'index commence à partir de 0 et l'accès à l'extérieur de la plage renvoie une valeur nulle et ne peut pas se voir attribuer une valeur; MB_substr est nécessaire pour gérer les caractères multi-octets. Par exemple: $ str = "Hello"; echo $ str [0]; sortie h; et les caractères chinois tels que MB_substr ($ str, 1,1) doivent obtenir le résultat correct; Dans les applications réelles, la longueur de la cha?ne doit être vérifiée avant le boucle, les cha?nes dynamiques doivent être vérifiées pour la validité et les projets multilingues recommandent d'utiliser des fonctions de sécurité multi-octets uniformément.

Toinstallphpquickly, usexAmpPonWindowsorHomebrewonMacos.1.onwindows, downloadAndInstallxAmppp, selectComponents, startapache et placefilesInhtdocs.2.
