2010-06-23 3 views
1

다른 도메인을 가진 동일한 서버에서 호스팅되는 일련의 웹 사이트가 있습니다. 몇 가지 일반적인 PHP 스크립트를 호스팅하고 다른 도메인에서 호출 할 수 있어야합니다.PHP 코드가 포함 된 교차 도메인 포함 - 실패

Im은 약간 새로운 PHP로되어있어 pls는 코드 시도를 용서합니다. 다음과 같은 반복을 시도해 보았습니다. PHP 태그 내에서

... 마지막으로 나는 다음 부모 스크립트에서 포함하는 실행하려는 기능을 포함하는 포함 당기는 시도


$show_section = $_GET['show_section']; 
include('http://www.mydomain/common_include.php');//Then $show_section would be available to the included file/cod 
include('http://www.mydomain/common_include.php?show_section=$section'); 

.

  • 나는 많은 서버 (파일과 관련된 점점 보다는 지향이 PHP 을 유지하는 것을 선호 등 시스템 (하지만 난 권한 등)
  • 내가하지만 선호 바로 업로드 할 수 없습니다 변경할 수 있습니다 별도로
  • 내가 PHP를 이해
  • 이 때문에 어쩌면 문제가 서버에서 실행되는 각 도메인에 동일한 라이브러리가 다른 서버에 걸쳐 스크립트를 포함합니다.

미리 감사드립니다.

#

편집 OK OK - 난 .... 그것의 나쁜 관행이 있으므로주의 것이라는 빠른 답변 주셔서 대단히 감사를 얻을. 그러나 모든 사이트에이 기본 PHP 응용 프로그램을 명시 적으로 표시하는 방법에 대한 다른 권장 사항은 없지만 각 사이트의 루트에 파일을 추가해야합니까? 막대한 스크립트 복제를 막기 위해서 ... (db 또는 다른 soloutions에서 큰 소리로 스크립트를 호출하는 것으로 생각하십시오) 다시 도움을 요청하십시오.

+0

코드는 모든 사이트를 제공하는 서버에 있어야합니다. 그게 전부입니다. – Yuliy

+0

이것은 안전하지 않은 코드입니다. – rook

답변

3

원격 PHP 파일을 포함 할 수 있다면 엄청난 보안 상 위험 할 수 있습니다. 자신의 프로젝트. PHP가 서버에 보내기 전에 PHP가 파싱되어 도메인 간 포함은 스크립트가 생성하는 출력 만 포함합니다. PHP 파일을 포함 할 수있는 유일한 방법은 로컬 파일 시스템을 사용하는 것입니다. 당신이 포함 약 PHP.net의 설명서를 보면

, 당신이 찾을 수 있습니다 : "URL fopen을 래퍼는"(디폴트 설정입니다) PHP에서 활성화

경우,을 지정할 수 있습니다 HTTP 또는 기타 지원되는 래퍼를 통해 URL을 사용하여 포함 할 파일 - 로컬 경로 이름 대신 지원되는 프로토콜 목록/프로토콜 목록을 참조하십시오. 대상 서버가 대상 파일을 PHP 코드로 해석하면 HTTP GET과 함께 사용되는 URL 요청 문자열을 사용하여 변수가 포함 된 파일로 전달 될 수 있습니다. 이것은 엄밀히 말하면 파일을 포함하고 부모 파일의 가변 범위를 상속받는 것과 동일한 것을 말하지는 않습니다. 스크립트는 실제로 원격 서버에서 실행되고 결과는 로컬 스크립트에 포함됩니다.

거의 모든 것을 설명합니다.

0

이것은 매우 나쁜 습관입니다.
실제로 PHP가 아니라 HTML 코드 만 포함하고 있습니다.

을 포함하고 URL은 포함되지 않습니다. 동일한 서버가 가능합니다.
절대 경로을이 파일들에 사용하기 만하면됩니다.

+0

죄송합니다. 'include file, not urls'은 (는) PHP 'file_get_content 또는'fopen '을 사용 하시겠습니까? 감사합니다 – megaSteve4

+0

@ user256888 동일한 포함을 사용하는 것을 의미합니다. URL이 아니라 인수로 ** filename **을 사용하십시오. –

+0

Include files은 ('/ usr/local/apache/htdocs/common_include.php') include ('http : //www.mydomain/common_include.php')를 포함하지 않음을 의미합니다. –

0

정말 나쁜 일인 사실을 제외하고는 실제로 포함 시키려면 URLs이 허용되는지 확인해야합니다.

그러나 스크립트를 사용하는 데 필요한 모든 사이트, 당신은 PHP를 실행하는 사용자가 액세스 할 수있는 디렉토리에 어딘가에 스크립트를 넣고 php.ini의 include_path 특성 (can also be done at runtime)

에 DIR 것을 추가 할 수 있다면 (또는 PHP 확장을 생성하여 확장으로로드 할 수 있습니다.)

1

PHP 스크립트 나 플러그인을 여러 사이트에서 사용하고 필요할 때마다 번거로운 작업을하는 것에 대한 원래 질문의 뿌리가있는 것 같습니다. 업데이트 할. 사이트간에 PHP 파일을 포함시키려는 시도는 좋지 않지만, 가능한 한 자체 포함되도록 스크립트를 구조화하는 것이 더 좋은 계획입니다. 전체 플러그인을 하나의 디렉토리에 포함시키고 .... 함수를 호출하는 함수 호출이 깨끗하고 잘 명명 된 함수, 균일 한 명명 규칙 및 각 함수에 필요한 매개 변수에 대한 계획을 잘 고려하도록 구성하십시오. 전역 변수 사용을 피하십시오.

모든 위치에서 플러그인/스크립트를 업데이트해야 할 때마다 아주 쉽게 시간을 가져야합니다. 이전 사이트를 대체하는 각 사이트에 플러그인이 포함 된 새 디렉토리를 업로드하는 자동화 된 프로세스를 설정할 수도 있습니다. 그리고 코드 내의 함수 호출은 거의 변경되지 않아야합니다.

스크립트가 큰 경우 최신 버전의 Wordpress와 같은 자동 업데이트 프로세스를 구현할 수 있습니다. 버튼을 클릭하면 자동으로 업데이트됩니다. 과거에는 Wordpress를 실행하는 12 개의 사이트를 업데이트하는 것이 큰 고통이었습니다.

+0

각 사이트의 로컬 사본에 .... 일종의 소스 제어 시스템에서 코드를 가져 오기만하면됩니다. 그런 다음이 스크립트는 하나의 마스터 위치에만 있으며 업데이트를 사용하여 해당 스크립트를 사용하는 모든 사이트에 해당 업데이트를 가져올 수 있습니다. – Sherri

0

해당 서버에 대한 루트 권한이 있으면 파일 시스템 루트의 절대 경로를 사용할 수 있지만 대부분의 호스팅에서는 그렇게 할 수 없습니다.

관련 문제