用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 相关文章推荐
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
PHP入门经历和学习过程分享
Apr 11 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
php上传中文文件名乱码问题处理方案
Feb 03 PHP
yii添删改查实例
Nov 16 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
Nov 16 PHP
laravel中的一些简单实用功能
Nov 03 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
PHP实现文件上传后台处理脚本
Mar 04 PHP
PHP sdk实现在线打包代码示例
Dec 09 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 分页函数multi() discuz
2009/06/21 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
PHP实现的简单日历类
2014/11/29 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
js实现简单页面全屏
2019/09/17 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
Pytorch之contiguous的用法
2019/12/31 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
Under Armour西班牙官网:美国知名的高端功能性运动品牌
2018/12/12 全球购物
保险经纪人求职信
2014/03/11 职场文书
党员公开承诺事项
2014/03/25 职场文书
书香校园建设方案
2014/05/02 职场文书
开会通知
2015/04/20 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL