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;어쩌면,이 조각의 범위가 더 때문 워드 프레스는 더 나은 'WPINC'는로드 보장 것을 고려 ...하지만 wordpressfull 'WP'에 응시가.
gmazzap

4

if ( ! defined( 'WPINC' ) ) die;if ( ! defined( 'ABSPATH' ) ) exit;플러그인 파일에 대한 직접 액세스를 방지하여 추가 보안 계층을 추가 할 수 있습니다. ABSPATH핵심에서 WordPress에 의해 정의 된 PHP 상수입니다.

플러그인 파일이 WordPress 외부에서 액세스되면 상수 ABSPATH또는 WPINC정의되지 않으므로 플러그인 코드를 종료하여 코드에 대한 무단 액세스를 방지합니다.

ABSPATHWPINC워드 프레스 코어에서 다음 과 같이 정의됩니다.

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

둘 다 같은 목적으로 사용됩니다.


1

WPINC와 ABSPATH의 차이점은 무엇입니까?

당신은 자신을 확인할 수 있습니다. 그냥 보고wp-load.php GitHub의에서 워드 프레스 거울에.

한 눈에보기 만해도 현재 선택된 답변 ABSPATH이 정의 된 방식에 대해 더 이상 정확하지 않음을 표시합니다 . 그리고 GitHub에서 다른 태그를 비교하면 ABSPATH시간이 지남에 따라 정의가 실제로 변경되는 것을 볼 수 있습니다.

어느 것이 올바른 방법입니까?

이것들이 보안에 사용된다면, 나는 갈 것입니다 ABSPATH. 이론적 근거의 존재 ABSPATH만을 WP 부트 스트 래퍼에 처음으로 정의되지는 WPINC결과적으로 미래의 회귀를 경험할 가능성이 더 높습니다, 동일한 파일에 조건에 따라 정의된다.

또한 명시 적으로 요청하지는 않았지만 die및 을 모두 사용하여 예제를 제공했습니다 exit. devdocs.io공식 API 문서를 사용하는에 따르면에 die해당 exit하므로 둘 중 하나를 선택할 수 있으며 차이가 없습니다.

둘 다 인수 dieexit허용하므로 인수를 사용하여 암호화 된 버전 태그 또는 연락처 정보와 같은 유용한 정보를 이상 종료시 출력 0하거나 -1추가 처리 등의 종료 코드를 전달하는 것을 고려할 수 있습니다 .

또한 주목할 가치가 wp_die있습니다. PHP 내장 기능과 혼동하지 말고 일반 텍스트 외에 HTML 출력에 사용하도록 칭찬하며 현재 WordPress 코어 전체에서 자유롭게 사용됩니다. 알아 보다 약wp_die WordPress.org에.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.