×
热搜词

QQ登录

只需一步,快速开始

PHP实现广告点击量统计功能

标签: PHP后端编程
PHP实现广告点击量统计功能
(含Cookie记录功能,防止多次点击刷次数)


目录结构:
根目录:
QQ截图20221004190559.png

ad目录:
QQ截图20221004190614.png

times目录:
QQ截图20221004190623.png


index.php代码详情:


[PHP] 纯文本查看 复制代码
<?php
    /**
     * 广告点击量计数
     * Copyright © 度仙门 玄元一墨
     * [url=https://www.duxianmen.com/]https://www.duxianmen.com/[/url]
     */
     
    class ad_core
    {
        
        /**
         * 检测广告是否存在
         */
        public function det_ad($ad_name){

            if(file_exists('ad/'.$ad_name.'.json')){
                return true;
            }else{
                return false;
            }
        }

        /**
         * 检测广告次数json文件是否存在,不存在就新建它
         */

        public function det_ad_time_files($ad_name){

            if(file_exists('times/'.$ad_name.'.json')){
                return true;
            }else{
                $time_arr = array(
                    'TIMES'=>0
                );
                if(file_put_contents('times/'.$ad_name.'.json',json_encode($time_arr)) != 0){
                    return true;
                }else{
                    return false;
                }
            }
        }

        /**
         * 添加点击量
         */

        public function add_time($ad_name,$add_times){
    
            //获取原有的点击量数据
            $old_times = json_decode(file_get_contents('times/'.$ad_name.'.json'), true);
            $new_times = $old_times['TIMES']+$add_times;
    
            $new_time_arr = array(
                'TIMES'=>$new_times
            );
    
            //写入新的点击量数据并检测是否成功
            if(file_put_contents('times/'.$ad_name.'.json',json_encode($new_time_arr)) != 0){
                return true;
            }else{
                return false;
            }
        }

        /**
         * 新建广告cookie,防止刷点击量 add_cookie($ad_1,15)
         */

        public function add_cookie($ad_name,$in_code){

            setcookie(md5($ad_name), $in_code, time()+86400, "/", $_SERVER['HTTP_HOST']);
        }

        /**
         * 判断是否存在cookie
         */
        
        public function det_cookie($ad_name){

            if($_COOKIE[md5($ad_name)] != null){
                return false;
            }else{
                return true;
            }

        }

        /**
         * 获取广告的URL
         */
        
        public function get_ad_url($ad_name){

            $ad_data = json_decode(file_get_contents('ad/'.$ad_name.'.json'), true);
            $ad_url = $ad_data['URL'];
            
            return $ad_url;
        }

    }

    $ad_start = new ad_core;
    
    //检测传参是否为空
    if($_GET['ad'] != null){
        $ad_name = $_GET['ad'];
        //检测ad信息是否存在
        if($ad_start -> det_ad($ad_name)){
            if($ad_start -> det_ad_time_files($ad_name)){
                if($ad_start -> det_cookie($ad_name)){
                    //新建cookie、添加点击量后跳转

                    //设置cookie为1-3600随机正整数
                    $ad_start -> add_cookie($ad_name,rand(1,3600));
                    $ad_start -> add_time($ad_name,1);
                    $ad_url = $ad_start -> get_ad_url($ad_name);

                    header('Location: '.$ad_url);
                }else{
                    //直接跳转
                    $ad_url = $ad_start -> get_ad_url($ad_name);

                    header('Location: '.$ad_url);
                }
            }
        }
    }
?>



如何添加新的广告?
需要添加新的广告,直接在ad目录里新建<广告名>.json文件即可,内部以如下格式输入:
{"URL":"https://nav.duxianmen.com/"}

times目录下的同名文件无需自建,在首次运行时,会自动生成。




如何使用?
http://127.0.0.1/ad/index.php?ad=<广告名>
这个链接直接放入html的<a>标签里即可。

度仙门网 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与度仙门网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和度仙门网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、度仙门网管理员和版主有权不事先通知发贴者而删除本文

帖子地址: 

玄元一墨

写了 246 篇文章,拥有下品灵石 9544 枚,中品灵石 11421 枚,上品灵石 10002 枚,被 4 人关注

欢迎访问度仙门网!请在论坛右上角的个人设置中修改你的个性签名!
踩
回复

使用道具

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

Copyright © 2018-, Duxian studio.

返回顶部