用PHP實現小型站點廣告管理 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 用PHP實現小型站點廣告管理 (http://www.webasp.net/article/16/15314.htm) |
| -- 作者:未知 -- 發佈日期: 2004-12-03 |
| 圖片鏈接廣告大概是最為常用的網絡廣告模式,但是多條廣告的動態隨機顯示可不是那麼簡單的事情。PHP的文件上傳函數提供了在這塊468x60像素的區域(網頁廣告的標準尺寸)實現能夠根據權值大小而隨機顯示廣告的解決方案,從而避免了開發FTP程序或是ASP和Perl CAI中需要外掛擴展才能實現此項功能的弊端。
本例在PHP4+MySQL+Apache for Win9x/2000下調試通過,共包括兩部分:用來增加新廣告的程序AddNewAd.php3以及顯示廣告的程序ShowAd.php3,都存放在服務器PHP文件目錄下的「test/guanggao/」目錄中。在guanggao目錄中建立一個存放廣告鏈接圖片的子目錄「adbanner/」。下面我們按步驟進行分析。 1.首先,建立MySQL數據庫:guanggao 在Windows環境下,建立一個MySQL空數據庫很簡單,因為每個數據庫都是存在於mysql/data/目錄下的一個子目錄,所以只要在該目錄下新建子目錄guanggao就可以了,這時數據庫內還沒有任何表和數據。 2.建立新增廣告程序:AddNewAd.php3 設計思路:其中先用表單得到用戶的新廣告信息;然後用PHP函數copy()將鏈接圖片(banner)文件上傳到服務器adbanner目錄下;最後將圖片文件名、廣告網址、說明、加權信息等寫入建立的MySQL數據表ad中。該程序代碼如下: # AddNewAd.php3——增添新的廣告 # <center><h1>增添新廣告</h1></center> //表單用來輸入新增廣告信息,並交給下面的PHP程序處理; //其中,加權值priority數字愈大,載入頁面圖片出現的機率就愈高,默認為1。 <FORM ENCTYPE="multipart/form-data" ACTION="AddNewAd.php3" METHOD=POST> 廣告 Banner: <input name=banner TYPE="file"><br> 廣告網址URL: <input name=url type=text size=30><br> 圖片鏈接說明ALT: <input name=alt type=text size=30><br> 顯示加權: <input name=priority type=text size=5 value=1><br> <input type="submit" VALUE="提交"> </FORM> //處理表單數據的PHP程序; <?php //圖片banner名和鏈接地址不能為空; if (( banner!="") & ( url!="")) { //若廣告鏈接和圖片名已被使用,必須另選; if (file_exists("adbanner/". banner_name)) { echo "廣告圖片. banner_name.已被使用,請另選!"; exit; }; //上傳鏈接圖片文件名到adbanner目錄; copy( banner,"adbanner/". banner_name); //連接MySQL數據庫; connection = mysql_connect(); //選擇數據源guanggao,執行查詢;; mysql_select_db("guanggao", ); query="SELECT * FROM ad"; result=mysql_query( query); //如果數據表ad不存在,則按以下結構創建新數據表ad; if(!result){ mysql_query(" create table ad( url varchar(100) not null, banner varchar(150) not null, alt varchar(100) null, priority tinyint(4) default 1 not null )") or die(mysql_error()); } //向數據表ad中插入來自於表單的新數據; query="insert into ad(url, banner, alt, priority) values( url, banner_name, alt, priority)"; //插入成功則顯示以下信息; try=mysql_query( query); if( try){ echo "一條廣告新增完成,詳細信息: "; echo "<a href=" url"><img src="adbanner/ banner_name" alt=". alt." border=0></a><br>"; echo "廣告網址: url<br>廣告鏈接說明: alt<br>顯示加權: priority "; } } ?> 3.建立顯示廣告程序:ShowAd.php3 設計思路:得到數據庫表中所有各列信息分別存到相應的一維數組中,將所有廣告的權值相加得到一個最大隨機數,每次載入頁面用srand() 產生一個隨機樹種子,再用rand()函數產生一個從1到最大隨機數之間的一個隨機數,然後按照一定的規則隨機顯示不同廣告條,權值越大被顯示的機會越大。 # ShowAd.php3——隨機顯示廣告 # <?php //連接選擇數據庫; connection = mysql_connect(); mysql_select_db("guanggao", connection); //執行查詢得到廣告條數; query="SELECT url, banner, alt, priority FROM ad where priority > 0"; result=mysql_db_query("guanggao", query); numrows=mysql_num_rows( result); //使用mysql_fetch_object()函數獲取有用的列信息並存到相應數組中; while( row = mysql_fetch_object( result)) { adurl[]= row->url; adbanner[]= row->banner; adalt[]= row->alt; adpriority[]= row->priority; } //初始化中間變量; numcheck= numrows; i= pricount=0; //得到最大隨機數; while( numcheck) { pricount+= adpriority[ i]; i++; numcheck--; } //程序執行時的百萬分之一秒產生隨機數種子; srand((double)microtime()*1000000); //得到1到最大隨機數之間的一個隨機數; pri = rand(1, pricount); //中間變量清零; pricount=0; //按加權值不同,產生用來顯示廣告的、元素為字串的數組; for( i=0; i< numrows-1; i++) { pricount += adpriority[ i]; if ( pri <= pricount) { ad[]="<a href=" adurl[ i]" target=new></a>"; } } //顯示廣告,權值越大,顯示機會越大; echo ad[0]; ?> |
| webasp.net |