用PHP实现小型站点广告管理


Posted in PHP onOctober 09, 2006

图片链接广告大概是最为常用的网络广告模式,但是多条广告的动态随机显示可不是那么简单的事情。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——增添新的广告 #

增添新广告

    //表单用来输入新增广告信息,并交给下面的PHP程序处理;
    //其中,加权值priority数字愈大,载入页面图片出现的机率就愈高,默认为1。

    广告 Banner:  

    广告网址URL:  

    图片链接说明ALT:  

    显示加权:  

     

    //处理表单数据的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 "
";
   echo "广告网址:  url
广告链接说明:  alt
显示加权:  priority ";
    }
    }
    ?>

3.建立显示广告程序:ShowAd.php3

设计思路:得到数据库表中所有各列信息分别存到相应的一维数组中,将所有广告的权值相加得到一个最大随机数,每次载入页面用srand() 产生一个随机树种子,再用rand()函数产生一个从1到最大随机数之间的一个随机数,然后按照一定的规则随机显示不同广告条,权值越大被显示的机会越大。

    # ShowAd.php3——随机显示广告 #
         //连接选择数据库;
     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[]="";
    }
    }
    //显示广告,权值越大,显示机会越大;
    echo  ad[0];
    ?> 

PHP 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
PHP读取PPT文件的方法
Dec 10 PHP
给大家分享几个常用的PHP函数
Jan 15 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
一个域名查询的程序
Oct 09 #PHP
PHP脚本的10个技巧(7)
Oct 09 #PHP
PHP脚本的10个技巧(6)
Oct 09 #PHP
复杂检索数据并分页显示的处理方法
Oct 09 #PHP
PHP脚本的10个技巧(5)
Oct 09 #PHP
打造计数器DIY三步曲(中)
Oct 09 #PHP
打造计数器DIY三步曲(下)
Oct 09 #PHP
You might like
一步一步学习PHP(1) php开发环境配置
2010/02/15 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
实例讲解php实现多线程
2019/01/27 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
python中的列表与元组的使用
2019/08/08 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
五种Python转义表示法
2020/11/27 Python
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
店长岗位职责
2013/11/21 职场文书
商场消防管理制度
2014/01/12 职场文书
母校寄语大全
2014/04/10 职场文书
介绍信怎么写
2015/05/05 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