HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/mm.paycheckc.com/app/grab/controller/IndexController.php
<?php
namespace app\grab\controller;
use think\Controller;
use cmf\controller\HomeBaseController;
use app\facade\Connectother as con;
use app\grab\model\UserModel as User;

class IndexController extends HomeBaseController
{
    public function index()
    {
        return $this->fetch(':index');
    }

    public function ws()
    {
        return $this->fetch(':ws');
    }

    #####
     public function addurl(){
    	//浏览次数统计
   		$request = request();
		$dates = $request->param();//获取所有参数,最全
		$equipment = $_SERVER["HTTP_USER_AGENT"];//获取设备
		$userip =$request->ip();//获取ip
		// var_dump($dates);

		//接收数据
		$date1 = [ 
		  "location"     => $dates['kw_url'],//落地页链接
		  "souword"      => $dates['kw_ref'],//来源连接
		  "time"         => $dates['v'],//时间
		  "userip"       => $userip
		];
		

		// $allshow=new con();
		//将页面链接转换成数组
		$url_ary = con::all_url($date1['location']);

		//******************************判断搜索词开始***********************************************
		$souword =con::souword($date1['souword']);//判断搜索词
		// if( $souword == ""){
				
		// 		echo "no souword";	
		// 		die;
		// 	}

		//******************************判断搜索词结束***********************************************
		// var_dump($url_ary);
		//
		//******************************检测域名是否绑定开始***********************************************
		//后期连接数据库,运营缓冲
		 $json_url=dirname(dirname(dirname(__DIR__))).'/data/user/'.$dates['kw_sign_id'].'.json';//文件名称和路径
			                    // 写入文件
        if(!file_exists($json_url)){
            fopen($json_url,"w");
        }

		 $rs = file_get_contents($json_url);
		  $host = json_decode($rs);
		 // $host=explode(",",str_replace('"','',$rs)); 
				
		$shost =in_array($url_ary['host'], $host);

		// var_dump($host);

		if(!$shost){
			exit;
		}
		//*******************************检测域名是否绑定结束**********************************************
		
		//处理后的落地页
		$urlpaths = $url_ary['scheme']."://".$url_ary['host'].$url_ary['path'];
		
		// 即将单元,词,计划转换成数组
		// 	存在query				
			if(isset($url_ary['query'])){
				$ary = con::convertUrlQuery($url_ary['query']);
				//将单元词和计划解码
				$urldecode_ary = con::urldecode($ary);
				}else{
					$urldecode_ary =  [
									  'utm_medium'=> '',					 
									  'utm_content'=> '',	 
									  'utm_term'=>''
									  ];
					}


			// var_dump($urldecode_ary);

			//***************************判断搜索词和单元计划是否存在一个*********************
				if(($souword=="")&&($urldecode_ary['utm_medium']=="")&&($urldecode_ary['utm_content']=="")&&($urldecode_ary['utm_term']==""))
				{
						// echo "no souword or utm_medium  utm_content utm_term";	
						//die;
				}
			//***************************判断搜索词和单元计划是否存在一个*********************
			
			$getip =con::getip($userip);
			$date4 = [
					'wsign_id'=>$dates['kw_sign_id'],
					'wsouword'=>$souword,
					'wtime'=>time(),
					'wlocation'=>$urlpaths,
					
					//来源
                    'wform'=>$date1['souword'],
                    'wregion' =>$getip["province"],
                    'wcity' =>$getip["city"],
					'wequipment' =>con::deviceType($equipment),
                    'wsourcetype' =>con::sourceType($date1['souword']),//平台
					
					'wutm_medium'=> $urldecode_ary['utm_medium'],					 
					'wutm_content'=> $urldecode_ary['utm_content'],	 
				    'wutm_term'=>$urldecode_ary['utm_term'],
				    'wuser_ip'=>$date1['userip']
				];

		// var_dump($date4);

		//数据保存
		$wxshow=con::waicon('wxshow')->data($date4)->insert();
		// $wxshow->data($date4);
		// $wxshow->save();
		var_dump($wxshow);

    }





