Care sunt diferențele dintre WPINC și ABSPATH?

31 iul. 2013, 06:43:07
Vizualizări: 36.1K
Voturi: 47

Este comun pentru dezvoltatorii de plugin-uri să își protejeze plugin-urile împotriva accesului direct. Am văzut două modalități de a face acest lucru:

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

și

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

Care sunt diferențele dintre WPINC și ABSPATH? Care este modalitatea "corectă" de a face acest lucru?

0
Toate răspunsurile la întrebare 4
1
28

Sunt definite după cum urmează:

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

dirname este o funcție PHP care returnează calea directorului părinte, iar wp-includes este destul de explicativ.

Aș spune că ABSPATH este mai bun pentru că este unul dintre primele lucruri pe care WordPress le încarcă și arată mai bine:) Dar nu există o cale "corectă" întrucât ambele funcționează.

31 iul. 2013 07:40:35
Comentarii

Nu există o metodă cu adevărat corectă, iar eu folosesc întotdeauna if ( ! defined( 'ABSPATH' ) ) exit;... dar, poate, ia în considerare că scopul acestui fragment de cod este să asiguri că WordPress este încărcat, 'WPINC' este mai bun deoarece este mai wordpressfull începând cu 'WP'.

gmazzap gmazzap
31 iul. 2013 07:53:07
0
10

if ( ! defined( 'WPINC' ) ) die; și if ( ! defined( 'ABSPATH' ) ) exit; adaugă un strat suplimentar de securitate prin prevenirea accesului direct la fișierul pluginului tău. ABSPATH este o constantă PHP definită de WordPress în nucleul său.

Dacă fișierul pluginului este accesat din afara WordPress, constanta ABSPATH sau WPINC nu va fi definită, astfel încât se va ieși din codul pluginului, prevenind orice acces neautorizat la codul tău.

ABSPATH și WPINC sunt definite în nucleul WordPress astfel:

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

Ambele sunt utilizate în același scop.

4 aug. 2015 09:58:28
0

Care sunt diferențele dintre WPINC și ABSPATH?

Poți verifica singur. Doar uită-te la wp-load.php în oglinda WordPress pe GitHub.

Chiar și o scurtă privire va arăta că răspunsul selectat în prezent nu mai este corect în ceea ce privește modul în care este definit ABSPATH. Și dacă compari diferite tag-uri pe GitHub, vei vedea că definiția ABSPATH se schimbă de fapt în timp.

Care este metoda „corectă” de a face acest lucru?

Având în vedere că acestea sunt folosite pentru securitate, aș alege ABSPATH. Raționamentul este că ABSPATH nu este doar definit primul în bootstrapper-ul WP, WPINC este definit sub o condiție în același fișier și, ca rezultat, este mai probabil să întâmpine o regresie în viitor.

De asemenea, deși nu a fost întrebat explicit, ai furnizat exemple folosind atât die cât și exit. Conform devdocs.io, care se bazează pe documentația oficială API, die este echivalent cu exit, așa că poți alege oricare dintre cele două și nu va face nicio diferență.

Atât die cât și exit acceptă argumente, așa că ai putea lua în considerare utilizarea lor pentru a afișa informații utile, cum ar fi o versiune criptată sau informații de contact, în caz de eroare, sau pentru a transmite un cod de ieșire precum 0 sau -1 pentru procesare suplimentară.

De menționat este și faptul că wp_die există și el. Nu trebuie confundat cu funcțiile PHP încorporate, dar le completează pentru utilizarea în afișarea HTML în plus față de text simplu și este utilizat în mod liber în întregul nucleu WordPress în prezent. Află mai multe despre wp_die pe WordPress.org.

10 iun. 2017 16:01:12
2

De asemenea, este bine de știut că nu există nicio diferență între die și exit.

Vezi: https://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php

25 mar. 2024 12:20:49
Comentarii

În forma sa actuală, răspunsul tău este neclar. Te rugăm să [editezi] pentru a adăuga detalii suplimentare care să ajute pe alții să înțeleagă cum acest lucru răspunde la întrebarea pusă. Poți găsi mai multe informații despre cum să scrii răspunsuri bune în centrul de ajutor.

User User
26 mar. 2024 04:07:43

Acest lucru nu oferă un răspuns la întrebare. Odată ce vei avea suficiente reputație vei putea să comentezi orice postare; în schimb, oferă răspunsuri care nu necesită clarificări din partea celui care a întrebat. - Din Revizuire

cjbj cjbj
26 mar. 2024 11:59:26