Score
0
Watch 30 Star 134 Fork 47

WM Jonssen / 百夫长统计PHP

Join us
Explore and code with more than 2 million developers,Free private repositories !:)
Sign up
百夫长统计(Centcount Analytics)是一款功能强大的免费开源网站统计程序。采用 PHP + MySQL + Redis 开发而成,可以方便地部署在自己的服务器上,100%独享数据。 spread retract

https://cn.centcount.com

Clone or download
errlog.php 6.13 KB
Copy Edit Web IDE Raw Blame History
<?php
/*!
* ATTENTION: THIS FREE LICENSE IS ONLY FOR PERSONAL NON-COMMERCIAL USER. FOR COMMERCIAL PURPOSES, PLEASE PURCHASE A COMMERCIAL LICENSE! *
* module: Centcount Analytics Free Error Log PHP Code *
* version: 1.00 Free *
* author: WM Jonssen *
* date: 03/12/2018 *
* copyright 2015-2018 WM Jonssen <wm.jonssen@gmail.com> - All rights reserved.*
* license: Dual licensed under the Free License and Commercial License. *
* https://www.centcount.com *
*/
header('Content-type: text/html; charset=utf-8');
@require './config/config_security.php';
@require './config/config_common.php';
if ($_GET) {
$con = mysqli_connect(DB_HOST_LOCAL, ROOT_USER_LOCAL, ROOT_PASSWORD_LOCAL);
if (mysqli_connect_errno($con)) exit;
$db_selected = mysqli_select_db($con, DB_NAME_ERROR);
if (!$db_selected) {
if (!mysqli_query($con, 'CREATE DATABASE IF NOT EXISTS '.DB_NAME_ERROR.' DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci')) {
mysqli_close($con);
exit;
}
$db_selected = mysqli_select_db($con, DB_NAME_ERROR);
if (!$db_selected) {
mysqli_close($con);
exit;
}
}
if (!check_table_exist($con, 'jserror')) {
$sql = 'CREATE TABLE IF NOT EXISTS jserror (
pKey int AUTO_INCREMENT NOT NULL PRIMARY KEY,
SiteID bigint NOT NULL DEFAULT 0,
VID bigint NOT NULL DEFAULT 0,
RecordNo bigint NOT NULL DEFAULT 0,
ErrorName varchar(128) NOT NULL DEFAULT "",
ErrorMsg varchar(1024) NOT NULL DEFAULT "",
ErrorPosition varchar(128) NOT NULL DEFAULT "",
Referrer varchar(1024) NOT NULL DEFAULT "",
Page varchar(1024) NOT NULL DEFAULT "",
Agent varchar(512) NOT NULL DEFAULT "",
Extra varchar(255) NOT NULL DEFAULT "",
IP varchar(15) NOT NULL DEFAULT "",
RecordTime varchar(20) NOT NULL DEFAULT ""
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci';
if (!mysqli_query($con, $sql)) {
mysqli_close($con);
exit;
}
}
$err = 0;
isset($_GET['siteid']) ? $siteid = (int)$_GET['siteid'] : $err++;
isset($_GET['vid']) ? $vid = (int)$_GET['vid'] : 0;
isset($_GET['rn']) ? $rn = (int)$_GET['rn'] : $err++;
isset($_GET['name']) ? $name = SDATA($con,$_GET['name'],1,128) : $err++;
isset($_GET['msg']) ? $msg = SDATA($con,$_GET['msg'],1,1024) : $err++;
isset($_GET['pos']) ? $pos = SDATA($con,$_GET['pos'],1,128) : $err++;
isset($_GET['rf']) ? $rf = SDATA($con,$_GET['rf'],1,1024) : $err++;
isset($_GET['page']) ? $page = SDATA($con,$_GET['page'],1,1024) : $err++;
isset($_GET['agent']) ? $agent = SDATA($con,$_GET['agent'],1,512) : $err++;
isset($_GET['ex']) ? $ex = SDATA($con,$_GET['ex'],1,255) : $err++;
$ip = get_ip();
if ($err) exit;
date_default_timezone_set('PRC');
$now = date('Y-m-d H:i:s', time());
$sql = "INSERT INTO jserror (SiteID,VID,RecordNo,ErrorName,ErrorMsg,ErrorPosition,Referrer,Page,Agent,Extra,IP,RecordTime) VALUES($siteid, $vid, $rn,'{$name}','{$msg}','{$pos}','{$rf}','{$page}','{$agent}','{$ex}','{$ip}','{$now}')";
mysqli_query($con, $sql);
mysqli_close($con);
autoresponse($siteid,$rn,$vid,$name,$msg,$pos,$rf,$page,$agent,$ex,$ip,$now);
}
function autoresponse($siteid,$rn,$vid,$name,$msg,$pos,$rf,$page,$agent,$ex,$ip,$now){
$subject = "Notification of CA JS Error";
$message = "
<html>
<head>
<title>CA JS Error</title>
</head>
<body>
<div style='font-family: Microsoft Yahei,Arial,Verdana; font-size:13px;'>
<p>
Hi,<br/><br/>
You received a notification message from JS CA Error Log<br/><br/><br/>
<u><b>Details:</b></u><br/><br/>
<i>Site ID: ".$siteid. "</i><br/><br/>
<i>VID: ".$vid. "</i><br/><br/>
<i>Record No: ".$rn. "</i><br/><br/>
<i>Error Name: ". $name . "</i><br/><br/>
<i>Error Msg: ". $msg . "</i><br/><br/>
<i>Error Position: ". $pos . "</i><br/><br/>
<i>Referrer: ". $rf . "</i><br/><br/>
<i>Page: ". $page . "</i><br/><br/>
<i>Agent: ". $agent . "</i><br/><br/>
<i>Extra: ". $ex . "</i><br/><br/>
<i>IP: ". $ip . "</i><br/><br/>
<i>Remote IP: ". $_SERVER['REMOTE_ADDR'] . "</i><br/><br/>
<i>Log Time: ". $now ."</i><br/><br/><br/><br/>
Regards,<br/>
Centcount Team<br/><br/>
This is an auto-response mail. Please do not reply.<br/>
</p>
</div>
</body>
</html>
";
$headers = "MIME-Version: 1.0\r\n".
"Content-type: text/html; charset=utf-8\r\n".
"From: <js-error@centcount.com>";
return mail(ADMIN_MAIL, $subject, $message, $headers);
}
function get_ip() {
foreach (array('REMOTE_ADDR') as $key) {
if (array_key_exists($key, $_SERVER)) {
foreach (explode(',', $_SERVER[$key]) as $ip) {
if ((bool) filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) return $ip;
}
}
}
return '';
}
function check_table($con, $tb, $db) {
$ret = false;
$sql = 'SHOW TABLES FROM ' . $db;
$result = mysqli_query($con, $sql);
if ($result && mysqli_num_rows($result)) {
while ($row = mysqli_fetch_row($result)) {
if ($row[0] == $tb){
$ret = true;
break;
}
}
mysqli_free_result($result);
}
return $ret;
}
function check_table_exist($con, $cTB) {
$result = mysqli_query($con, "SHOW TABLES LIKE '{$cTB}'");
if ($result && mysqli_num_rows($result)) {
mysqli_free_result($result);
return true;
}
return false;
}
function SDATA($con, $val, $opt, $maxL, $minL=0) {
switch ($opt) {
case 1://string with sanitize & check length, use sanitized data
$val = rawurldecode($val);
$encoding = mb_detect_encoding($val, 'UTF-8, GB18030', true);
switch ($encoding) {
case 'UTF-8':
break;
case 'GB18030':
$val = mb_convert_encoding($val, 'UTF-8', 'GB18030');
break;
default:
$val = mb_convert_encoding($val, 'UTF-8', 'UTF-8');
break;
}
if (mb_detect_encoding($val, 'UTF-8', true) === false) return '';
$val = filter_var($val, FILTER_SANITIZE_STRING);
$val = mysqli_real_escape_string($con, $val);
if (mb_strlen($val,'UTF-8') > $maxL) {
return mb_substr($val, 0, $maxL, 'UTF-8');
} else {
return $val;
}
case 2://format int data and check length
$tmp = (int)$val;
return ($tmp > $maxL || $tmp < $minL) ? $def : $tmp;
}
return NULL;
}
?>

Comment ( 0 )

Sign in for post a comment

PHP
1
https://gitee.com/WMJonssen/Centcount-Analytics.git
git@gitee.com:WMJonssen/Centcount-Analytics.git
WMJonssen
Centcount-Analytics
百夫长统计
master

Help Search

191139_cd20d5fd_5186603 191143_ebef6f8d_5186603