R

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

· 18년 전 · 3215

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,873
17년 전 조회 3,968
17년 전 조회 1,893
17년 전 조회 1,789
17년 전 조회 2,124
17년 전 조회 2,526
17년 전 조회 1,485
17년 전 조회 1,827
17년 전 조회 2,391
17년 전 조회 1,867
17년 전 조회 1,801
17년 전 조회 1,601
17년 전 조회 1,441
17년 전 조회 1,402
17년 전 조회 1,207
17년 전 조회 1,198
17년 전 조회 1,213
17년 전 조회 1,231
17년 전 조회 1,652
17년 전 조회 1,735
17년 전 조회 1,875
17년 전 조회 3,001
17년 전 조회 2,146
17년 전 조회 1,818
17년 전 조회 2,152
17년 전 조회 1,872
17년 전 조회 3,410
17년 전 조회 1,582
17년 전 조회 1,704
17년 전 조회 1,420
17년 전 조회 2,242
17년 전 조회 3,180
17년 전 조회 2,324
17년 전 조회 1,781
17년 전 조회 3,042
17년 전 조회 4,493
17년 전 조회 1,795
17년 전 조회 3,298
17년 전 조회 1,621
17년 전 조회 3,539
17년 전 조회 5,885
17년 전 조회 1,467
17년 전 조회 2,205
17년 전 조회 1,836
17년 전 조회 1,581
17년 전 조회 2,471
17년 전 조회 2,678
18년 전 조회 1,641
18년 전 조회 2,731
18년 전 조회 3,215
18년 전 조회 1,564
18년 전 조회 1,993
18년 전 조회 3,898
18년 전 조회 4,526
18년 전 조회 1,922
18년 전 조회 1,778
18년 전 조회 2,723
18년 전 조회 1,896
18년 전 조회 3,977
18년 전 조회 1,689
16년 전 조회 1,980
18년 전 조회 2,304
18년 전 조회 2,159
18년 전 조회 3,621
18년 전 조회 1,629
18년 전 조회 2,707
18년 전 조회 1,690
18년 전 조회 1,958
18년 전 조회 7,476
18년 전 조회 2,045
18년 전 조회 4,144
18년 전 조회 2,466
18년 전 조회 2,478
18년 전 조회 2,200
18년 전 조회 2,245
18년 전 조회 2,675
18년 전 조회 3,260
18년 전 조회 5,373
18년 전 조회 2,825
18년 전 조회 2,742
18년 전 조회 2,595
18년 전 조회 1,843
18년 전 조회 2,246
18년 전 조회 5,359
18년 전 조회 3,072
18년 전 조회 2,636
18년 전 조회 3,309
18년 전 조회 2,523
18년 전 조회 2,883
18년 전 조회 5,910
18년 전 조회 2,657
18년 전 조회 2,053
18년 전 조회 2,689
18년 전 조회 1,513
18년 전 조회 9,853
18년 전 조회 4,502
18년 전 조회 3,340
18년 전 조회 1,862
18년 전 조회 3,650
18년 전 조회 2,325