亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

一個廣告輪播系統的例子(內含文件上傳的方法)

2019-11-18 21:57:33
字體:
來源:轉載
供稿:網友
網路廣告,變成了 Internet 上的熱門學問。而 468x60 更變成了廣告人員絞盡腦汁的尺寸。
在處理廣告時,若能直接使用瀏覽器將廣告的 468x60 圖檔送到處理廣告的伺服器中,相信是件很舒服的事,不用再開 FTP 程式,搞大半天只為了 upload。

這個問題,是所有 Web CGI 程式的痛,包括 asp、PRel....等等,都需要再經過系統元件的增加才能達成。號稱最強的 Web CGI 程式: php,在這方面的表現沒有令人失望,甚至傲視其它的 CGI 工具。

File Upload 功能在 RFC 1867 文件有有詳細的說明,是利用特殊的文件格式(content-type) multipart/form-data。值得注意的是瀏覽器一定要用 Netscape 3.0以上或 MS Internet Explorer 4.0 以上的版本才能將檔案上傳。

先看下面的 HTML 原始碼


<form enctype="multipart/form-data" action="next.php"
method=post>
您的大名: <input type=text name=user><br>
檔案名稱: <input name="myfile" type="file"><br>
<input type="submit" value="送出">
</form>


在 form 的標簽中,要加入 enctype="multipart/form-data" 的字串,表示使用者輸入的資料上有檔案上傳,同時 method 一定要用 POST 而不能用 GET。

在上面的碼中,若使用者姓名填入 Wilson Peng,并選 c:/myphoto.gif 的檔案,在使用者按下送出鍵后,瀏覽器則傳送出下面的 POST 資料。


Content-type: multipart/form-data, boundary=AaB03x

--AaB03x
content-disposition: form-data; name="user"

Wilson Peng
--AaB03x
content-disposition: form-data; name="myfile"
Content-type: multipart/mixed, boundary=BbC04y

--BbC04y
Content-disposition: attachment; filename="myphoto.gif"
Content-type: image/gif
Content-Transfer-Encoding: binary

...myphoto.gif 內容略...
--BbC04y--
--AaB03x--


看到上面的資料中,boundary=AaB03x 即為分開不同欄位資料的訊息,其中的AaB03x 編碼方法,視瀏覽器的版本不同而異,通常是瀏覽器雜湊產生的。之后就可以
看到用 --AaB03x 來隔開不同的欄位。

以上面為例,處理 form 的 action 程式 next.php,會主動產生四個變數,見下表

變數名 說明
$myfile 即上傳的檔案內容
$myfile_name 上傳檔案在使用者端的名稱
$myfile_size 上傳檔案的大小
$myfile_type 上傳檔案的格式,如 "image/gif"


在 next.php 程式要做的最重要動作,就是好好的使用這四個變數,否則程式一結束,使用者上傳的檔案就消失了。因此,要先將 $myfile 復制到存放廣告圖的目錄中

copy($banner,"/home1/biglobe3/ad/".$banner_name);

這行程式就是將檔案存在 /home/htdocs/ad 的目錄中,就上面的例子而言,就將檔案存到 /home/htdocs/ad/myphoto.gif。重要的是,存放的目錄不能是 WebServer 無法讀到的目錄,而應放在網站的 Homepage 所在目錄中,才可以在網路上看到。

或許程式要更細部的處理,例如比對取得的檔案大小與系統回報的是否相同...,等等,就可以用 $myfile_size 變數了。

若在 form 中設定 input file 的名稱改掉,則在 Upload 的變數也一起改,如

<input name="upfile" type="file">

則變數就改成 $upfile、$upfile_name、$upfile_size、與 $upfile_type。

因此,下面的例子就利用 File Upload 及 Oracle 7.x 后端資料庫,將檔案放在 Web Homepage 目錄中,相關資訊則存在 Oracle 中。當然,加上使用者認證,讓有帳號的使用者才能上傳圖片,可避免劊客 (cracker) 等將不雅或不適當的廣告上傳。例中有關資料庫的設定和 5.4 留言版的設定相同。


