
위와 같이 가로 또는 왼쪽과 같이 세로로 배너를 출력하는 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 소스지만 도움이 되기를 바랍니다.
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 1730 | 17년 전 | 1182 | ||
| 1729 | 17년 전 | 1614 | ||
| 1728 | 17년 전 | 1681 | ||
| 1727 | 17년 전 | 1818 | ||
| 1726 | 17년 전 | 2955 | ||
| 1725 | 17년 전 | 2092 | ||
| 1724 |
|
17년 전 | 1772 | |
| 1723 |
끝없는사랑
|
17년 전 | 2114 | |
| 1722 |
끝없는사랑
|
17년 전 | 1822 | |
| 1721 | 17년 전 | 3349 | ||
| 1720 | 17년 전 | 1534 | ||
| 1719 | 17년 전 | 1650 | ||
| 1718 |
사랑합니다
|
17년 전 | 1369 | |
| 1717 | 17년 전 | 2192 | ||
| 1716 | 17년 전 | 3144 | ||
| 1715 |
|
17년 전 | 2281 | |
| 1714 |
|
17년 전 | 1736 | |
| 1713 | 17년 전 | 2993 | ||
| 1712 | 17년 전 | 4430 | ||
| 1711 | 17년 전 | 1740 | ||
| 1710 | 17년 전 | 3242 | ||
| 1709 |
jeans
|
17년 전 | 1567 | |
| 1708 |
|
17년 전 | 3476 | |
| 1707 | 17년 전 | 5842 | ||
| 1706 |
|
17년 전 | 1420 | |
| 1705 |
|
17년 전 | 2160 | |
| 1704 | 17년 전 | 1794 | ||
| 1703 |
심심맨닷컴
|
17년 전 | 1552 | |
| 1702 | 17년 전 | 2428 | ||
| 1701 |
|
17년 전 | 2632 | |
| 1700 | 17년 전 | 1601 | ||
| 1699 | 17년 전 | 2683 | ||
| 1698 |
RedRiverFisher
|
17년 전 | 3171 | |
| 1697 |
심심맨닷컴
|
17년 전 | 1529 | |
| 1696 |
eclub
|
17년 전 | 1940 | |
| 1695 | 17년 전 | 3851 | ||
| 1694 |
깜장고무신
|
17년 전 | 4482 | |
| 1693 |
stuartkim
|
17년 전 | 1883 | |
| 1692 |
stuartkim
|
17년 전 | 1751 | |
| 1691 |
|
17년 전 | 2681 | |
| 1690 | 17년 전 | 1847 | ||
| 1689 | 17년 전 | 3936 | ||
| 1688 | 17년 전 | 1656 | ||
| 1687 | 16년 전 | 1931 | ||
| 1686 |
|
17년 전 | 2261 | |
| 1685 | 17년 전 | 2111 | ||
| 1684 |
|
17년 전 | 3573 | |
| 1683 |
leeLook
|
17년 전 | 1594 | |
| 1682 | 17년 전 | 2657 | ||
| 1681 | 17년 전 | 1646 | ||
| 1680 | 17년 전 | 1911 | ||
| 1679 | 17년 전 | 7424 | ||
| 1678 | 17년 전 | 1997 | ||
| 1677 | 17년 전 | 4093 | ||
| 1676 | 17년 전 | 2418 | ||
| 1675 | 17년 전 | 2428 | ||
| 1674 | 17년 전 | 2151 | ||
| 1673 | 17년 전 | 2197 | ||
| 1672 | 17년 전 | 2626 | ||
| 1671 | 17년 전 | 3220 | ||
| 1670 | 17년 전 | 5331 | ||
| 1669 |
플래시007
|
17년 전 | 2785 | |
| 1668 |
|
17년 전 | 2698 | |
| 1667 | 17년 전 | 2553 | ||
| 1666 |
|
17년 전 | 1797 | |
| 1665 | 17년 전 | 2207 | ||
| 1664 | 17년 전 | 5309 | ||
| 1663 |
|
17년 전 | 3024 | |
| 1662 |
|
17년 전 | 2582 | |
| 1661 |
|
17년 전 | 3256 | |
| 1660 |
|
17년 전 | 2475 | |
| 1659 |
|
17년 전 | 2831 | |
| 1658 | 17년 전 | 5878 | ||
| 1657 | 17년 전 | 2635 | ||
| 1656 |
Piece
|
17년 전 | 2025 | |
| 1655 |
|
17년 전 | 2657 | |
| 1654 | 17년 전 | 1478 | ||
| 1653 | 17년 전 | 9800 | ||
| 1652 | 17년 전 | 4461 | ||
| 1651 | 17년 전 | 3290 | ||
| 1650 | 17년 전 | 1814 | ||
| 1649 | 17년 전 | 3605 | ||
| 1648 | 17년 전 | 2290 | ||
| 1647 | 17년 전 | 3738 | ||
| 1646 | 18년 전 | 5192 | ||
| 1645 | 18년 전 | 3846 | ||
| 1644 | 18년 전 | 2700 | ||
| 1643 | 18년 전 | 2948 | ||
| 1642 | 18년 전 | 2455 | ||
| 1641 | 18년 전 | 2794 | ||
| 1640 |
porgy
|
18년 전 | 1904 | |
| 1639 | 18년 전 | 3452 | ||
| 1638 |
컴퓨터기술자
|
18년 전 | 2143 | |
| 1637 |
|
18년 전 | 2264 | |
| 1636 | 18년 전 | 2074 | ||
| 1635 | 18년 전 | 3050 | ||
| 1634 |
귀여운현호
|
18년 전 | 2000 | |
| 1633 |
태양의서쪽
|
18년 전 | 2675 | |
| 1632 | 18년 전 | 3876 | ||
| 1631 | 18년 전 | 4571 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기