그누보드 사용하다보면 page 파일을 불러오면  짦은 주소 기능을 사용 할수 없다  Rewrite 를 사용하면 가능하지만 이후 SiteMap 을 생성 할때 불편하다 

그래서 내용 관리 파일에서 수정하는 방법이 있다

/skin/content/basic/content.skin.php 열어서 

    <div id="ctt_con">
        <?php echo $str; ?>
    </div>

위 내용을 아래처럼 수정하면된다.

    <div id="ctt_con">
        <?php //echo $str; ?>
        <?php @include_once($co['co_content']); ?>
    </div>

하지만 문제가 있다 보안상 사실 코드에 승인한 파일명만 처리 하도록 하면 더 좋지만 불편하다 그래서 아래처럼 수정 하였다.

<div id="ctt_con">
    <?php
    // 'co_content' 키가 존재하고 빈 문자열이 아닌지 확인
    if (isset($co['co_content']) && is_string($co['co_content']) && trim($co['co_content']) !== '') {
        // 'co_content' 값의 유효성을 검사하고 디렉토리 트래버설을 방지하기 위해 basename() 사용
        $coContent = basename($co['co_content']);
        $coContent = str_replace(array('/', '\\'), '', $coContent);
        // 'co_content' 값으로 사용되는 파일의 디렉토리 경로를 정의
        $contentDirectory = G5_THEME_PATH . '/contents/';
        // 'co_content' 값으로 사용되는 파일의 전체 경로를 정의
        $contentFilePath = $contentDirectory . $coContent;
        // 파일이 존재하는지 확인하고 포함하여 실행
        if (file_exists($contentFilePath)) {
            // 보안상 이유로 include_once 대신 include를 사용하는 것이 좋습니다.
            include $contentFilePath;
        } else {
            // 파일이 존재하지 않을 경우 메시지 출력
            echo '컨텐츠를 찾을 수 없습니다.';
        }
    } else {
        // 'co_content' 키가 존재하지 않거나 비어있는 경우 메시지 출력
        echo '컨텐츠를 사용할 수 없습니다.';
    }
    ?>
</div>

 위  코드는 테마 폴더 아래 contents 폴더에 있는 경로만 실행 할수 있도록 하였다.  이제 내용관리에 파일 경로만 넣고 사용하면 된다. 

예 ) ../theme/basic/page/page.php 

작성할때 주의 사항 html 모드에서 작성하자 필요 없는 테그가  가는걸 방지 하고자 한다.

잘 작동한다. 

오류가 나오면 그건 불러오는 php 파일을  수정하자  그것도 싫다면 아래 처럼 @ 처리 하면 된다. 

<div id="ctt_con">
    <?php
    // 'co_content' 키가 존재하고 빈 문자열이 아닌지 확인
    if (isset($co['co_content']) && is_string($co['co_content']) && trim($co['co_content']) !== '') {
        // 'co_content' 값의 유효성을 검사하고 디렉토리 트래버설을 방지하기 위해 basename() 사용
        $coContent = basename($co['co_content']);
        $coContent = str_replace(array('/', '\\'), '', $coContent);
        // 'co_content' 값으로 사용되는 파일의 디렉토리 경로를 정의
        $contentDirectory = G5_THEME_PATH . '/contents/';
        // 'co_content' 값으로 사용되는 파일의 전체 경로를 정의
        $contentFilePath = $contentDirectory . $coContent;
        // 파일이 존재하는지 확인하고 포함하여 실행
        @include $contentFilePath; // 오류를 무시하고 파일을 포함합니다.
    } else {
        // 'co_content' 키가 존재하지 않거나 비어있는 경우 메시지 출력
        echo '컨텐츠를 사용할 수 없습니다.';
    }
    ?>
</div>


이상
2023/07/27 15:08 2023/07/27 15:08

Trackback Address :: https://youngsam.net/trackback/2175