2012-11-29 2 views
0
내가 (그리고 내가 어떤 응용 프로그램을 사용하려고하거나 사용할 준비가 코드하지 않음)

사이트 맵 스크립트 :

내 웹 사이트 에 대한 사이트 맵을 만들려고 해요

안녕하세요 여기있는 file_get_contents에 unexcuted PHP 코드 내 코드가 어떻게 작동하는지. 먼저 루트 디렉토리에서 파일을 검색하여 배열에 저장합니다. 다음은 저점 배열을 반복하고 해당 파일의 내용을 얻을 후 그 내용

public function scan($directory) 
{ 
     $dir = dir($directory); 
     while (($file = $dir->read()) !== false) { 
     $type = ($this->is_directory($directory.$file)) ? 'dir' : 'link' ; 
      $this->files[] = array('address'=>$directory.DIRECTORY_SEPARATOR.$file , 'type'=>$type); 
     } 
     sort($this->files);  
     $dir->close();  
} 

디렉토리를 scaning 저점 파일을 루핑 및 구문 분석 링크에 대한 내용 (A 태그)

을 구문 분석 할 수 있습니다

public function get_links(){ 
     foreach($this->files as $f) 
     { 
      if($f['type'] == 'link') 
      { 
        $contents = file_get_contents($f['address']); 
        $DOM = new DOMDocument(); 
        $DOM->loadHTML($contents); 
        $a = $DOM->getElementsByTagName('a'); 
        foreach($a as $link){ 
         $this->links[] = $link->getAttribute('href'); 
        } 

      } 
     } 
    } 

이제 문제는 코드의 두 번째 pice에서 파일의 내용을 가져올 때 해당 파일의 PHP 코드가 실행되지 않는다는 것입니다. 그래서 내가 좋아할만한 것을 얻을 수 있습니다 :

www.site.com/<?php echo $a; ?>.html 
or 
www.site.com/news.php?id=<?php echo $a; ?> 

어떻게 해결할 수 있습니까? 나는 컬해야합니까? 하지만 파일과 함께 작동하지 않을 것이며 URL 주소로만 작동합니다.

답변

1

PHP 파일이 얼마나 복잡한가에 따라 다릅니다. MVC 또는 프레임 워크를 사용하는 경우 파일 내용을로드하는 것처럼 간단하지 않을 수 있습니다. 당신은 간단한 PHP 파일 (포함 된 몇 가지 클래스와 몇 독립형 페이지)를 가지고 있다면, 당신은 할 수 있습니다 :

ob_start(); 
include($f['address']); 
$content = ob_get_contents(); 
ob_end_clean(); 
1

예, 말아 야 할 것입니다. file_get_contents()은 하드 디스크의 파일을 바이트 단위로 읽습니다. 그것이 당신의 코드를 읽고 그것을 실행하지 않는다는 것을 의미합니다.

설명 : cURL을 엄격하게 사용할 필요는 없지만 파일 시스템이 아닌 웹 서버를 통해 페이지를 요청할 수있는 모든 것. 따라서 서버에서 지원하는 경우 file_get_contents('http://example.org')을 사용할 수 있지만 URL을 사용하지는 않습니다.

+0

이 실제로 사실이 아니다, 당신은 HTTP'와 같은 원격 콘텐츠를 얻을 file_get_contents()를 사용할 수 있습니다 : // localhost를/내 사이트/폴더/file.php', 그래서 이유에가 없습니다 콘텐츠가 로컬 인 경우 특히 cURL로 이동하십시오. –

+0

예, ALLOW_URL_FOPEN이면 true입니다. 설정됩니다. 그러나 내 요점은 엄밀히 말하면 cURL이되어야한다는 것이 아니라 URL을 사용하고 그의 웹 서버에서 파일을 요청해야한다는 것입니다. – lawl0r

+0

예, allow_url_fopen을 설정해야합니다. – Prisoner

1

을 당신은 탁구 웹 서버와 플레이와를 사용하여 파일에 액세스 할 수 있습니다 url like http : //mysite.com/myfile.php

http 콘텐츠를받는 방법은 다양합니다. 여기 예를 들어, 참조 : fopen is not working on my server