用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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
解析thinkphp的左右值无限分类
Jun 20 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
js代码实现微博导航栏
Jul 30 PHP
详细解读PHP中接口的应用
Aug 12 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
Jul 07 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP应用跨时区功能的实现方法
Mar 21 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 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
php实现删除空目录的方法
2015/03/16 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
python连接sql server乱码的解决方法
2013/01/28 Python
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
python连接mongodb密码认证实例
2018/10/16 Python
django 中QuerySet特性功能详解
2019/07/25 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
傲盾软件面试题
2015/08/17 面试题
大学生职业生涯规划书范文
2014/01/04 职场文书
《王二小》教学反思
2014/02/27 职场文书
请假条的格式
2014/04/11 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
先进单位申报材料
2014/12/25 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
使用Ajax实现进度条的绘制
2022/04/07 Javascript