R

랜덤 배너(가로/세로)를 출력하는 php source

· 18년 전 · 3235

842527799_abf4e6f6_B0A1B7CEB7A3B4FDB9E8B3CAB1A4B0ED.jpg







842527799_01e3fb73_BCBCB7CEB7A3B4FDB9E8B3CAB1A4B0ED.jpg위와 같이 가로 또는 왼쪽과 같이 세로로 배너를 출력하는 php 프로그램입니다.


늘어가는 배너를 어떻게 하면 방문자에게 효과적으로 보일 수 있을까 생각하다 만들었습니다. 

그누보드 배너광고 게시판등 스킨을 생각해 보기도 했는데 로딩속도도 문제가 될 것 같고 배너수도 많지가 않아서 프로그램안에 배열로 관리하도록 했습니다. 배너가 많으면 별도의 파일로 만들어서 사용하면 좋을 것 같습니다.

세로 배너광고는 무작위(랜덤)하게 배열에 있는 배너광고를 출력합니다. 배너가 중복되어 출력되지 않게 프로그램을 고쳤습니다.

가로광고는 처음 8개만 2행4열로 출력을 해줍니다. 필요한 갯수만큼 html을 추가하면 더 많은 광고를 출력할 수가 있습니다.


원 프로그램 소스는 예진맘님이 올려주신 http://www.sir.co.kr/bbs/board.php?bo_table=pl_php&wr_id=5 의 "오늘의 Tip 만들기"를 응용했습니다.

우선 세로 랜덤배너 프로그램부터 설명을 드리겠습니다. 아래의 코드를 복사하여 별도의 파일로 만들면 됩니다. 


★ rand_ad_banner_sero.php

<html><body>
<TABLE border=0 cellpadding=2 cellspacing=1 bgColor="#5996D9">

     <? 
     
     /*  배열내용 및 순서 "회사명|광고종료일|이미지파일 위치|배너를 누를때 연결될 페이지"  */
     $ad_array = array(
                "A 회사|2009-12-31|<IMG src='http://www.abc.com/image/a_banner.gif'>|<a href='http://www.abc.com/board_a/13'>",
                "B 회사|2008-12-31|<IMG src='http://www.abc.com/image/b_banner.gif'>|<a href='http://www.abc.com/board_a/1'>",
                "C 회사|2009-06-31|<IMG src='http://www.abc.com/image/c_banner.gif'>|<a href='http://www.abc.com/board_a/5'>",
                "D 회사|2008-12-31|<IMG src='http://www.abc.com/image/d_banner.gif'>|<a href='http://www.abc.com/board_a/10'>" );
    
     srand((double)microtime() * 1000000);       // 난수 함수를 사용하기 위한 선언문
     //$tbl_list = file("./rand_ad_banner.txt");    // 텍스트 파일(rand_ad_banner.txt)을 열어 행 단위로 tbl_ist 배열에 저장 <== 위 $ad_array를 사용하지않고 별도의 파일로 구성시 사용
     $tbl_list =  $ad_array;
     $tot_records = sizeof($tbl_list);                 // 배열의 행수를 구함   
     $array_tbl = Array();                                 // 배열 초기화   
     $today = date('Y-m-d', mktime(0,0,0,date('m')  , date('d'), date('Y')));   //오늘날짜를 받아들임

for ($i=0; $i<$tot_records; $i++) {           // 배열의 행수 만큼 반복 
     $tbl_record = rand(0,($tot_records - 1));            // 배열의 행수 만큼 난수 정수 발생 
     $array_tbl[$i] = $tbl_record;
     $dup_sign='n';

     for ($t=0; $t<$i; $t++) {        //랜덤선택된 배너광고가 중복으로 출력되지않게 비교하는 루틴
       if ($array_tbl[$i]==$array_tbl[$t]) {                  //중복된 배너가 있으면
          $dup_sign='y';                                           
          $i=$i-1;         //중복된 배너를 제외하고 다시 해당번호의 랜덤배너광고를 선택하기 위하여(재시도)
       }
     }

     if ($dup_sign=='n') {                   //중복된 배너가 없으면 출력
       $tip = $tbl_list[$tbl_record];       // 구해진 난수 정수를 텍스트 파일이 저장된 배열의 첨자로 사용
       $array_ad_tbl = explode('|',$tip);         // 광고회사명, 광고종료일,배너그림위치,링크 를 "|"를 이용하여 별개의 라인으로 분리해서 배열에 저장함
       if($today < $array_ad_tbl[1])  {      //오늘보다 광고종료일이 더 크면(미래이면) 출력
         echo '<tr><TD bgcolor=#F6F6F6>';
         echo $array_ad_tbl[3];               //배너이미지 출력
         echo $array_ad_tbl[2];               //배너이미지와 연결된 링크 출력
         echo '</a>';    
         echo '</td></tr>';
       }
     }
}

