웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
include용 파일에는 닫는 php문이 없다?
2014.04.14 15:31
XE에서 사용되는 db.config.php 파일등 include가 되는 파일을 잘 보시면, 닫는 php문인 ?>가 없는 것을 보실 수 있습니다.
왜 없을까요?
우선 그 전에 php 파일의 특성을 알 필요가 있습니다.
php는 <?php 부터 ?> 까지를 실행합니다. 즉, ?> 이후의 문자열은 처리하지 않습니다.
예를 하나 들어 보겠습니다.
<?php include('common.php'); session_start(); if (!isset($_SESSION['count'])) { $_SESSION['count'] = 0; } else { $_SESSION['count']++; }?><meta charset="utf-8"><?php echo $lang->all; echo $_SESSION['count']; echo $lang->visit;
<?php $lang = new stdClass(); $lang->all="총" ; $lang->visit="회 방문하셨네요!"; ?>
php 닫는 태그 뒤에 공백이 추가되어 있습니다.
예상되는 결과는 총 ~회 방문하셨네요! 입니다.
하지만!
오류가 납니다.(정상 작동하긴 합니다)
왜 그럴까요? 바로 common.php에 있습니다.
common.php를 include 할때, 공백까지 함께 include 되었고, 이로 인해 세션 변수를 설정하기 전에 공백이 먼저 출력되어 버리면서 오류가 생기는 것입니다.
이제 common.php를 약간 수정해 보겠습니다.
<?php $lang = new stdClass(); $lang->all="총" ; $lang->visit="회 방문하셨네요!";
맨 뒷줄 공백은 그대로이지만, 닫는 php 태그를 뺐습니다.
결과는..
잘 나오죠.
이처럼 include하는 php 파일에는 닫는 php 태그를 생략하는 것이 생길수 있는 오류를 방지하는 방법입니다.
오류가 나는 페이지는 http://yjsoft.pe.kr/php_ex/wrong/로,
정상적인 페이지는 http://yjsoft.pe.kr/php_ex/right/ 로 방문하실 수 있습니다.