php 随机排序广告的实现代码

投放广告的人都很关注他的广告会放在哪个位置, 因为这可能影响点击次数, 甚至是否在第一屏显示. 就这个问题, 其实很容易解决, 只要随机显示广告即可.

代码如何实现? 在这我推荐两种随机显示广告的处理办法.

在后端处理
在后端排序好再输出页面. 将广告节点用数组存放, 对数组进行随机排序, 再输出经过排序的数组. 参考代码 (PHP) 如下:


复制代码 代码如下:

// 用数组存放广告列表
$ads = array('<a href="#"><img src="ad-125x125.png" alt="广告 1" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="广告 2" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="广告 3" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="广告 4" width="125" height="125" /></a>'
);

// 对数组进行随机排序
shuffle($ads);

// 输出经过排序的数组
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}
echo $html;

我们来扩展一下, 如果我是站长, 预留了 4 个广告位, 但现在只有 3 个在投放; 我想在空置的广告位放置一个 "虚位以待" 的广告招租链接, 并显示在最后, 该如何处理呢? 在排序完成之后再插放广告招租链接就可以了.


复制代码 代码如下:

// 用数组存放广告列表
$ads = array('<a href="#"><img src="ad-125x125.png" alt="广告 1" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="广告 2" width="125" height="125" /></a>'
,'<a href="#"><img src="ad-125x125.png" alt="广告 3" width="125" height="125" /></a>'
);

// 对数组进行随机排序
shuffle($ads);

// 输出经过排序的数组
$html = '';
foreach ($ads as $ad) {
$html .= $ad;
}

// 添加广告招租链接
$html .= '<a href="#"><img src="sell-ad-125x125.png" alt="虚位以待" width="125" height="125" /></a>';
echo $html;

我就是用这个方法来输出 125x125 广告的, 因为它直观可靠, 处理方便. 但是如果你希望对页面做静态化, 建议选用 JS 随机排序的方法.

在前端处理
在后端按原有循序输出, 在页面通过 JavaScript 重新排序. 假设页面输出广告区域的 HTML 片段如下.


复制代码 代码如下:

<div id="ads">
<a href="#"><img src="ad-125x125.png" alt="广告 1" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="广告 2" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="广告 3" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="广告 4" width="125" height="125" /></a>
</div>

我们可以通过 JS 来对广告进行重新排序. 参考代码如下:


复制代码 代码如下:

<div id="ads" style="display:none;">
<a href="#"><img src="ad-125x125.png" alt="广告 1" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="广告 2" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="广告 3" width="125" height="125" /></a>
<a href="#"><img src="ad-125x125.png" alt="广告 4" width="125" height="125" /></a>
</div>
<div id="random-ads" style="display:none;">
</div>

<script type="text/javascript">
//<![CDATA[

var source = document.getElementById('ads');
var target = document.getElementById('random-ads');
var ads = source.getElementsByTagName('a');

// 下标数组
var arr = new Array();
for(var i=0; i<ads.length; i++) {
arr[i] = i;
}

// 随机排序
function randomSort(a, b){
var tmp = parseInt((Math.random() + 0.5), 10);
return tmp ? a-b : b-a;
}

// 将老的广告区的节点随机插放到新的广告区
arr.sort(randomSort);
for(var i=0; i<arr.length; i++) {
target.appendChild(ads[arr[i]].cloneNode(true));
}

// 显示新的广告区和移除老的广告区
source.parentNode.removeChild(source);
target.style.display = 'block';

//]]>
</script>

如果有如同方法 1 那样的扩展需求, 将空广告位显示在最后, 且显示广告招租链接, 该如何处理? 这个当作课后习题吧...

时间: 2011-05-08

适用于抽奖程序、随机广告的PHP概率算法实例

