Jakie są różnice między WPINC a ABSPATH?


34

Twórcy wtyczek często chronią swoje wtyczki przed bezpośrednim dostępem. Widziałem dwa sposoby, aby to zrobić:

if ( ! defined( 'WPINC' ) ) die;

i

if ( ! defined( 'ABSPATH' ) ) exit;

Jakie są różnice między WPINC a ABSPATH? Który jest „właściwym” sposobem na zrobienie tego?

Odpowiedzi:


19

Są one zdefiniowane w następujący sposób:

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

dirnamejest funkcją PHP, która zwraca ścieżkę do katalogu nadrzędnego i wp-includesjest dość oczywista.

Powiedziałbym, że ABSPATHjest lepiej, ponieważ jest to jedna z pierwszych rzeczy, które WP ładuje, a także wygląda lepiej :) Ale nie ma prawdziwej „właściwej drogi”, ponieważ obie działają.


4
Nie ma prawdziwego właściwy sposób, a ja zawsze używać if ( ! defined( 'ABSPATH' ) ) exit;... ale, być może, uważają, że zakres tego fragmentu jest upewnić się, że WordPress jest załadowany „WPINC” jest lepszy, bo jest bardziej wordpressfull Staring „WP”.
gmazzap

4

if ( ! defined( 'WPINC' ) ) die;i if ( ! defined( 'ABSPATH' ) ) exit;dodaj dodatkową warstwę bezpieczeństwa, uniemożliwiając bezpośredni dostęp do pliku wtyczki. ABSPATHjest stałą PHP zdefiniowaną przez WordPress w jej rdzeniu.

Jeśli dostęp do pliku wtyczki jest uzyskiwany spoza WordPress, stała ABSPATHlub WPINCnie zostanie zdefiniowana, więc wychodzi z kodu wtyczki, zapobiegając nieautoryzowanemu dostępowi do twojego kodu.

ABSPATHi WPINCsą zdefiniowane w rdzeniu WordPress jako:

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

Oba są używane w tym samym celu.


1

Jakie są różnice między WPINC a ABSPATH?

Możesz się sprawdzić. Wystarczy spojrzećwp-load.php na lustro WordPress na GitHub.

Nawet szybki rzut oka pokaże, że aktualnie wybrana odpowiedź nie jest już poprawna w zakresie ABSPATHdefinicji. A jeśli porównasz różne tagi w GitHub, zobaczysz, że ABSPATHdefinicja zmienia się z czasem.

Który jest „właściwym” sposobem na zrobienie tego?

Biorąc pod uwagę, że są one używane dla bezpieczeństwa, wybrałbym ABSPATH. Uzasadnienie ABSPATHjest nie tylko zdefiniowane jako pierwsze w bootstraperze WP, ale WPINCrównież w tym samym pliku jest zdefiniowane warunkowo, w wyniku czego istnieje większe prawdopodobieństwo regresji w przyszłości.

Ponadto, chociaż nie zostało to wyraźnie zadane, podałeś przykłady, używając zarówno diei exit. Według devdocs.io, która opiera się na oficjalnej dokumentacji API, diejest równoważna exit, więc możesz wybrać jedno z dwóch i to nie robi różnicy.

Zarówno diei exitprzyjąć argumenty, więc można rozważyć użycie ich do produkcji kilka przydatnych informacji, takich jak informacje o wersji zaszyfrowanej zmiennej lub kontaktów na Abend, lub przekazać kod wyjścia, takich jak 0lub -1do dalszego przetwarzania.

Warto również zauważyć, że wp_dieto też jest rzecz. Nie należy mylić ich z wbudowanymi PHP, ale komplementuje je do wykorzystania w wyprowadzaniu HTML oprócz zwykłego tekstu i jest obecnie używany swobodnie w całym rdzeniu WordPress. Dowiedz się więcej owp_die na WordPress.org.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.