首页 后端开发 php教程 用php实现广告轮播_PHP

用php实现广告轮播_PHP

Jun 01, 2016 pm 12:34 PM
ad cursor 实现 广告 档案

网路广告,变成了 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" 的字串,表示使用者输入的资料上有档案上传,同时 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。重要的是,存放的目录不能是 Web Server 无法读到的目录,而应放在网站的 Homepage 所在目录中,才可以在网路上看到。

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

  若在 form 中设定 input file 的名称改掉,则在 Upload 的变数也一起改,如



  则变数就改成 $upfile、$upfile_name、$upfile_size、与 $upfile_type。


  因此,下面的例子就利用 File Upload 及 Oracle 7.x 后端资料库,将档案放在 Web Homepage 目录中,相关资讯则存在 Oracle 中。当然,加上使用者认证,让有帐号的使用者才能上传图片,可避免刽客 (cracker) 等将不雅或不适当的广告上传。例中有关资料库的设定和 5.4 留言版的设定相同。




// adadd.php
if (($banner=="") and ($url=="")) {
? >
新增广告


加权值数字愈大,图片出现的机率就愈高,内定值为 1。


广告 Banner:
广告网址 URL:
辅助字串 ALT:
广告说明:
显示加权:



} else {
if (file_exists("/home/htdocs/ad/".$banner_name)) {
CommonHeader("档案 ".$banner_name." 已存在");
echo "广告档案已存在";
退出;
};

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") 要么死;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="插入广告(url、banner、alt、descript、priority)values('$url'、'$banner_name'、'$alt'、'$descript'、$priority)" ;
ora_parse($cursor, $query) 或死掉;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);

echo "广告新增";
回显“”;
回显“”;
回显“”;
回显“”;
echo "广告网址: ".$url;
echo "辅助字串: ".$alt;
echo "广告说明: ".$descript;
echo "显示加权: ".$priority;
回显“”;
}

? >




当然要使用上面的程序之前别忘记先添加广告数据表,SQL及栏位如下


创建表广告 (
url varchar2(1024) 不为空,
横幅 varchar2(1024) 不为空,
alt varchar2(255) 为空,
描述 varchar2(255) 为空,
优先级编号(4)不为空默认1
);

序号栏位名称数据形态数据长度栏位说明
0广告网址 url varchar2 1024
远1图片路径banner varchar2 1024
远2字串显示alt varchar2 255
3广告说明 descript varchar2 255
4显示优先级编号 4 1 为内定值,0 失效

值得一提在此加入了加权的功能,若一个广告要提升广告率,则可以将显示权重的栏位数字加大,例如5,它的出现机率就会比只设为1的高五倍。


// 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") 要么死;
$cursor=ora_open($handle);
ora_commitoff($handle);

$query="从优先级 > 0 的广告中选择 url、横幅、alt、优先级";
ora_parse($cursor, $query) 或死掉;
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$pricount = $ad[$i][3]; if ($pri $ad1[]=""; }
}
echo $ad1[0];

? >


上述的方案为公用的广告显示方案,其中的 $pricount 变数为所有广告优先级加起来的和。方案先将所有的广告资讯读取到数组变数 $ad 中,然后关上资料库。再依时间取乱数种子,之后再从 1 到 $pricount 间随机取一个数字。

就可以了,当然包含的路径(在httpd.conf中)要先设置好才行。
  上面的程式还有改进空间,可以加入广告的 Click Log 功能,或是显示的 Log 功能,改动显示加权的程式....等等,就不做范例了,毕竟在这儿是要介绍 PHP 的实际应用及程式开发,而不是套件开发。真的需要现成的广告套件,不妨到 http://www.phpwizard.net/phpAds,这是一套用 PHP 开发出来的广告程式

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

360浏览器推荐的广告如何关闭?如何关闭电脑360浏览器推荐的广告? 360浏览器推荐的广告如何关闭?如何关闭电脑360浏览器推荐的广告? Mar 14, 2024 am 09:16 AM

  360浏览器推荐的广告如何关闭?相信很多的用户们都在使用360浏览器,不过这款浏览器有时候会弹出广告,这就使得很多的用户们都十分的苦恼,下面就让本站来为用户们来仔细的介绍一下如何关闭电脑360浏览器推荐的广告吧。  如何关闭电脑360浏览器推荐的广告?  方法一:  1、打开360安全浏览器。  2、找到右上角“三横杠”标志,点击【设置】。  3、在弹出的界面左侧任务栏中找到【实验室】,勾选【启用“360热点资讯”功能】即可。  方法二:  1、首先双击