<html>
<head>
<?php
// adadd.php
if (($banner=="") and ($url=="")) {
?>
<title>新增廣告</title>
</head>
<body>
加權值數字愈大,圖片出現的機率就愈高,內定值為 1。
<FORM ENCTYPE="multipart/form-data" ACTION="adadd.php"
METHOD=POST>
<table border=0>
<tr><td align=right>廣告 Banner: </td><td><input name=banner
TYPE="file"></td></tr>
<tr><td align=right>廣告網址 URL: </td><td><input name=url
type=text size=30></td></tr>
<tr><td align=right>輔助字串 ALT: </td><td><input name=alt
type=text size=30></td></tr>
<tr><td align=right>廣告說明: </td><td><input name=descript
type=text size=30></td></tr>
<tr><td align=right>顯示加權: </td><td><input name=priority
type=text size=5 value=1></td></tr>
<tr><td colspan=2 align=right><input type="submit" VALUE="確定
"></td></tr>
</table>
</FORM>
<?
} else {
if (file_exists("/home/htdocs/ad/".$banner_name)) {
CommonHeader("檔案 ".$banner_name." 已存在");
echo "<p><br><br>廣告檔案已經存在
/n<p><br><br></body></html>";
exit;
};

copy($banner,"/home1/biglobe3/ad/".$banner_name);

putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");

putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="insert into ad(url, banner, alt, descript, priority)
values('$url', '$banner_name', '$alt', '$descript', $priority)";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);

echo "<title>廣告新增完成</title>";
echo "</head>";
echo "<body>";
echo "<a href=".$url."><img src=/ad/".$banner_name."
alt=/"".$alt."/" border=0></a><p>";
echo "<ul type=disc>";
echo "<li>廣告網址: ".$url;
echo "<li>輔助字串: ".$alt;
echo "<li>廣告說明: ".$descript;
echo "<li>顯示加權: ".$priority;
echo "</ul>";
}

?>
</body>
</html>


當然要使用上面的程式之前別忘了先增加 ad 資料表,SQL 及欄位如下


CREATE TABLE ad (
url varchar2(1024) not null,
banner varchar2(1024) not null,
alt varchar2(255) null,
descript varchar2(255) null,
priority number(4) not null default 1
);

序號 欄位 名稱 資料形態 資料長度 欄位說明
0 廣告網址 url varchar2 1024
1 圖片路徑 banner varchar2 1024
2 字串顯示 alt varchar2 255
3 廣告說明 descript varchar2 255
4 顯示加權 priority number 4 1 為內定值,0 表停用


值得一提的是在這加入了加權的功能,若一個廣告要提升曝光率,則可以將顯示
加權的欄位數字加大,例如 5,它的出現機率就會比只設為 1 的高五倍。


<?php
// ad.php
putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");

putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");

$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="SELECT url, banner, alt, priority FROM ad where priority
> 0";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
$i=$pricount=0;
while(ora_fetch($cursor)) {
$ad[$i][0] = ora_getcolumn($cursor,0);
$ad[$i][1] = ora_getcolumn($cursor,1);
$ad[$i][2] = ora_getcolumn($cursor,2);
$ad[$i][3] = ora_getcolumn($cursor,3);
$pricount += $ad[$i][3];
$i++;
};

ora_close($cursor);
ora_logoff($handle);

srand((double)microtime()*1000000);
$pri = rand(1,$pricount);
$pricount=0;
for($i=0; $i<count($ad); $i++) {
$pricount += $ad[$i][3];
if ($pri <= $pricount) {
$ad1[]="<a href=".$ad[$i][0]." target=new><img
src=/ad/".$ad[$i][1]." width=468 height=60 border=0
alt=/"".$ad[$i][2]."/"></a>";
}
}
echo $ad1[0];

?>


上面的程式為公用的廣告顯示程式,其中的 $pricount 變數為所有廣告priority 加起來的和。程式先將所有的廣告資訊讀到陣列變數 $ad 中,隨即關上資料庫。再依時間取亂數種子,之后再從 1 到 $pricount 間隨機取一個數字。

網頁中要用廣告程式,只要在需要廣告的地方加上 <? include("ad.php"); ?>就可以了,當然 Include 的路徑 (在 httpd.conf 中) 要先設好才行。

