Quelles sont les différences entre WPINC et ABSPATH?


34

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?

Réponses:


19

Ils sont définis comme suit:

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

dirnameest une fonction PHP qui renvoie le chemin du répertoire parent et wp-includesest assez explicite.

Je dirais que ABSPATHc'est mieux parce que c'est l'une des premières choses que WP charge et que ça a l'air aussi mieux :) Mais il n'y a pas de vraie "bonne façon" parce qu'elles fonctionnent toutes les deux.


4
Il n'y a pas vraiment de bonne façon, et j'utilise toujours 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".
gmazzap

4

if ( ! defined( 'WPINC' ) ) die;et if ( ! defined( 'ABSPATH' ) ) exit;ajoutez une couche de sécurité supplémentaire en empêchant tout accès direct à votre fichier de plugin. ABSPATHest 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 ABSPATHou WPINCne sera pas définie. Ainsi, le code du plug-in est quitté, ce qui empêche tout accès non autorisé à votre code.

ABSPATHet WPINCsont définis dans le noyau WordPress comme:

define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
define( 'WPINC', 'wp-includes' );

Les deux sont utilisés aux mêmes fins.


1

Quelles sont les différences entre WPINC et ABSPATH?

Vous pouvez vérifier vous-même. Il suffit de regarderwp-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 ABSPATHdéfinition. Et si vous comparez différentes balises sur GitHub, vous verrez que la ABSPATHdéfinition change réellement avec le temps.

Quelle est la "bonne" façon de le faire?

Étant donné que ceux-ci sont utilisés pour la sécurité, j'irais pour ABSPATH. La justification étant que cela ABSPATHn'est pas seulement défini en premier dans le programme d'amorçage WP, il WPINCest 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 dieméthodes exit. D'après devdocs.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 dieet exitacceptez 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 que 0ou -1pour un traitement ultérieur.

Il convient également de noter que wp_diec'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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.