Sudah umum bagi pengembang plugin untuk melindungi plugin mereka dari akses langsung. Saya melihat dua cara untuk melakukan itu:
if ( ! defined( 'WPINC' ) ) die;
dan
if ( ! defined( 'ABSPATH' ) ) exit;
Apa perbedaan antara WPINC dan ABSPATH? Yang mana cara yang 'benar' untuk melakukannya?
plugins
php
plugin-development
Daniel
sumber
sumber
if ( ! defined( 'ABSPATH' ) ) exit;
... tapi, mungkin, pertimbangkan bahwa ruang lingkup cuplikan ini memastikan bahwa wordpress dimuat 'WPINC' lebih baik karena lebih banyak wordpressfull menatap dengan 'WP'.if ( ! defined( 'WPINC' ) ) die;
danif ( ! defined( 'ABSPATH' ) ) exit;
menambahkan lapisan keamanan tambahan dengan mencegah akses langsung ke file plugin Anda.ABSPATH
adalah konstanta PHP yang didefinisikan oleh WordPress pada intinya.Jika file plugin Anda diakses dari luar WordPress, konstanta
ABSPATH
atauWPINC
tidak akan ditentukan, sehingga keluar dari kode plugin, mencegah akses yang tidak sah ke kode Anda.ABSPATH
danWPINC
didefinisikan dalam inti WordPress sebagai:Keduanya digunakan untuk tujuan yang sama.
sumber
Anda bisa mengecek diri sendiri. Lihat saja di
wp-load.php
cermin WordPress di GitHub.Bahkan sekilas akan menunjukkan jawaban yang dipilih saat ini tidak lagi benar tentang bagaimana
ABSPATH
didefinisikan. Dan jika Anda membandingkan berbagai tag di GitHub, Anda akan melihatABSPATH
definisi tersebut sebenarnya berubah seiring waktu.Mengingat ini digunakan untuk keamanan, saya akan pergi untuk
ABSPATH
. Dasar pemikiran yangABSPATH
tidak hanya didefinisikan pertama kali di WP bootstrapper,WPINC
didefinisikan di bawah persyaratan dalam file yang sama dan, sebagai hasilnya, lebih mungkin untuk mengalami regresi di masa depan.Selain itu, meskipun tidak secara eksplisit ditanyakan, Anda memberikan contoh menggunakan keduanya
die
danexit
. Menurutdevdocs.io
, yang mengacu pada dokumentasi API resmi,die
sama denganexit
, sehingga Anda dapat memilih salah satu dari keduanya dan itu tidak akan membuat perbedaan.Keduanya
die
danexit
menerima argumen, sehingga Anda dapat mempertimbangkan untuk menggunakannya untuk menampilkan beberapa informasi yang bermanfaat, seperti tag versi terenkripsi atau informasi kontak, saat ditangguhkan, atau meneruskan kode keluar seperti0
atau-1
untuk diproses lebih lanjut.Yang juga perlu diperhatikan adalah
wp_die
hal itu juga. Tidak perlu bingung dengan built-in PHP, tetapi memuji mereka untuk digunakan dalam menghasilkan HTML selain teks biasa dan digunakan secara bebas di seluruh inti WordPress saat ini. Pelajari lebih lanjut tentangwp_die
di WordPress.org.sumber