华为手机如何实现双微信登录? 华为手机如何实现双微信登录? Mar 24, 2024 am 11:27 AM

华为手机如何实现双微信登录?随着社交媒体的兴起,微信已经成为人们日常生活中不可或缺的沟通工具之一。然而,许多人可能会遇到一个问题:在同一部手机上同时登录多个微信账号。对于华为手机用户来说,实现双微信登录并不困难,本文将介绍华为手机如何实现双微信登录的方法。首先,华为手机自带的EMUI系统提供了一个很便利的功能——应用双开。通过应用双开功能,用户可以在手机上同

PHP编程指南:实现斐波那契数列的方法 PHP编程指南:实现斐波那契数列的方法 Mar 20, 2024 pm 04:54 PM

编程语言PHP是一种用于Web开发的强大工具,能够支持多种不同的编程逻辑和算法。其中,实现斐波那契数列是一个常见且经典的编程问题。在这篇文章中,将介绍如何使用PHP编程语言来实现斐波那契数列的方法,并附上具体的代码示例。斐波那契数列是一个数学上的序列,其定义如下:数列的第一个和第二个元素为1,从第三个元素开始,每个元素的值等于前两个元素的和。数列的前几个元

新版Edge如何关闭广告?屏蔽Edge个性化广告的方法 新版Edge如何关闭广告?屏蔽Edge个性化广告的方法 Mar 14, 2024 am 11:37 AM

  很多用户更新Edge浏览器之后,发现界面上多了很多的广告,比如新标签页的底部有多个网站的链接还标注广告字样,看起来非常烦人。那有什么办法可以关闭Edge浏览器个性化广告吗?小编在网上查找了很多办法,下面就分享给大家一个关闭广告的小技巧。  新版Edge如何关闭广告?  1、打开Edge浏览器。  2、点击右上角的【•••】。  3、点击【设置】。  4、点击【隐私、搜索和服务】。  5、关闭”个性化你的web体验“右侧的开关,即可关闭微软推送的个性

朋友圈广告怎么彻底关掉 朋友圈广告怎么彻底关掉 Mar 03, 2024 pm 12:31 PM

用户在刷朋友圈的时候会遇到很多的广告,那么广告怎么彻底关掉呢?用户们需要在我的里点击设置,然后找到个人信息与权限,然后点击个性化广告管理,将广告个性化关闭就行。这篇朋友圈广告彻底关掉方法介绍就能告诉大家具体的操作方法,赶紧看看吧!微信使用教程朋友圈广告怎么彻底关掉答:无法彻底关掉,只能关掉个性化推荐具体方法:1、首先点击我,然后找到里面的设置。2、找到个人信息与权限选项。3、点击里面的个性化广告管理功能。4、点击广告个性化右侧的开关,关闭就可以了。怎么关闭广告:1、找到朋友圈里的广告。2、点击右

如何在华为手机上实现微信分身功能 如何在华为手机上实现微信分身功能 Mar 24, 2024 pm 06:03 PM

如何在华为手机上实现微信分身功能随着社交软件的普及和人们对隐私安全的日益重视,微信分身功能逐渐成为人们关注的焦点。微信分身功能可以帮助用户在同一台手机上同时登录多个微信账号,方便管理和使用。在华为手机上实现微信分身功能并不困难,只需要按照以下步骤操作即可。第一步:确保手机系统版本和微信版本符合要求首先,确保你的华为手机系统版本已更新到最新版本,以及微信App

掌握Golang如何实现游戏开发的可能性 掌握Golang如何实现游戏开发的可能性 Mar 16, 2024 pm 12:57 PM

在当今的软件开发领域中,Golang(Go语言)作为一种高效、简洁、并发性强的编程语言,越来越受到开发者的青睐。其丰富的标准库和高效的并发特性使它成为游戏开发领域的一个备受关注的选择。本文将探讨如何利用Golang来实现游戏开发,并通过具体的代码示例来展示其强大的可能性。1.Golang在游戏开发中的优势作为一种静态类型语言,Golang在构建大型游戏系统

PHP游戏需求实现指南 PHP游戏需求实现指南 Mar 11, 2024 am 08:45 AM

PHP游戏需求实现指南随着互联网的普及和发展,网页游戏的市场也越来越火爆。许多开发者希望利用PHP语言来开发自己的网页游戏,而实现游戏需求是其中一个关键步骤。本文将介绍如何利用PHP语言来实现常见的游戏需求,并提供具体的代码示例。1.创建游戏角色在网页游戏中,游戏角色是非常重要的元素。我们需要定义游戏角色的属性,比如姓名、等级、经验值等,并提供方法来操作这些

See all articles