Quelles sont les différences entre WPINC et ABSPATH?

28

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?

    
posée Daniel 31.07.2013 - 05:43
la source

3 réponses

15

Ils sont définis comme suit:

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

dirname est une fonction PHP qui renvoie le chemin du répertoire parent, et wp-includes est assez explicite.

Je dirais que ABSPATH est meilleur parce que c'est l'une des premières choses que WP charge et que son apparence est meilleure :) Mais il n'y a pas vraiment de "bonne manière" car ils fonctionnent tous les deux.

    
réponse donnée Wyck 31.07.2013 - 06:40
la source
3

if ( ! defined( 'WPINC' ) ) die; et if ( ! defined( 'ABSPATH' ) ) exit; ajoutent 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 ou WPINC ne sera pas définie. Elle quitte donc le code du plug-in, empêchant ainsi tout accès non autorisé à votre code.

ABSPATH et WPINC sont définis dans le noyau WordPress comme suit:

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

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

    
réponse donnée P M Aagjal 04.08.2015 - 08:58
la source
1
  

Quelles sont les différences entre WPINC et ABSPATH?

Vous pouvez vérifier vous-même. Il vous 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 définition de ABSPATH . Et si vous comparez différentes balises sur GitHub, vous verrez que la définition de ABSPATH 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é, je choisirais ABSPATH . La raison étant que ABSPATH n'est pas seulement défini en premier dans le programme d'amorçage WP, WPINC est défini sous une condition dans le même fichier et, par conséquent, est plus susceptible de subir une régression future.

De plus, bien que cela ne soit pas explicitement demandé, vous avez fourni des exemples utilisant à la fois die et exit . Selon devdocs.io , qui s’appuie sur la documentation officielle de l’API, die équivaut à exit , vous pouvez donc: choisissez l’un des deux et cela ne fera aucune différence.

die et exit acceptent les arguments. Vous pouvez donc les utiliser pour générer des informations utiles, telles qu'une balise de version chiffrée ou des informations de contact, en cas de fin anormale, ou transmettre un code de sortie tel que 0 ou -1 pour traitement ultérieur.

Il convient également de noter que wp_die est aussi une chose. Ne pas confondre avec les fonctions intégrées PHP, 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. Découvrez plus d'informations sur wp_die sur WordPress.org.

    
réponse donnée Josh Habdas 10.06.2017 - 15:01
la source

Lire d'autres questions sur les étiquettes