2010-02-23 2 views
0

내 사이트에 updater.php 스크립트가 있습니다. 이 updater.php 파일은 홈베이스 (내 중앙 서버)에서 호출 될 때 코드를 실행하도록 설정됩니다. 호출하는 페이지를 떠나지 않고 여러 서버에있는 단일 PHP 스크립트를 실행하는 코드가 필요합니다.

은 그래서 ... 그래서 같은이 updater.php 스크립트에 대한 경로로,

www.server1.com/path/updater.php 
www.server2.com/path/updater.php 
www.server3.com/path/updater.php 
...etc (there will be lots of them) 

을 내 모든 원격 사이트 주소가 나열되는 종류의 대시 보드를 만들 찾고 있어요 그리고 난거야 각 옆에있는 체크 박스와 함께 목록을 표시하는 인터페이스를 만들고 모두 선택하십시오.

그리고 그 목록에있는 전체 URL 컬렉션을 반복하여 호출 할 PHP 스크립트를 만들려고합니다. 각 서버의 updater.php 파일에 "version = v001"을 전달합니다 ...

$.get("http://server1.com/path/updater.php?version=v001"); 
$.get("http://server2.com/path/updater.php?version=v001"); 
...etc 

나는 updater.php (내 모든 사이트에있는 파일)에 코드를 설정하여 요청을 받으면 $ _GET [ 'version']을 구문 분석하여 버전 이 파일은 내 중앙 서버에서 어떤 파일을 업데이트 할 것인지를 안다. 총이 기본적으로 워드 프레스 테마 업데이트를 실행하는 배치 업데이터 스크립트입니다

난 그냥

PS는 ... 어떻게 동작으로 모든 설정이 대시 보드를위한 스크립트를 작성하는 몇 가지 단서를 찾고 있어요 각 사이트에 가서 개별적으로하지 않아도됩니다.

+0

"updater.php 파일이 코드를 실행하도록 설정되었습니다."라는 메시지로 거대한 보안 구멍을 벗어나지 않도록하십시오. – chelmertz

+0

감사합니다. chelmertz. 이 코드는 내 서버에서 특정 위치와 특정 파일을 검사한다는 점에서 상당히 제한적입니다. 해당 파일을 가져 오면 파일이있는 동일한 디렉토리에 압축을 풉니 다. 호출하는 파일에서 찾을 수있는 유일한 매개 변수는 항상 4 자리 값이어야하는 버전 번호이며, 이것이 맞는지 확인해야합니다. 나는 당신이 볼 수있는 모든 가능한 구멍을 주시면 감사하겠습니다. –

답변

0

PHP의 cURL 확장자를 확인하여 스크립트 내의 여러 사이트에 요청을 쉽게 보낼 수 있습니다.

추가 도움이 필요하면 알려 주시기 바랍니다.

편집

당신은 쉽게 AJAX 호출을 관리 할 수있는 것입니다 자바 스크립트 프레임 워크 중 하나를 사용할 수있다 (즉, jQuery를 - 가장 엄격한 이럴). 그런 다음 비슷한 작업을 수행하십시오.

<form name="updater" id="updater" ...> 
    <input type="checkbox" name="server[]" value="0"/> Server 1 
    <input type="checkbox" name="server[]" value="1"/> Server 2 
    ... 
</form> 

<script type="text/javascript"> 
    var server_url = [ 
     'www.server1.com/path/updater.php', 
     'www.server2.com/path/updater.php', 
     'www.server3.com/path/updater.php' 
    ]; 

    $('#updater').bind('submit', function() { 
     $('input[name="server[]"]:checked', this).each(function() { 
      $.get(server_url[this.value]); 
     }); 
    }); 
</script> 

여기 있습니다!

+0

감사 aefxx. 이것은 야생에서 전개 될 것이므로, 내가 사용하는 모든 방법이 광범위하게 지원된다는 것을 확신하고자한다. (많은 공유 서버 환경, 주로 블루 호스트와 호스트 게이터, 그러나 다른 것들). –

+0

@aefxx : "do while"이나 "for loop"에서 php $ .get 명령을 실행할 수 있다면 아마 Ajax 루틴이 트릭을 할 것이라고 생각했습니다. 서버 응답을 기다려야한다고 생각하지 않습니다. 원격 updater.php 파일 각각에서 프로세스를 시작하기 만하면됩니다. –

1

jQuery를 사용하고있는 것처럼 보이며 AJAX는 PHP 스크립트가 아닌 스크립트를 호출하는 것이 좋습니다. 그렇지 않은 경우에는 이것을 무시하십시오.

"GO"버튼을 클릭하면 javascript를 사용하여 체크 된 모든 체크 박스의 값을 가져옵니다. 루프를 통해 $ .get() 작업을 수행하십시오. 그게 당신이해야 할 전부입니다.

선택적으로 get() 호출의 응답을 catch하고 상태 div를 업데이트하여 모두 성공적으로 실행되었는지 여부를 알 수 있습니다.

0

자바 스크립트가 필요하지 않습니다. 솔직히 말해서 PHP 태그의 능력에 의존하는 경우 적절한 URL을 가리키는 iframe 태그를 덤프합니다. 브라우저가 요청을하도록하십시오. iframe에 대한 좋은 점은 원격 스크립트에서 "성공"또는 오류 메시지를 출력 할 수 있다는 것입니다.

0

크로스 사이트 스크립팅을 수행 할 수있는 능력 때문에 jQuery를 단독으로 사용할 수 없습니다.

<?php 

    if($_SERVER['REQUEST_METHOD'] == "POST") 
    { 
     // Run through each 
     foreach($_POST['servers'] as $serverHost) 
     { 

      // Now contact the server. 
      // if getting urls is disabled (which some hosts do) 
      // you can use CURL to connect to the server. 
      $result = file_get_contents($serverHost); 
     } 
    } 
?> 
<form method="post" > 
    <input type="checkbox" name="servers[]" value="http://foo1.com/updater.php" /> 
    <input type="checkbox" name="servers[]" value="http://foo2.com/updater.php" /> 
    <input type="checkbox" name="servers[]" value="http://foo3.com/updater.php" /> 
    <input type="checkbox" name="servers[]" value="http://foo4.com/updater.php" /> 
    <input type="checkbox" name="servers[]" value="http://foo5.com/updater.php" /> 
    <input type="submit" /> 
</form> 
관련 문제