专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » 图片轮播:php实现广告轮播 »正文

图片轮播:php实现广告轮播

来源: 发布时间:星期四, 2009年2月12日 浏览:216次 评论:0


  在处理广告时若能直接使用浏览器将广告468x60图档送到处理广告伺服器中相信是件很舒服不用再开FTP程式搞大半天只为了upload

  这个问题是所有WebCGI程式包括ASP、Prel....双缘敬老院等等都需要再经过系统元件增加才能达成号称最强WebCGI程式:PHP在这方面表现没有令人失望甚至傲视其它CGI工具

  FileUpload功能在RFC1867文件有有详细介绍说明是利用特殊文件格式(content-type)multipart/form-data值得注意是浏览器定要用Netscape3.0以上或MSInternetExplorer4.0以上版本才能将档案上传

  先看下面HTML原始码


<formenctype=\"multipart/form-data\"action=\"next.php\"method=post>
大名:<inputtype=textname=user><br>
档案名称:<inputname=\"myfile\"type=\"file\"><br>
<inputtype=\"submit\"value=\"送出\">
</form>

  在form标签中要加入enctype=\"multipart/form-data\"字串表示使用者输入资料上有档案上传同时method定要用POST而不能用GET

  在上面码中若使用者姓名填入WilsonPeng并选c:\\myphoto.g档案在使用者按下送出键后浏览器则传送出下面POST资料安装卫星电视


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

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

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

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

...myphoto.g内容略...
--BbC04y--
--AaB03x--


  看到上面资料中boundary=AaB03x即为分开区别栏位资料讯息其中AaB03x编码思路方法视浏览器版本区别而异通常是浏览器杂凑产生照明工程的后就可以看到用--AaB03x来隔开区别栏位

以上面为例处理formaction程式next.php会主动产生 4个变数见下表

变数名介绍说明
$myfile即上传档案内容
$myfile_name上传档案在使用者端名称
$myfile_size上传档案大小
$myfile_type上传档案格式如\"image/g\"


  在next.php程式要做最重要动作就是好好使用这 4个变数否则程式结束使用者上传档案就消失了因此要先将$myfile复制到存放广告图目录中茅台酒

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

  这行程式就是将档案存在/home/htdocs/ad目录中就上面例子而言就将档案存到/home/htdocs/ad/myphoto.g重要存放目录不能是WebServer无法读到目录而应放在网站WebSiteHomepage所在目录中才可以在网路上看到 [Page]

  或许程式要更细部处理例如比对取得档案大小和系统回报是否相同....等等就可以用$myfile_size变数了

  若在form中设定inputfile名称改掉则在Upload变数也起改如国际展览

<inputname=\"upfile\"type=\"file\">

  则变数就改成$upfile、$upfile_name、$upfile_size、和$upfile_type
因此下面例子就利用FileUpload及Oracle7.x后端资料库将档案放在WebHomepage目录中相关资讯则存在Oracle中当然加上使用者认证让有帐号使用者才能上传图片可避免刽客(cracker)等将不雅或不适当广告上传例中有关资料库设定和5.4留言版设定相同


<html>
<head>
<?php
//adadd.php
(($banner\"\")and($url\"\")){
?>
<title>新增广告</title>
</head>
<body>
加权值数字愈大图片出现机率就愈高内定值为1
<FORMENCTYPE=\"multipart/form-data\"ACTION=\"adadd.php\"METHOD=POST>
<tableborder=0>
<tr><tdalign=right>广告Banner:</td><td><inputname=bannerTYPE=\"file\"></td></tr>
<tr><tdalign=right>广告网址URL:</td><td><inputname=urltype=textsize=30></td></tr>
<tr><tdalign=right>辅助字串ALT:</td><td><inputname=alttype=textsize=30></td></tr>


<tr><tdalign=right>广告介绍说明:</td><td><inputname=descrīpttype=textsize=30></td></tr>
<tr><tdalign=right>显示加权:</td><td><inputname=prioritytype=textsize=5value=1></td></tr>
<tr><tdcolspan=2align=right><inputtype=\"submit\"VALUE=\"确定\"></td></tr> [Page]
</table>
</FORM>
<?
}{
(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\")ordie;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query=\"insertoad(url,banner,alt,descrīpt,priority)values(’$url’,’$banner_name’,’$alt’,’$descrīpt’,$priority)\";
ora_parse($cursor,$query)ordie;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);

echo\"<title>广告新增完成</title>\";
echo\"</head>\";
echo\"<body>\";
echo\"<ahref=\".$url.\"><imgsrc=/ad/\".$banner_name.\"alt=\\\"\".$alt.\"\\\"border=0></a><p>\";
echo\"<ultype=disc>\";
echo\"<li>广告网址:\".$url;
echo\"<li>辅助字串:\".$alt;
echo\"<li>广告介绍说明:\".$descrīpt;
echo\"<li>显示加权:\".$priority;
echo\"</ul>\";
}

?>
</body>
</html>
  当然要使用上面程式的前别忘了先增加ad资料表SQL及栏位如下 2手电脑回收


CREATETABLEad(
urlvarchar2(1024)notnull,
bannervarchar2(1024)notnull,
altvarchar2(255)null,
descrīptvarchar2(255)null,
prioritynumber(4)notnulldefault1
);

  序号栏位名称资料形态资料长度栏位介绍说明
  0广告网址urlvarchar21024
  1图片路径bannervarchar21024
  2字串显示altvarchar2255 [Page]
  3广告介绍说明descrīptvarchar2255
  4显示加权prioritynumber41为内定值0表停用


  值得是在这加入了加权功能个广告要提升曝光率则可以将显示加权栏位数字加大例如5出现机率就会比只设为1高 5倍


<?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\")ordie;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query=\"SELECTurl,banner,alt,priorityFROMadwherepriority>0\";
ora_parse($cursor,$query)ordie;
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];
($pri<=$pricount){
$ad1=\"<ahref=\".$ad[$i][0].\"target=><imgsrc=/ad/\".$ad[$i][1].\"width=468height=60border=0alt=\\\"\".$ad[$i][2].\"\\\"></a>\";
}
}
echo$ad1[0];

?>
  上面程式为公用广告显示程式其中$pricount变数为所有广告priority加起来程式先将所有广告资讯读到阵列变数$ad中随即关上资料库再依时间取乱数种子的后再从1到$pricount间随机取个数字

  网页中要用广告程式只要在需要广告地方加上<?(\"ad.php\");?>就可以了当然Include路径(在httpd.conf中)要先设好才行压克力制品

  上面程式还有改进空间可以加入广告ClickLog功能或是显示Log功能改动显示加权程式....等等就不做范例了毕竟在这儿是要介绍PHP实际应用及程式开发而不是套件开发需要现成广告套件不妨到http://www.phpwizard.net/phpAds这是套用PHP开发出来广告程式
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: