R

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

· 18년 전 · 3192

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,851
17년 전 조회 3,948
17년 전 조회 1,870
17년 전 조회 1,765
17년 전 조회 2,100
17년 전 조회 2,499
17년 전 조회 1,462
17년 전 조회 1,801
17년 전 조회 2,369
17년 전 조회 1,842
17년 전 조회 1,779
17년 전 조회 1,574
17년 전 조회 1,415
17년 전 조회 1,373
17년 전 조회 1,182
17년 전 조회 1,177
17년 전 조회 1,198
17년 전 조회 1,211
17년 전 조회 1,626
17년 전 조회 1,708
17년 전 조회 1,849
17년 전 조회 2,980
17년 전 조회 2,124
17년 전 조회 1,795
17년 전 조회 2,131
17년 전 조회 1,848
17년 전 조회 3,379
17년 전 조회 1,561
17년 전 조회 1,680
17년 전 조회 1,399
17년 전 조회 2,214
17년 전 조회 3,155
17년 전 조회 2,297
17년 전 조회 1,755
17년 전 조회 3,012
17년 전 조회 4,460
17년 전 조회 1,775
17년 전 조회 3,268
17년 전 조회 1,594
17년 전 조회 3,505
17년 전 조회 5,864
17년 전 조회 1,444
17년 전 조회 2,187
17년 전 조회 1,809
17년 전 조회 1,560
17년 전 조회 2,440
17년 전 조회 2,651
17년 전 조회 1,619
17년 전 조회 2,708
18년 전 조회 3,192
18년 전 조회 1,549
18년 전 조회 1,973
18년 전 조회 3,872
18년 전 조회 4,504
18년 전 조회 1,894
18년 전 조회 1,759
18년 전 조회 2,697
18년 전 조회 1,871
18년 전 조회 3,957
18년 전 조회 1,668
16년 전 조회 1,955
18년 전 조회 2,284
18년 전 조회 2,137
18년 전 조회 3,594
18년 전 조회 1,609
18년 전 조회 2,676
18년 전 조회 1,664
18년 전 조회 1,933
18년 전 조회 7,448
18년 전 조회 2,020
18년 전 조회 4,112
18년 전 조회 2,445
18년 전 조회 2,450
18년 전 조회 2,172
18년 전 조회 2,218
18년 전 조회 2,639
18년 전 조회 3,237
18년 전 조회 5,348
18년 전 조회 2,806
18년 전 조회 2,721
18년 전 조회 2,570
18년 전 조회 1,820
18년 전 조회 2,229
18년 전 조회 5,335
18년 전 조회 3,047
18년 전 조회 2,609
18년 전 조회 3,281
18년 전 조회 2,501
18년 전 조회 2,856
18년 전 조회 5,891
18년 전 조회 2,639
18년 전 조회 2,036
18년 전 조회 2,669
18년 전 조회 1,495
18년 전 조회 9,825
18년 전 조회 4,473
18년 전 조회 3,315
18년 전 조회 1,831
18년 전 조회 3,620
18년 전 조회 2,307