Il est courant que les développeurs de plugins protègent leurs plugins contre un accès direct. J'ai vu deux façons de le faire:
if ( ! defined( 'WPINC' ) ) die;
et
if ( ! defined( 'ABSPATH' ) ) exit;
Quelles sont les différences entre WPINC et ABSPATH? Quelle est la "bonne" façon de le faire?
plugins
php
plugin-development
Daniel
la source
la source
if ( ! defined( 'ABSPATH' ) ) exit;
... mais, peut-être, considérons que la portée de cet extrait de code est de s'assurer que wordpress est chargé. "WPINC" est préférable, car il est plus wordpressfull que "WP".if ( ! defined( 'WPINC' ) ) die;
etif ( ! defined( 'ABSPATH' ) ) exit;
ajoutez une couche de sécurité supplémentaire en empêchant tout accès direct à votre fichier de plugin.ABSPATH
est une constante PHP définie par WordPress dans son noyau.Si vous accédez à votre fichier de plug-in en dehors de WordPress, la constante
ABSPATH
ouWPINC
ne sera pas définie. Ainsi, le code du plug-in est quitté, ce qui empêche tout accès non autorisé à votre code.ABSPATH
etWPINC
sont définis dans le noyau WordPress comme:Les deux sont utilisés aux mêmes fins.
la source
Vous pouvez vérifier vous-même. Il suffit de regarder
wp-load.php
sur le miroir WordPress sur GitHub.Même un coup d'œil rapide montrera que la réponse actuellement sélectionnée n'est plus correcte quant à la
ABSPATH
définition. Et si vous comparez différentes balises sur GitHub, vous verrez que laABSPATH
définition change réellement avec le temps.Étant donné que ceux-ci sont utilisés pour la sécurité, j'irais pour
ABSPATH
. La justification étant que celaABSPATH
n'est pas seulement défini en premier dans le programme d'amorçage WP, ilWPINC
est défini sous une condition dans le même fichier et, par conséquent, est plus susceptible de subir une régression future.En outre, bien que cela ne soit pas explicitement demandé, vous avez fourni des exemples utilisant les deux
die
méthodesexit
. D'aprèsdevdocs.io
, qui s'appuie sur la documentation officielle de l'API,die
équivaut àexit
, vous pouvez donc choisir l'une ou l'autre et cela ne fera aucune différence.Vous acceptez les deux
die
etexit
acceptez les arguments. Vous pouvez donc les utiliser pour générer des informations utiles, telles qu'une étiquette de version chiffrée ou des informations de contact, en cas de fin anormale, ou transmettre un code de sortie tel que0
ou-1
pour un traitement ultérieur.Il convient également de noter que
wp_die
c'est une chose aussi. Ne pas confondre avec les scripts PHP intégrés, mais les complimente pour une utilisation dans la sortie de HTML en plus du texte brut et est utilisé de manière libérale dans le cœur de WordPress actuellement. En savoir pluswp_die
sur WordPress.org.la source