logcounterxモジュールphp7への対応

このトピックの投稿一覧へ

なし logcounterxモジュールphp7への対応

msg# 1.10
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2022/11/19 19:30 | 最終変更
タツ  管理人   投稿数: 2400 オンライン
続いて、logcounterxモジュールphp7への対応です。他に編集したモジュールと同様、xoops.taquino.netさんのサイトよりlogcounterxジュール(バージョン2.74)をダウンロードし、JJ1RLWのXOOPS Cube Siteさんのサイトを参考に編集しました。

JJ1RLWのXOOPS Cube Siteさんのサイトから
引用:
logcounterx Ver 2.74のUTF-8、MySQL、PHP7対応

XOOPS Cubeで使っているモジュールのlogcounterx Ver 2.74のUTF-8、MySQL、PHP7対応するため、お得意の「ちょっとだけ改造」をしています。

eregi系関数が非推奨なった事への対応
admin/myblockform.php
admin/uaos.php
include/functions.php
eregi()をpreg_match()にすべて変更する。


eregi( "MSIE[^;]*" , $browser , $msie )

preg_match( '/MSIE[^;]*/i' , $browser , $msie )
に変更。


xpressを導入してWordPressを使うとにUTCとなることへの対応で、UTCからJSTを使う様に
blocks/count_up.php
56行目
date_default_timezone_set("Asia/Tokyo");
を追加。

eregi系関数が非推奨なった事への対応
98行目
if (eregi('Robot', lcx_ua2br($UserAgent))) {

if (preg_match('/Robot/i', lcx_ua2br($UserAgent))) {
に変更。

リモートアドレスが更新されない問題への対応
130-131行目
if (($RemoteAddr == $RemoteHost) && ($CONF['USE_GET_HOST'])) { $RemoteHost = gethostbyaddr($RemoteAddr); $slashedRH = addslashes($RemoteHost); } else { $slashedRH = ''; }
if ((trim($HttpReferer) != '') && !preg_match('/^(http:\/\/|https:\/\/|ftp:\/\/)/', trim($HttpReferer))) {

if (($RemoteAddr == $RemoteHost) && ($CONF['USE_GET_HOST'])) { $RemoteHost = gethostbyaddr($RemoteAddr); } else { $slashedRH = ''; }
if ((trim($HttpReferer) != '') && !preg_match('/^(http:\/\/|https:\/\/|ftp:\/\/)/i', trim($HttpReferer))) {
に変更。

137行目
$sql = "INSERT INTO ".$xoopsDB->prefix("logcounterx_log").
" (remote_host, user_agent, path_info, referer, acccnt, uname, accday, acctime, accwday)" .
" VALUES " .
" ('$slashedRH', '".addslashes($UserAgent)."', '".addslashes($PathInfo)."',".

$slashedRemoteAddr = addslashes($RemoteAddr);
$slashedRemoteHost = addslashes($RemoteHost);
$sql = "INSERT INTO ".$xoopsDB->prefix("logcounterx_log").
" (remote_host, user_agent, rh_short, path_info, referer, acccnt, uname, accday, acctime, accwday)" .
" VALUES " .
" ('$slashedRemoteAddr', '".addslashes($UserAgent)."', '$slashedRemoteHost', '".addslashes($PathInfo)."',".
に変更。

xpressを導入してWordPressを使うとにUTCとなることへの対応で、UTCからJSTを使う様に
blocks/display.php
16行目
date_default_timezone_set("Asia/Tokyo");
を追加。

include/functions.php
解析できるOSを追加
19行目
if (eregi('Windows NT 5\.1', $agent) || eregi('WinNT 5\.1', $agent)) { return 'WinXP'; }
if (eregi('Windows NT 6\.0', $agent) || eregi('WinNT 6\.0', $agent)) { return 'WinVista'; }
if (eregi('Windows NT 6\.1', $agent) || eregi('WinNT 6\.1', $agent)) { return 'Windows7'; }
if (eregi('Windows NT', $agent) || eregi('WinNT', $agent)) { return 'WinNT'; }

if (preg_match('/Windows NT 5\.1/i',$agent) || preg_match('/WinNT 5\.1/i',$agent)) { return 'WinXP'; }
if (preg_match('/Windows NT 5\.2/i',$agent) || preg_match('/WinNT 5\.2/i',$agent)) { return 'Win2003'; }
if (preg_match('/Windows NT 6\.0/i',$agent) || preg_match('/WinNT 6\.0/i',$agent)) { return 'WinVista'; }
if (preg_match('/Windows NT 6\.1/i',$agent) || preg_match('/WinNT 6\.1/i',$agent)) { return 'Windows7'; }
if (preg_match('/Windows NT 6\.2/i',$agent) || preg_match('/WinNT 6\.2/i',$agent)) { return 'Windows8'; }
if (preg_match('/Windows NT 6\.3/i',$agent) || preg_match('/WinNT 6\.3/i',$agent)) { return 'Windows8.1'; }
if (preg_match('/Windows NT 10/i',$agent) || preg_match('/WinNT 10/i',$agent)) { return 'Windows10'; }
if (preg_match('/Windows NT/i',$agent) || preg_match('/WinNT/i',$agent)) { return 'WinNT'; }
に変更。

280行目
" ref_query = '$Query', rh_short = '$RHShort', ref_short = '$RefShort'," .

" ref_query = '$Query', ref_short = '$RefShort'," .
に変更。

UTF-8への対応?
index.php
7行目
if (!defined('_CHARSET')) { define('_CHARSET', 'EUC-JP'); }

if (!defined('_CHARSET')) { define('_CHARSET', 'UTF-8'); }
に変更。

sql/mysql.sql
) TYPE = MyISAM;

) ENGINE = MyISAM;
にすべて変更。

user_agentの長さが不足してエラーとなる事への対応
36行目
user_agent varchar(150) NOT NULL default '',

user_agent varchar(250) NOT NULL default '',
に変更。

以上、「ちょっとだけ改造」でした。..(^_^;
※2016/05/17 OSを解析する部分を追加訂正しました。
最終更新:2018/07/31

さらに、
■eregの対応
・logcounterx/index.php
257,282行目
if (($Data['RowName'] == 'unknown') || ereg('\+\+\+\+\+\+\+\+\+\+',$Data['RowName'])) { continue; }
↓変更
if (($Data['RowName'] == 'unknown') || preg_match('/\+\+\+\+\+\+\+\+\+\+/',$Data['RowName'])) { continue; }

■ログの再構築の際のエラー表示の解消
・include/function.php
257行目
if (preg_match('/Slurp\.so/Goo/i',	$agent)) { return 'Robot (goo)'; }
↓変更
if (preg_match('<Slurp\.so/Goo>i',	$agent)) { return 'Robot (goo)'; }

モジュールインストールの際
sql/mysql.sqlで
TYPE = MyISAM; →  ENGINE = MyISAM;としましたがインストールに失敗したので
TYPE = MyISAM; →  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;とすればOKでした。

これで、インストール後logcounterxモジュールのデータベースを移行しテストしました。今のところ検索リストが表示されない以外は正常なようです。
投票数:14 平均点:5.00

投稿ツリー


     条件検索へ

旅と気ままなフォーラム最新投稿

欲しい商品が必ず見つかるメジャーなネットショップ

ログイン

Facebook,RSSリンク表示

検索

アクセスカウンタ

今日 : 121
昨日 : 654
総計 : 1628219