那么我们在程序里必然会设计到算法,即按照一定的概率让用户获得奖品.先来看两个概率算法函数. 算法一 复制代码 代码如下: /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面数组的key */function random($ps){    static $arr = array();    $key = md5(serialize($ps)); if (!isset

用PHP实现的随机广告显示代码

<?php  #########随机广告显示##########   function myads(){  $dir="ads";   #设置存放记录的目录   //$dir="ads";   #设置存放记录的目录   $ads="$dir/ads.txt"; #设置广告代码文件  $log ="$dir/ads.log"; #设置ip记录文件 $ads_lines=file($ads);  $lines=count($

强制PHP命令行脚本单进程运行的方法

复制代码 代码如下: /**  * 保证单进程  *  * @param string $processName 进程名  * @param string $pidFile 进程文件路径  * @return boolean 是否继续执行当前进程  */ function singleProcess($processName, $pidFile) {  if (file_exists($pidFile) && $fp = @fopen($pidFile,"rb"))  

php广告加载类用法实例

本文实例讲述了php广告加载类的用法,非常实用.分享给大家供大家参考.具体方法如下: 该php广告加载类,支持异步与同步加载.需要使用Jquery实现. ADLoader.class.php类文件如下: <?php /** 广告加载管理类 * Date: 2013-08-04 * Author: fdipzone * Ver: 1.0 * * Func: * public load 加载广告集合 * public setConfig 广告配置 * private getAds 根据channel

用PHP实现小型站点广告管理(修正版)

今天做照着例子做,发现其中有很多错误的地方,为了让广大菜鸟兄弟更好的理解,我把修改后的文件给大家看看. 数据结构如下: CREATE TABLE ad ( url varchar(100) NOT NULL, banner varchar(150) NOT NULL, alt varchar(100), priority int(4) DEFAULT '1' NOT NULL, ) 增加广告的文件 ***************putad.php******************** <? i

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

图片链接广告大概是最为常用的网络广告模式,但是多条广告的动态随机显示可不是那么简单的事情.PHP的文件上传函数提供了在这块468x60像素的区域(网页广告的标准尺寸)实现能够根据权值大小而随机显示广告的解决方案,从而避免了开发FTP程序或是ASP和Perl CAI中需要外挂扩展才能实现此项功能的弊端. 本例在PHP4+MySQL+Apache for Win9x/2000下调试通过,共包括两部分:用来增加新广告的程序AddNewAd.php3以及显示广告的程序ShowAd.php3,都存放在服务

php 广告调用类代码(支持Flash调用)

调用方式如下:其中DebugStr这个函数就是类似一个echo. 复制代码 代码如下: DebugStr('$Adv->getContentById($id); $id为广告编号, 仅调用一条,返回内容为字符串'); echo Adv::getContentById(35); DebugStr('$Adv->getContentByIdJS($id); $id为广告编号, 仅调用一条,返回内容为JS字符串'); echo Adv::getContentByIdJS(35); DebugStr(

PHP运行时强制显示出错信息的代码

复制代码 代码如下: error_reporting(E_ALL); ini_set('display_errors', '1'); ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); //将出错信息输出到一个文本文件 怎样输出错误信息到一个文件,同时不让错误信息出现在网站上呢,这个对线上的项目调试很好,自己可以看错误信息,但是客户端看不到!有木有办法 可以使用 set_error_handler控制

随机广告显示(PHP函数)

<?php #########随机广告显示##########  function myads(){ $dir="ads";   #设置存放记录的目录  //$dir="ads";   #设置存放记录的目录  $ads="$dir/ads.txt"; #设置广告代码文件 $log ="$dir/ads.log"; #设置ip记录文件 $ads_lines=file($ads); $lines=count($ads_lin

php强制运行广告的方法

本文实例讲述了php强制运行广告的方法.分享给大家供大家参考.具体实现方法如下: 网站流量大但是访客就是不要点击,着让我们想赚钱的站长苦恼不以,但是在php中有这么一个很好的函数就是:session,思路是这样的,用session来保存每一个访问者的ip. 这样访问一次后就不调广告了,这样就全奇美了,不会乱跳广告,二又可以增加收入,代码如下: 复制代码 代码如下: <?php session_start();  $lifeTime = 24 * 3600;  session_set_cookie

javascript强制点击广告的方法

本文实例讲述了javascript强制点击广告的方法.分享给大家供大家参考.具体如下: 这里介绍的强制点击广告的JavaScript代码,先点击广告后下载地址才生效,或者是先点击广告后才会显示某部分内容,一般用于下载站或文档资料类网站,尽量不要多用哦,否则网站的用户体验会很差! 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x

python运行时强制刷新缓冲区的方法

需求:打印一颗"*"休息1s 代码如下: #!/usr/bin/python #coding=utf-8 ''' 暂停1s输出 ''' import time def printStar(n): for i in range(n): print " * ", time.sleep(1) if __name__ == '__main__': printStar(10) 输出结果(等待10s后一次性输出): [root@miner_k test]# python sle

Python退出时强制运行一段代码的实现方法

设想这样一个场景,你要给一个项目开发测试程序,程序开始运行的时候,会创建初始环境,测试完成以后,会清理环境. 这段逻辑本身非常简单: setup() test() clean() 但由于测试的代码比较复杂,你总是在调试的时候程序异常,导致每次clean()函数还没有来得及运行,程序就崩溃了. 你可能想到,如果这样写会怎么样呢: setup() try: text() except Exception as e: print('运行异常:', e) clean() 似乎看起来,程序一定会运行到cl

Java编程使用Runtime和Process类运行外部程序的方法

本文实例讲述了Java编程使用Runtime和Process类运行外部程序的方法.分享给大家供大家参考,具体如下: 使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序. 1. exec(String command) 2. exec(String command, String envp[], File dir) 3. exec(String cmd, String envp[]) 4. exec(String cmdarray[]) 5. exec(

Python实现从脚本里运行scrapy的方法

本文实例讲述了Python实现从脚本里运行scrapy的方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: #!/usr/bin/python import os os.environ.setdefault('SCRAPY_SETTINGS_MODULE', 'project.settings') #Must be at the top before other imports from scrapy import log, signals, project from scrapy.x

Django中实现点击图片链接强制直接下载的方法

本文实例讲述了Django中实现点击图片链接强制直接下载的方法.分享给大家供大家参考.具体分析如下: 当用户点击图片连接时,默认为在浏览器中直接开打图片,这段代码可以让图片链接变成下载 这段代码也非常适合下载大文件,基本不会消耗内存,每次只读取一部分数据到内存,然后提供下载 def Download(request): def readFile(fn, buf_size=262144): f = open(fn, "rb") while True: c = f.read(buf_siz

js实现从右向左缓缓浮出网页浮动层广告的方法

本文实例讲述了js实现从右向左缓缓浮出网页浮动层广告的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"&

js实现网页右上角滑出会自动消失大幅广告的方法

本文实例讲述了js实现网页右上角滑出会自动消失大幅广告的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/

php通过修改header强制图片下载的方法

本文实例讲述了php通过修改header强制图片下载的方法.分享给大家供大家参考.具体实现方法如下: function downloadFile($file){ $file_name = $file; $mime = 'application/force-download'; header('Pragma: public'); // required header('Expires: 0'); // no cache header('Cache-Control: must-revalidate,