logcounterxモジュールphp7への対応
タツ
投稿数: 2447
続いて、logcounterxモジュールphp7への対応です。他に編集したモジュールと同様、xoops.taquino.netさんのサイトよりlogcounterxジュール(バージョン2.74)をダウンロードし、JJ1RLWのXOOPS Cube Siteさんのサイトを参考に編集しました。
JJ1RLWのXOOPS Cube Siteさんのサイトから
引用:
さらに、
■eregの対応
・logcounterx/index.php
■ログの再構築の際のエラー表示の解消
・include/function.php
モジュールインストールの際
sql/mysql.sqlで
TYPE = MyISAM; → ENGINE = MyISAM;としましたがインストールに失敗したので
TYPE = MyISAM; → ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;とすればOKでした。
これで、インストール後logcounterxモジュールのデータベースを移行しテストしました。今のところ検索リストが表示されない以外は正常なようです。
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
投稿ツリー
-
Xoops Cube Legacyをphp7で運用する方法を模索
(タツ, 2022/9/14 5:12)
- myx_backupモジュールphp7への対応 (タツ, 2022/9/14 11:44)
-
Re: Xoops Cube Legacyをphp7で運用する方法を模索
(nonn50, 2022/9/14 12:25)
- Re: Xoops Cube Legacyをphp7で運用する方法を模索 (タツ, 2022/9/14 15:58)
- multiMenuモジュールphp7への対応 (タツ, 2022/9/24 8:28)
-
Gnaviモジュールphp7への対応
(タツ, 2022/9/27 20:49)
- Re: Gnaviモジュールphp7への対応(追加) (タツ, 2023/2/11 17:19)
- d3pipesモジュールphp7への対応 (タツ, 2022/9/28 6:09)
-
bulletinモジュールphp7への対応
(タツ, 2022/9/29 8:25)
- Re: bulletinモジュールphp7への対応 (タツ, 2023/2/11 18:29)
- myalbum-pモジュールphp7への対応 (タツ, 2022/10/1 7:39)
- webphotoモジュールphp7への対応 (タツ, 2022/10/22 1:03)
- theme_changerモジュールphp7への対応 (タツ, 2022/11/16 7:09)
-
logcounterxモジュールphp7への対応
(タツ, 2022/11/19 19:30)
- Re: logcounterxモジュールphp7への対応 (タツ, 2023/2/11 18:24)
- captchaモジュールphp7への対応 (タツ, 2022/11/29 5:51)
- d3forumモジュールphp7への対応 (タツ, 2023/2/15 6:39)
- liaiseモジュールphp7への対応 (タツ, 2023/2/15 6:46)