모듈의 controller 파일에서
$_SESSION['excel_sheet'] = $excel_sheet; $this->setRedirectUrl('./modules/excel/libs/xlsxwriter.downloader.php');
이렇게 세션값을 넣어주고 페이지를 리다이렉트하면요.
(물론 controller 파일의 해당 코드가 들어간 함수에서도 권한 체크는 나름 해뒀습니다)
해당 파일(xlsxwriter.downloader.php)에서는
<?php //url 로 직접 불러오는것을 방지 if ( !strstr($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) && !strstr($_SERVER['HTTP_REFERER'], 'xlsxwriter.downloader.php') ) { exit; } include_once '../../../common/autoload.php'; Context::init(); $sheet = $_SESSION['excel_sheet']; unset($_SESSION['excel_sheet']); if ( !isset($sheet) || empty($sheet) ) { exit; } // .... 하략
이런 식으로 $_SESSION 값을 받아서 바로 해제시켜줬는데요.
제가 보안 쪽은 잘 모르는 선무당이다보니 혹시 문제가 있을지 염려되어 질문글 남깁니다.
세션 사용할거라면 권한 체크는 세션으로 하는게 나을것 같습니다.
empty 함수는 내부적으로 !isset을 포함하고 있습니다. 따라서 if의 앞 !isset 은 없어도 됩니다.