R

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

· 18년 전 · 3296

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,934
17년 전 조회 4,022
17년 전 조회 1,953
17년 전 조회 1,827
17년 전 조회 2,180
17년 전 조회 2,608
17년 전 조회 1,548
17년 전 조회 1,893
17년 전 조회 2,462
17년 전 조회 1,939
17년 전 조회 1,882
17년 전 조회 1,680
17년 전 조회 1,520
17년 전 조회 1,467
17년 전 조회 1,287
17년 전 조회 1,272
17년 전 조회 1,292
17년 전 조회 1,297
17년 전 조회 1,705
17년 전 조회 1,802
17년 전 조회 1,954
17년 전 조회 3,069
17년 전 조회 2,222
17년 전 조회 1,875
17년 전 조회 2,219
17년 전 조회 1,940
17년 전 조회 3,479
17년 전 조회 1,656
17년 전 조회 1,760
17년 전 조회 1,481
17년 전 조회 2,313
17년 전 조회 3,249
17년 전 조회 2,392
17년 전 조회 1,848
17년 전 조회 3,094
17년 전 조회 4,579
17년 전 조회 1,862
17년 전 조회 3,384
17년 전 조회 1,697
17년 전 조회 3,610
17년 전 조회 5,975
18년 전 조회 1,522
18년 전 조회 2,280
18년 전 조회 1,908
18년 전 조회 1,648
18년 전 조회 2,537
18년 전 조회 2,742
18년 전 조회 1,707
18년 전 조회 2,802
18년 전 조회 3,297
18년 전 조회 1,623
18년 전 조회 2,047
18년 전 조회 3,968
18년 전 조회 4,600
18년 전 조회 1,991
18년 전 조회 1,834
18년 전 조회 2,793
18년 전 조회 1,978
18년 전 조회 4,056
18년 전 조회 1,744
16년 전 조회 2,041
18년 전 조회 2,366
18년 전 조회 2,247
18년 전 조회 3,714
18년 전 조회 1,692
18년 전 조회 2,778
18년 전 조회 1,758
18년 전 조회 2,011
18년 전 조회 7,561
18년 전 조회 2,123
18년 전 조회 4,223
18년 전 조회 2,548
18년 전 조회 2,547
18년 전 조회 2,269
18년 전 조회 2,323
18년 전 조회 2,743
18년 전 조회 3,340
18년 전 조회 5,444
18년 전 조회 2,902
18년 전 조회 2,821
18년 전 조회 2,680
18년 전 조회 1,918
18년 전 조회 2,341
18년 전 조회 5,438
18년 전 조회 3,152
18년 전 조회 2,715
18년 전 조회 3,388
18년 전 조회 2,592
18년 전 조회 2,946
18년 전 조회 5,976
18년 전 조회 2,730
18년 전 조회 2,116
18년 전 조회 2,768
18년 전 조회 1,587
18년 전 조회 9,910
18년 전 조회 4,581
18년 전 조회 3,404
18년 전 조회 1,928
18년 전 조회 3,716
18년 전 조회 2,401