Quali sono le differenze tra WPINC e ABSPATH?

31 lug 2013, 06:43:07
Visualizzazioni: 36.1K
Voti: 47

È comune per gli sviluppatori di plugin proteggere i loro plugin dall'accesso diretto. Ho visto due modi per farlo:

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

e

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

Quali sono le differenze tra WPINC e ABSPATH? Quale è il modo "corretto" per farlo?

0
Tutte le risposte alla domanda 4
1
28

Sono definiti come segue:

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

dirname è una funzione PHP che restituisce il percorso della directory genitore, e wp-includes è abbastanza autoesplicativo.

Direi che ABSPATH è migliore perché è una delle prime cose che WordPress carica e inoltre ha un aspetto migliore:) Ma non c'è un vero "modo giusto" perché entrambi funzionano.

31 lug 2013 07:40:35
Commenti

Non esiste un modo giusto in assoluto, e io uso sempre if ( ! defined( 'ABSPATH' ) ) exit;... ma, forse, considera che lo scopo di questo snippet è assicurarsi che WordPress sia caricato 'WPINC' è meglio perché è più wordpressfull iniziando con 'WP'.

gmazzap gmazzap
31 lug 2013 07:53:07
0
10

if ( ! defined( 'WPINC' ) ) die; e if ( ! defined( 'ABSPATH' ) ) exit; aggiungono un ulteriore livello di sicurezza impedendo l'accesso diretto al file del tuo plugin. ABSPATH è una costante PHP definita da WordPress nel suo core.

Se il file del tuo plugin viene accessato dall'esterno di WordPress, la costante ABSPATH o WPINC non sarà definita, quindi il codice del plugin terminerà, prevenendo qualsiasi accesso non autorizzato al tuo codice.

ABSPATH e WPINC sono definite nel core di WordPress come:

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

Entrambe vengono utilizzate per lo stesso scopo.

4 ago 2015 09:58:28
0

Quali sono le differenze tra WPINC e ABSPATH?

Puoi verificarlo da solo. Basta guardare wp-load.php nel mirror di WordPress su GitHub.

Anche una rapida occhiata mostrerà che la risposta attualmente selezionata non è più corretta riguardo a come ABSPATH è definito. E se confronti diversi tag su GitHub, vedrai che la definizione di ABSPATH cambia effettivamente nel tempo.

Qual è il modo "giusto" per farlo?

Dato che questi sono utilizzati per la sicurezza, opterei per ABSPATH. La motivazione è che ABSPATH non solo è definito per primo nel bootstrapper di WP, ma WPINC è definito sotto una condizione nello stesso file e, di conseguenza, è più probabile che possa subire regressioni future.

Inoltre, anche se non esplicitamente chiesto, hai fornito esempi che utilizzano sia die che exit. Secondo devdocs.io, che attinge alla documentazione ufficiale delle API, die è equivalente a exit, quindi potresti scegliere uno dei due e non farebbe differenza.

Sia die che exit accettano argomenti, quindi potresti considerarli per stampare informazioni utili, come una versione crittografata o informazioni di contatto, in caso di terminazione anomala, o passare un codice di uscita come 0 o -1 per ulteriori elaborazioni.

Vale anche la pena notare che esiste wp_die. Da non confondere con le funzioni built-in di PHP, ma le completa per l'uso nell'output di HTML oltre al testo semplice ed è utilizzato ampiamente nel core di WordPress attualmente. Scopri di più su wp_die su WordPress.org.

10 giu 2017 16:01:12
2

Può essere utile notare che non c'è alcuna differenza tra die e exit.

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

25 mar 2024 12:20:49
Commenti

Nella sua forma attuale, la tua risposta non è chiara. Per favore [modificala] per aggiungere dettagli aggiuntivi che aiutino gli altri a capire come questo risponda alla domanda posta. Puoi trovare maggiori informazioni su come scrivere buone risposte nel centro assistenza.

User User
26 mar 2024 04:07:43

Questo non fornisce una risposta alla domanda. Una volta che avrai sufficiente reputazione potrai commentare qualsiasi post; invece, fornisci risposte che non richiedano chiarimenti da parte di chi ha posto la domanda. - Da Revisione

cjbj cjbj
26 mar 2024 11:59:26