R

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

· 18년 전 · 3343

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,975
17년 전 조회 4,069
17년 전 조회 1,996
17년 전 조회 1,886
17년 전 조회 2,243
17년 전 조회 2,658
17년 전 조회 1,594
17년 전 조회 1,948
17년 전 조회 2,508
17년 전 조회 1,994
17년 전 조회 1,936
17년 전 조회 1,722
17년 전 조회 1,559
17년 전 조회 1,519
17년 전 조회 1,333
17년 전 조회 1,326
17년 전 조회 1,352
17년 전 조회 1,357
17년 전 조회 1,749
17년 전 조회 1,859
17년 전 조회 1,997
17년 전 조회 3,122
17년 전 조회 2,268
17년 전 조회 1,930
17년 전 조회 2,275
17년 전 조회 1,995
17년 전 조회 3,527
17년 전 조회 1,699
17년 전 조회 1,824
17년 전 조회 1,519
17년 전 조회 2,358
17년 전 조회 3,296
17년 전 조회 2,441
17년 전 조회 1,899
18년 전 조회 3,148
18년 전 조회 4,627
18년 전 조회 1,906
18년 전 조회 3,438
18년 전 조회 1,737
18년 전 조회 3,650
18년 전 조회 6,026
18년 전 조회 1,580
18년 전 조회 2,331
18년 전 조회 1,957
18년 전 조회 1,694
18년 전 조회 2,585
18년 전 조회 2,791
18년 전 조회 1,752
18년 전 조회 2,851
18년 전 조회 3,344
18년 전 조회 1,669
18년 전 조회 2,093
18년 전 조회 4,026
18년 전 조회 4,650
18년 전 조회 2,039
18년 전 조회 1,879
18년 전 조회 2,837
18년 전 조회 2,025
18년 전 조회 4,111
18년 전 조회 1,804
16년 전 조회 2,091
18년 전 조회 2,418
18년 전 조회 2,293
18년 전 조회 3,744
18년 전 조회 1,745
18년 전 조회 2,831
18년 전 조회 1,798
18년 전 조회 2,059
18년 전 조회 7,609
18년 전 조회 2,178
18년 전 조회 4,272
18년 전 조회 2,598
18년 전 조회 2,605
18년 전 조회 2,316
18년 전 조회 2,374
18년 전 조회 2,800
18년 전 조회 3,393
18년 전 조회 5,498
18년 전 조회 2,944
18년 전 조회 2,882
18년 전 조회 2,711
18년 전 조회 1,969
18년 전 조회 2,387
18년 전 조회 5,488
18년 전 조회 3,206
18년 전 조회 2,767
18년 전 조회 3,433
18년 전 조회 2,640
18년 전 조회 2,999
18년 전 조회 6,026
18년 전 조회 2,784
18년 전 조회 2,163
18년 전 조회 2,802
18년 전 조회 1,632
18년 전 조회 9,951
18년 전 조회 4,620
18년 전 조회 3,447
18년 전 조회 1,981
18년 전 조회 3,758
18년 전 조회 2,446