2012-12-30 2 views
0

나는 다른 페이지를 구문 분석하고 표시하고자하는 페이지 부분을 반환하는 PHP 스크립트를 호출하는 웹 사이트에서 ajax를 사용하고 있습니다. 나는이 기술을 과거에 사용했고,이 시간을 제외하고는 페이지의 일부가 PHP 코드를 가지고 있고 PHP 코드가 처리되지 않은 상태로 돌려 보내지는 것을 제외하고는 잘 작동한다.ajax 호출에서 PHP 코드 처리하기

다음은 구문 분석을 수행하고 결과를 반환하는 PHP 스크립트입니다.

require_once('simple_html_dom.php'); 
$dom = new simple_html_dom; 

if(isset($_GET['url'])) { 
    $url = $_GET['url']; 
    $html = file_get_html($url); 
    /*get contents*/ 
    $contents = $html->getElementById('content'); 
    echo $contents; 
} 

나는 그것이 $ 내용 문자열을 반환하기 전에 PHP 코드를 처리하기 위해 얻을 수있는 방법에 반환되는 $ 내용이 처리되는 $ 내용 문자열 내부의 PHP 코드 밖으로 원시 반환되는 내용 언급 한 바와 같이 ?

도움을 주셔서 감사합니다.

+2

PHP 파일을 (아약스 요청이 아닌) 직접 보는 경우 작동합니까? 아약스는 PHP가 처리되는 것을 막을 수 없으므로 PHP 스크립트에만 집중하고 아약스는 무시하십시오. 'php'파일이 올바른 확장자를 사용하지 않거나 어떤 이유로 구문 분석되지 않습니다. –

+0

로컬 파일은 apache \ php를 통해 구문 분석되지 않습니다. 이것은 자신의 파일 중 하나에서 동적 인 내용을 얻는 이상한 방법처럼 보입니다. –

+0

jQuery'.load()'함수를 사용하여 PHP 파일을로드 해보십시오. 그 파일을 처리하고 정확하게로드해야합니다. –

답변

1

다른 PHP 스크립트에 의해 생성 된 HTML을 구문 분석하는 것은 약간 hackish입니다. 새로운 사이트를 개발하고 있다면 최소한 PHP 스크립트를 함수로 나눠야하고 AJAX 요청의 경우 필요한 함수 만 호출하면됩니다.

$('#content').load('script.php #content'); 

: 당신이 나머지를 폐기, jQuery의 .load()이 문서에 서버의 응답의 특정 조각을 삽입 할 수 있습니다 명심, 기존의 복잡한 사이트에서 작업하는 경우에도

  • PHP의 output control 함수는 스크립트의 출력 a를 캡처 할 수 있습니다 :

    은 당신이에 대해 요구하는 것은 가능하다, 말했다 문자열은 str_get_html()을 사용하여 구문 분석 할 수 있습니다. 이 기능을 사용하려면 기존 PHP 스크립트를 포함해야합니다. 포함하는 모든 스크립트는 전역 함수 및 변수, 슈퍼 전역 및 클래스에 액세스 할 수 있습니다.

    경고 :file inclusion attacks을 방지하기 위해 요청한 파일 이름을 특정 파일의 화이트리스트와 대조하여 확인하십시오. URL을 블랙리스트에 올리고 allow_url_fopen을 비활성화하는 것만으로는 사이트를 보호하기에 충분하지 않습니다.

    ob_start(); 
    require $filename; // might have to be outside of a function 
    $html = str_get_html(ob_get_clean()); 
    
  • 또는, AJAX 스크립트가 file_get_contents() 또는 cURL 중 하나가 (절대 URL이 아닌 파일 이름을 지정)을 사용하여 자신의 HTTP 요청을 가질 수있다. 그렇지 않으면 웹 서버를 구성하지 않는 한이 내부 요청은 웹 서버의 액세스 로그에 127.0.0.1 또는 웹 서버의 IP 주소로 표시됩니다.

+0

당신이 옳은 것은 .load 함수는 내가하려는 일을하는 훨씬 쉬운 방법입니다. 그렇게해서 페이지의 일부를로드하는 데 사용할 수 있는지 몰랐습니다. 감사 –

관련 문제