?>

</table></body></html>



다음은 가로 랜덤배너 프로그램입니다.

★ rand_ad_banner_garo.php

<html><body>

     <? 
     
     /*  배열내용 및 순서 "회사명|광고종료일|이미지파일 위치|배너를 누를때 연결될 페이지"  */
     $ad_array = array(
                "A 회사|2009-12-31|<IMG src='http://www.abc.com/image/a_banner.gif'>|<a href='http://www.abc.com/board_a/13'>",
                "B 회사|2008-12-31|<IMG src='http://www.abc.com/image/b_banner.gif'>|<a href='http://www.abc.com/board_a/1'>",
                "C 회사|2009-06-31|<IMG src='http://www.abc.com/image/c_banner.gif'>|<a href='http://www.abc.com/board_a/5'>",
                "D 회사|2008-12-31|<IMG src='http://www.abc.com/image/d_banner.gif'>|<a href='http://www.abc.com/board_a/10'>" );

     srand((double)microtime() * 1000000);          // 난수 함수를 사용하기 위한 선언문
     //$tbl_list = file("./rand_ad_banner.txt");       // 텍스트 파일(rand_ad_banner.txt)을 열어 행 단위로 tbl_ist 배열에 저장 <== 위 $ad_array를 사용하지않고 별도의 파일로 구성시 사용
     $tbl_list =  $ad_array;
     $tot_records = sizeof($tbl_list);            // 배열의 행수를 구함   
     $array_tbl = Array();                           // 배열, 변수 초기화
     $prt_array = Array();
     $k=0; 
     $today = date('Y-m-d', mktime(0,0,0,date('m')  , date('d'), date('Y')));   //오늘날짜를 받아들임

for ($i=0; $i<$tot_records; $i++) {                  // 전체 배열의 행수 만큼 반복함
     $tbl_record = rand(0,($tot_records - 1));         // 배열의 행수 만큼 난수 정수 발생 
     $array_tbl[$i] = $tbl_record;
     $dup_sign='n';

     for ($t=0; $t<$i; $t++) {        //선택되어진 배너광고가 이전에 선택이 되었는지 확인 ==> 중복출력 방지    
       if ($array_tbl[$i]==$array_tbl[$t]) {    //현재 파일에서 랜덤하게 선택된 배너가 기존에 선택된 배너와 중복되면
          $dup_sign='y';               //이전에 출력이 되었으면
          $i=$i-1;        //중복된 배너를 제외하고 다시 해당번호의 랜덤배너광고를 선택하기 위하여(재시도)
       }
     }
     if ($dup_sign=='n') {              //랜덤하게 선택된 배너광고가 출력테이블에 없으면
       $ad_record = $tbl_list[$tbl_record];         // 구해진 난수 정수를 텍스트 파일이 저장된 배열의 첨자로 사용
       $array_ad_tbl = explode('|',$ad_record);     // 광고회사명, 광고종료일,배너그림위치,링크 를 "|"를 이용하여 별개의 라인으로 분리해서 배열에 저장함
       if($today < $array_ad_tbl[1])  {                      //광고종료일이 오늘보다 이후이면
         $prt_array[$k] = $array_ad_tbl[3].$array_ad_tbl[2];         //파일에서 읽은 배너광고를 출력배열로 복사?
         $k++;
       }
     }
}

?>

<!-- 프린트배열에 있는 배너정보를 Html로 출력 시작 -->
<!-- 출력배너는 출력할 배너수만큼 써주면 됨 -->
<TABLE align="center" valign="top" border=0 cellpadding=4 cellspacing=5>
    <tr>
        <td width="129" bgcolor="#F6F6F6"><? /*출력 테이블 1행1열 */ echo $prt_array[0]; ?></a></td>
        <td width="129" bgcolor="#F6F6F6"><? /*출력 테이블 1행2열 */ echo $prt_array[1]; ?></a></td>
        <td width="129" bgcolor="#F6F6F6"><? /*출력 테이블 1행3열 */ echo $prt_array[2]; ?></a></td>
        <td width="129" bgcolor="#F6F6F6"><? /*출력 테이블 1행4열 */ echo $prt_array[3]; ?></a></td>
    </tr>
    <tr>
        <td width="129" bgcolor="#F6F6F6"><? /*출력 테이블 2행1열 */ echo $prt_array[4]; ?></a></td>
        <td width="129" bgcolor="#F6F6F6"><? /*출력 테이블 2행2열 */ echo $prt_array[5]; ?></a></td>
        <td width="129" bgcolor="#F6F6F6"><? /*출력 테이블 2행3열 */ echo $prt_array[6]; ?></a></td>
        <td width="129" bgcolor="#F6F6F6"><? /*출력 테이블 2행4열 */ echo $prt_array[7]; ?></a></td>
    </tr>