上面的程式還有改進空間,可以加入廣告的 Click Log 功能,或是顯示的 Log功能,改動顯示加權的程式....等等,就不做范例了,畢竟在這兒是要介紹 PHP 的實際應用及程式開發,而不是套件開發。真的需要現成的廣告套件,不妨到http://www.phpwizard.net/phpAds,這是一套用 PHP 開發出來的廣告程式。 (摘自CCU新聞組,本來出處可能是臺灣出版的一本關于PHP的書:PHP寶典)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近2019年日本中文免费字幕| 成人av.网址在线网站| 91色视频在线导航| 亚洲欧美国产一本综合首页| 国产亚洲人成a一在线v站| 久久中文字幕视频| 久久久精品国产亚洲| 成人免费黄色网| 日韩高清电影免费观看完整| 久久久国产精彩视频美女艺术照福利| 日韩男女性生活视频| 91亚洲精品在线观看| 国产精品18久久久久久麻辣| 日韩欧美国产一区二区| 精品视频在线播放| 国产一区av在线| 欧美日韩国产专区| 亚洲成人xxx| 欧美成人精品在线播放| 91精品综合视频| 久久亚洲精品成人| 日韩一级裸体免费视频| 欧美成人午夜免费视在线看片| 欧美资源在线观看| 青草青草久热精品视频在线观看| 精品亚洲aⅴ在线观看| 丝袜美腿亚洲一区二区| 少妇高潮久久久久久潘金莲| 麻豆乱码国产一区二区三区| 国产91久久婷婷一区二区| 亚洲第五色综合网| 国产精品高清免费在线观看| 亚洲第一区第一页| 久久人人爽人人| 亚洲成人在线网| 亚洲女人天堂成人av在线| 久久精品中文字幕一区| 久久久av亚洲男天堂| 欧美成人午夜视频| 98精品国产高清在线xxxx天堂| 高跟丝袜一区二区三区| 久久夜精品香蕉| 国产三级精品网站| 最近2019中文字幕一页二页| 久久精彩免费视频| 久久中文字幕在线视频| 日韩高清电影免费观看完整版| 久久影院模特热| 97精品视频在线| 亚洲韩国日本中文字幕| 亚洲色图欧美制服丝袜另类第一页| 久久久精品日本| 狠狠躁夜夜躁人人爽超碰91| 日韩黄色av网站| 97香蕉久久超级碰碰高清版| 亚洲精品99久久久久中文字幕| 欧美电影在线观看网站| 亚洲999一在线观看www| 欧美激情网站在线观看| 久久久久久久久久久人体| 亚洲性视频网站| 国产精品美女视频网站| 成人激情视频免费在线| 亚洲第一区中文字幕| 久久久久久有精品国产| 久久国产一区二区三区| 欧美日韩国产va另类| 国产一区二区三区视频在线观看| 成人国产在线激情| 亚洲娇小xxxx欧美娇小| 日韩动漫免费观看电视剧高清| 午夜精品福利在线观看| 91超碰中文字幕久久精品| 国产欧美中文字幕| 狠狠色香婷婷久久亚洲精品| 欧美黑人巨大精品一区二区| 日本久久91av| 中文字幕综合一区| 亚洲免费伊人电影在线观看av| 欧洲精品久久久| 91精品视频在线免费观看| 国产成人精品免费久久久久| 亚洲成人久久网| 亚洲人成网站免费播放| 国产精品久久久久久久久免费| 在线看福利67194| 欧美整片在线观看| 中文字幕少妇一区二区三区| 亚洲国产日韩欧美在线图片| 亚洲欧美国产视频| 久久精品视频中文字幕| 国产精品久久久久久av福利软件| 久久精品免费播放| 97视频免费在线观看| 日韩av电影中文字幕| 在线观看日韩视频| 日产日韩在线亚洲欧美| 欧美高清视频在线观看| 欧美精品激情blacked18| 亚洲视频日韩精品| 另类少妇人与禽zozz0性伦| 亚洲欧美日韩天堂| 日韩中文字幕免费| 国产专区欧美专区| 国产精品成人免费视频| 国产91网红主播在线观看| 欧美性猛交xxxx黑人| 日韩精品中文字幕在线播放| 国产精品久久中文| 黄色精品一区二区| 欧美第一页在线| 91亚洲精华国产精华| 国产精品美女视频网站| 韩日精品中文字幕| 欧美精品激情blacked18| 97成人精品区在线播放| 色综合天天狠天天透天天伊人| 91久久嫩草影院一区二区| 欧美精品久久久久久久久| 国产精品va在线播放我和闺蜜| 国产欧美日韩精品在线观看| 日韩精品在线私人| 精品一区二区电影| 亚洲天堂网站在线观看视频| 伊人一区二区三区久久精品| 国产精品久久久久久久午夜| 亚洲人成电影网站色| 亚洲色图国产精品| 136fldh精品导航福利| 国产69精品久久久久久| 精品国产老师黑色丝袜高跟鞋| 精品调教chinesegay| 奇米一区二区三区四区久久| 2019最新中文字幕| 91免费电影网站| 91理论片午午论夜理片久久| 2019中文字幕全在线观看| 国产在线一区二区三区| 欧美高清视频在线播放| 国产在线精品一区免费香蕉| 国产精品女人网站| 92福利视频午夜1000合集在线观看| 国产精品视频成人| 伊人精品在线观看| 亚洲一区二区日本| 久久影院资源站| 青青青国产精品一区二区| 亚洲人成在线观看| 日韩一区视频在线| 久久久亚洲国产天美传媒修理工| 国产精品十八以下禁看| 国产亚洲欧美日韩美女| 亚洲国内高清视频| 日韩中文字幕亚洲| 91麻豆桃色免费看| 一区二区三区视频免费| 国产成人精品av在线| 国产精品影片在线观看| 亚洲第一在线视频| 亚洲国产高清福利视频| 久久精品中文字幕一区| 欧美一级bbbbb性bbbb喷潮片| 亚洲曰本av电影| 国产一区二区三区免费视频|