Які відмінності між WPINC та ABSPATH?


34

Розробникам плагінів прийнято захищати додатки від прямого доступу. Я бачив два способи зробити це:

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

і

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

Які відмінності між WPINC та ABSPATH? Який із них є правильним?

Відповіді:


19

Вони визначаються наступним чином:

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

dirnameце функція PHP, яка повертає шлях до батьківського каталогу, і wp-includesдосить сама пояснювальна.

Я б сказав, що ABSPATHце краще, тому що це одне з перших речей, яке завантажує WP, і воно також виглядає краще :) Але немає справжнього "правильного шляху", оскільки вони працюють обоє.


4
Немає справжнього правильного способу, і я завжди використовую if ( ! defined( 'ABSPATH' ) ) exit;... але, можливо, врахуйте, що сфера застосування цього фрагмента гарантує, що Wordpress завантажений "WPINC" краще, тому що більше wordpressfull дивиться на "WP".
gmazzap

4

if ( ! defined( 'WPINC' ) ) die;і if ( ! defined( 'ABSPATH' ) ) exit;додайте додатковий рівень безпеки, запобігаючи будь-який прямий доступ до вашого файла плагіна. ABSPATH- константа PHP, визначена WordPress у своїй основі.

Якщо доступ до вашого файла плагінів знаходиться за межами WordPress, константа ABSPATHабо WPINCне буде визначена, тому він виходить з коду плагіна, запобігаючи будь-якому несанкціонованому доступу до вашого коду.

ABSPATHі WPINCвизначаються в ядрі WordPress як:

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

Обидва використовуються з однаковою метою.


1

Які відмінності між WPINC та ABSPATH?

Ви можете перевірити себе. Просто подивіться наwp-load.php на дзеркало WordPress на GitHub.

Навіть швидкий погляд покаже, що обрана на даний момент відповідь більше не є правильною щодо того, як ABSPATHвизначено. І якщо порівнювати різні теги на GitHub, ви побачите, що ABSPATHвизначення фактично змінюється з часом.

Який із них є правильним?

Враховуючи, що вони використовуються для безпеки, я б пішов ABSPATH. Це обґрунтування, яке ABSPATHне тільки визначено першим у завантажувальній програмі WP,WPINC визначається умовно в тому самому файлі і, як результат, більше шансів зазнати регресії в майбутньому.

Крім того, не вимагаючи прямого запиту, ви надали приклади, використовуючи і dieі, і exit. Згідно devdocs.io, яка спирається на офіційну документацію API, dieрівнозначнаexit , тому ви можете вибрати будь-яке з двох, і це не змінить значення.

Обидва dieі exitприймають аргументи, тому ви можете розглянути можливість їх використання для виведення деякої корисної інформації, наприклад, зашифрованого тегу версії або контактної інформації, або залишити код виходу, наприклад0 або-1 для подальшої обробки.

Також варто зазначити, що wp_dieце теж річ. Не плутати з вбудованими PHP, але компліменти для використання у виведенні HTML на додаток до простого тексту та в даний час використовується в основному в ядрі WordPress. Дізнайтеся більше проwp_die WordPress.org.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.