</table>
<!--  프린트배열에 있는 배너정보를 Html로 출력 끝 -->

</body></html>


★ 홈페이지의 배너광고를 출력할 곳에 아래와 같이 적용 

<?  /* 랜덤배너(세로) */ include_once("$g4[path]/rand_ad_banner_sero.php"); ?>

또는

<?  /* 랜덤배너(가로) */ include_once("$g4[path]/rand_ad_banner_garo.php"); ?>



전 php에 대하여 잘은 모릅니다. 그냥 이렇게 저렇게 php게시판에 있는 것을 읽어보고
붙여보니 되더군요. php에 대하여 잘 아는 분이 소스코드를 최적화주셨으면 더 좋겠습니다.
홈페이지에 적용해보니 게시판에서 읽어오는 것보다 속도가 굉장히 빠르더군요.

적용된 홈페이지 http://www.kosarang.net

허접한 php 소스지만 도움이 되기를 바랍니다.

[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
17년 전 조회 1,901
17년 전 조회 3,982
17년 전 조회 1,907
17년 전 조회 1,799
17년 전 조회 2,141
17년 전 조회 2,545
17년 전 조회 1,501
17년 전 조회 1,837
17년 전 조회 2,406
17년 전 조회 1,889
17년 전 조회 1,822
17년 전 조회 1,624
17년 전 조회 1,461
17년 전 조회 1,423
17년 전 조회 1,231
17년 전 조회 1,217
17년 전 조회 1,235
17년 전 조회 1,251
17년 전 조회 1,664
17년 전 조회 1,751
17년 전 조회 1,892
17년 전 조회 3,024
17년 전 조회 2,164
17년 전 조회 1,833
17년 전 조회 2,176
17년 전 조회 1,891
17년 전 조회 3,431
17년 전 조회 1,606
17년 전 조회 1,715
17년 전 조회 1,430
17년 전 조회 2,261
17년 전 조회 3,199
17년 전 조회 2,346
17년 전 조회 1,800
17년 전 조회 3,055
17년 전 조회 4,513
17년 전 조회 1,817
17년 전 조회 3,311
17년 전 조회 1,634
17년 전 조회 3,563
17년 전 조회 5,909
17년 전 조회 1,481
17년 전 조회 2,225
17년 전 조회 1,852
17년 전 조회 1,596
17년 전 조회 2,491
17년 전 조회 2,689
18년 전 조회 1,657
18년 전 조회 2,754
18년 전 조회 3,236
18년 전 조회 1,580
18년 전 조회 2,005
18년 전 조회 3,916
18년 전 조회 4,547
18년 전 조회 1,935
18년 전 조회 1,790
18년 전 조회 2,741
18년 전 조회 1,919
18년 전 조회 3,998
18년 전 조회 1,703
16년 전 조회 1,995
18년 전 조회 2,316
18년 전 조회 2,181
18년 전 조회 3,647
18년 전 조회 1,642
18년 전 조회 2,729
18년 전 조회 1,714
18년 전 조회 1,975
18년 전 조회 7,503
18년 전 조회 2,072
18년 전 조회 4,161
18년 전 조회 2,491
18년 전 조회 2,494
18년 전 조회 2,220
18년 전 조회 2,275
18년 전 조회 2,698
18년 전 조회 3,288
18년 전 조회 5,387
18년 전 조회 2,843
18년 전 조회 2,763
18년 전 조회 2,618
18년 전 조회 1,865
18년 전 조회 2,269
18년 전 조회 5,378
18년 전 조회 3,089
18년 전 조회 2,656
18년 전 조회 3,338
18년 전 조회 2,539
18년 전 조회 2,898
18년 전 조회 5,928
18년 전 조회 2,680
18년 전 조회 2,071
18년 전 조회 2,712
18년 전 조회 1,538
18년 전 조회 9,871
18년 전 조회 4,530
18년 전 조회 3,352
18년 전 조회 1,878
18년 전 조회 3,667
18년 전 조회 2,353