     public function addcopy(){
     	//复制或点击统计
     	$request = request();
		$dates = $request->param();
   		 $params = $_SERVER["HTTP_USER_AGENT"];

   		 //var_dump($params);
		 $userip =$request->ip();

		 if (preg_match("/([\x81-\xfe][\x40-\xfe])/", $dates['c'], $match)) {
			    return '含有汉字';
			}
			
		 //排除特殊符号
		 if(preg_match("/\#|\-|\:|\\$/", $dates['c'], $match)){
             return '特殊符号';
         }
		 
		 //排除误点数据
		 if(strlen($dates['c']) < 4){
            return '无用数据';
        }
		
		//排除undefined
		 if(($dates['c']) == 'undefined'){
            return 'undefined';
        }

   		 $date2 = [
				"user_type"     => $dates['type'],
				 "location"     => $dates['kw_url'],
				 "copy_content" => $dates['c'],
				 "souword"      => $dates['kw_ref'],
				 "time"         => $dates['v'],
				 "equipment"    => $params,
				 "userip"       => $userip
			];
		
		$user_url = $date2['location'];


		//检测域名绑定
			$allshow=new con();

			$souword =con::souword($date2['souword']);	//判断是否存在搜索词
			// if( $souword == ""){
			// 	echo "没有搜索词";	
			// 	die;
			// }

			$url_ary = con::all_url($user_url);
			 $json_url=dirname(dirname(dirname(__DIR__))).'/data/user/'.$dates['kw_sign_id'].'.json';//
				                    // 写入文件
		        if(!file_exists($json_url)){
		            fopen($json_url,"w");
		        }
				$rs = file_get_contents($json_url);
				$host=json_decode($rs); 
				 // $host=explode(",",str_replace('"','',$rs)); 
				 $shost =in_array($url_ary['host'], $host);
					if(!$shost){
						exit;
					}

		//落地页连接
			$urlpath = $url_ary['scheme']."://".$url_ary['host'].$url_ary['path'];

	
			//
			//
			//即将单元,词,计划转换成数组
			//存在query				
			if(isset($url_ary['query'])){
				$ary = con::convertUrlQuery($url_ary['query']);
				//将单元词和计划解码
				$urldecode_ary = con::urldecode($ary);
				}else{
					$urldecode_ary =  [
									  'utm_medium'=> '',					 
									  'utm_content'=> '',	 
									  'utm_term'=>''
									  ];
			}

			//***************************判断搜索词和单元计划是否存在一个*********************
				if(($souword=="")&&($urldecode_ary['utm_medium']=="")&&($urldecode_ary['utm_content']=="")&&($urldecode_ary['utm_term']==""))
				{
						echo "no souword or utm_medium  utm_content utm_term";	
						//die;
				}
			//***************************判断搜索词和单元计划是否存在一个*********************

			//判断设备
			$equipment = con::deviceType($date2['equipment']);
			// var_dump($equipment);

			//判断ip
			$getip =con::getip($date2['userip']);
			//$test = '123.139.93.145';
			//$getip =$allshow->getip($test);
			
			 // var_dump($getip);

			// if($getip =="0"){
			// 	$getip= [
			// 		$getip['province'] => '--',
			// 		$getip['city']   => '--'
			// 	];
			// }
				 

			$sourceType =con::sourceType($date2['souword']);//平台
			
			
			//判断停留时间
            //查询25分钟内的ip  60*25 = 1500
            $begin_time = $date2['time']-1500;
        
            $wxstop = con::connect()->table('wxshow')->where('wsign_id',$dates['kw_sign_id'])
                ->whereTime('wtime','between',[$begin_time,$date2['time']])
                ->where('wuser_ip',$date2['userip'])
                ->find();
            if($wxstop){
                $stoptime = $date2['time'] - $wxstop['wtime'];
            }else{
                $stoptime="--";
            }
            
					
				// dump($sourceType);
				$alldate = [
						"location" => $urlpath,
						'souword' => $souword,
						'copy_content'	=> $date2['copy_content'],
						'sourceType'  =>$sourceType,
						'equipment' =>$equipment,
						'user_type' => $date2['user_type'],
						'user_ip' =>$date2['userip'],
						'utm_medium'=> $urldecode_ary['utm_medium'],			 
						'utm_content'=> $urldecode_ary['utm_content'], 
						'utm_term'=>$urldecode_ary['utm_term'],
						'region' =>$getip["province"],
						'city' =>$getip["city"],
						'sign_id'=>$dates['kw_sign_id'],
						'time' =>time(),
						'stop'=>$stoptime
					];

			// var_dump($alldate);

			$flag = con::waicon('allshow')->data($alldate)->insert();
			var_dump($flag);
			// con::save();

    }
    ######

}