ページへ戻る

− Links

 印刷 

HypCommonPreLoad (はいぱー・こもん・ぷりろーど) のソース :: XOOPS マニア

xpwiki:keyword/HypCommonPreLoadのソース

« Prev[3]  
#nopagecomment
#navi
* HypCommonPreLoad (はいぱー・こもん・ぷりろーど) [#g3254c0b]

#block(class:@round@caution,w:90%){{
//:&font(Red){注意};|
~Ver 20080604 未満では、すべての機能がデフォルトで有効になっていましたが、Ver 20080604 以降では、デフォルト値が変更になり、すべての機能が無効になっています。
~すでに hyp_preload.conf.php にて、独自設定で運用されている場合は、問題ありませんがデフォルト値で運用されている場合は、「[[設定方法>./#y8348a4c]]」を参考に、hyp_preload.conf.php にて設定を行ってください。
}}

アクセス元の検索ワード&エンジン名取得や、検索語のハイライト表示機能、スパム投稿フィルターを組み込む XOOPS Cube 用の Preload Class です。

XOOPS_ROOT_PATH/include/common.php に組み込むことで、XOOPS 2 にも対応できます。

** 組み込み手順 [#qf6be9b3]

*** X-update 利用 [#c817e9ed]

HypCommonPreLoad は、XOOPS Cube Legacy 2.2 以上で動作する X-update に対応しています。

X-update でインストールすることで、ファイル・フォルダの配置やパーミッション設定を自動で行うことができるので、XOOPS Cube Legacy 2.2 以上の環境下では X-update によるインストール&アップデートを強くお勧めします。

HypCommonPreLoad は、X-update 上では "hypconf" としてリストアップされています。

X-update については次のリンクを参照してください。

- [[X-update GitHub:https://github.com/XoopsX/xupdate]]
- [[X-update 最新版のダウンロード:https://github.com/XoopsX/xupdate/zipball/master]]
- [[X-update マニュアル (XUGJ):http://www.xugj.org/modules/xpwiki/?ModuleManuals%2FX-update]]

*** FTP によるアップロード [#pc621159]

+ なにはともあれ、HypCommonFunc をダウンロード、解凍して html 側、xoops_trust_path 側を間違えないようにサーバーにアップロードしてください。
+ Ver 20080604 以降では、すべての機能が無効になっていますので、必要に応じて各機能を有効にしてください。
-- その設定方法は、このページの「[[設定方法>./#y8348a4c]]」をご覧ください。

*** XOOPS Cube の場合 [#zf014fd9]
+ Cube の XOOPS_ROOT_PATH/preload ディレクトリに アーカイブの html/preload/HypCommonPreLoad.class.php をアップロードされていることを確認してください。
+ 完了!

*** XOOPS 2 の場合 [#o79d4795]

+ 以前に HypCommonFunc, 検索語マーカー, BBQあらしお断りシステム などを 組み込んでいた場合は、common.php を元の状態に戻します。
+ 検索語マーカー を組み込んでいた場合は、XOOPS_ROOT_PATH/footer.php を元の状態に戻します。
+ XOOPS_ROOT_PATH/include/common.php を編集します。
    // ############## Include common functions file ##############
    include_once XOOPS_ROOT_PATH.'/include/functions.php';
の&font(Red,b){下};に
    // ############# Set Query Words & Load HypCommonFunction Class #############
    include_once XOOPS_TRUST_PATH . '/class/hyp_common/preload/hyp_preload.php';
    $HypCommonPreLoad = @ new HypCommonPreLoad();
    $HypCommonPreLoad->preFilter();
を挿入。
    if (file_exists('./xoops_version.php')) {
の&font(Red,b){上};に
    // ############# POST Filter with HypCommonPreLoad #############
    $HypCommonPreLoad->postFilter();
を挿入。

以上で完了!

ん〜なんだか面倒だな。って思う人用に 編集済みの &ref(common.php); を用意しました。 :D

** 設定方法 [#y8348a4c]

おおまかな設定は hypconf モジュールで行います。hypconf モジュールは HypCommonFunc に含まれています。サーバーにアップロード後に XOOPS のモジュールのインストールからインストールを行なってください。
インストール後は、モジュール設定から「HypCommonの設定」を選択して適宜設定を行なってください。

*** 更に詳細な設定 [#x3d42641]
-さらに詳細な設定を変えるには XOOPS_TRUST_PATH/class/hyp_common/preload/hyp_preload.conf.php.rename を hyp_preload.conf.php にリネームしてその内容を編集します。~
また、このファイルは html側の XOOPS_ROOT_PATH/class/hyp_common ディレクトリに置くこともできます。その場合は html側 が優先されますので、サイトごとに設定を変えることも可能です。
|~パス|~ファイル名|~優先度|~備考|h
|XOOPS_ROOT_PATH/class/hyp_common/|hyp_preload.conf.php|1|編集可|
|XOOPS_TRUST_PATH/class/hyp_common/preload/|hyp_preload.conf.php|2|編集可|
|XOOPS_TRUST_PATH/class/hyp_common/preload/|hyp_preload.php|3|編集不可(デフォルト値)&br;上記2つのファイルが存在しない場合このファイル内の設定値が適用されます。|
-文字エンコーディングを EUC-JP 以外にして XOOPS を運用している場合(UTF-8など)は、html側のXOOPS_ROOT_PATH/class/hyp_common/hyp_preload.conf.php をその文字エンコーディングで保存してください。
-設定箇所は以下の部分です。
#code(php,15-){{
		// 各機能のメインスイッチ (On = 1, Off = 0)
		$this->use_set_query_words   = 0; // 検索ワードを定数にセット
		$this->use_words_highlight   = 0; // 検索ワードをハイライト表示
		$this->use_proxy_check       = 0; // POST時プロキシチェックする
		$this->use_dependence_filter = 0; // 機種依存文字フィルター
		$this->use_post_spam_filter  = 0; // POST SPAM フィルター
		$this->post_spam_trap_set    = 0; // 無効フィールドのBot罠を自動で仕掛ける
		$this->use_k_tai_render      = 0; // 携帯対応レンダーを有効にする
		$this->use_smart_redirect    = 0; // スマートリダイレクトを有効にする
				
		// 各種設定
		$this->configEncoding = 'EUC-JP'; // このファイルの文字コード
		
		$this->encodehint_word = 'ぷ';    // POSTエンコーディング判定用文字
		$this->encodehint_name = 'HypEncHint'; // POSTエンコーディング判定用 Filed name
		$this->detect_order = 'ASCII, JIS, UTF-8, eucJP-win, EUC-JP, SJIS-win, SJIS';
		
		$this->msg_words_highlight = 'これらのキーワードがハイライトされています'; 
		
		$this->no_proxy_check  = '/^(127\.0\.0\.1|192\.168\.1\.)/'; // 除外IP
		$this->msg_proxy_check = 'Can not post from public proxy.';
		
		// POST SPAM
		$this->use_mail_notify    = 1;    // POST SPAM メール通知 0:なし, 1:SPAM判定のみ, 2:すべて
		$this->send_mail_interval = 60;   // まとめ送りのインターバル(分) (0 で随時送信)
		$this->post_spam_a   = 1;         // <a> タグ 1個あたりのポイント
		$this->post_spam_bb  = 1;         // BBリンク 1個あたりのポイント
		$this->post_spam_url = 1;         // URL      1個あたりのポイント
		$this->post_spam_host  = 31;      // Spam HOST の加算ポイント
		$this->post_spam_word  = 10;      // Spam Word の加算ポイント
		$this->post_spam_filed = 51;      // Spam 無効フィールドの加算ポイント
		$this->post_spam_trap  = '___url';// Spam 罠用無効フィールド名
		
		$this->post_spam_user  = 50;      // POST SPAM 閾値: ログインユーザー
		$this->post_spam_guest = 15;      // POST SPAM 閾値: ゲスト
		$this->post_spam_badip = 100;      // アクセス拒否リストへ登録する閾値
	
		// POST SPAM のポイント加算設定
		$this->post_spam_rules = array(
			// 同じURLが1行に3回 11pt
			"/((?:ht|f)tps?:\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+).+?\\1.+?\\1/i" => 11,
			
			// 65文字以上の英数文字のみで構成されている 15pt
			// '/^[\x00-\x7f\s]{65,}$/' => 15,
			
			// 無効な文字コードがある 31pt
			'/[\x00-\x08\x11-\x12\x14-\x1f\x7f]+/' => 31
		);
		
		// 無効なフィールド定義
		$this->ignore_fileds = array(
			// 'url' => array('newbb/post.php', 'comment_post.php'),
		);
		
		// 検索ワード定数名
		$this->q_word  = 'XOOPS_QUERY_WORD';         // 検索ワード
		$this->q_word2 = 'XOOPS_QUERY_WORD2';        // 検索ワード分かち書き
		$this->se_name = 'XOOPS_SEARCH_ENGINE_NAME'; // 検索元名
	
		// KAKASI での分かち書き結果のキャッシュ先
		$this->kakasi_cache_dir = XOOPS_ROOT_PATH.'/cache2/kakasi/';
		
		// スマートリダイレクトのポップアップ最短秒数
		$this->smart_redirect_min_sec = 5;
		
		/////////////////////////
		// 携帯対応レンダー設定
		
		// 携帯端末判定用 UA 正規表現
		$this->k_tai_conf['ua_regex'] = '#(?:SoftBank|Vodafone|J-PHONE|DoCoMo|UP\.Browser|DDIPOCKET|WILLCOM)#';
		
		// HTML再構築用タグ設定
		$this->k_tai_conf['rebuilds'] = array(
			'headerlogo'     => array( 'above' => '<center>',
			                          'below' => '</center>'),
			'headerbar'      => array( 'above' => '<hr>',
			                          'below' => ''),
			'breadcrumbs'    => array( 'above' => '',
			                          'below' => ''),
			'leftcolumn'     => array( 'above' => '<hr>',
			                          'below' => ''),
			'centerCcolumn'  => array( 'above' => '<hr>',
			                          'below' => ''),
			'centerLcolumn'  => array( 'above' => '',
			                          'below' => ''),
			'centerRcolumn'  => array( 'above' => '',
			                          'below' => ''),
			'content'        => array( 'above' => '<hr>',
			                          'below' => ''),
			'rightcolumn'    => array( 'above' => '<hr>',
			                          'below' => ''),
			'footerbar'      => array( 'above' => '',
			                          'below' => ''),
			'easylogin'      => array( 'above' => '<div style="text-align:center;background-color:#DBBCA6;font-size:small">[ ',
			                          'below' => ' ]</div>'),
			'redirectMessage'=> array( 'above' => '<marquee loop="3">',
			                          'below' => '</marquee>'),
			'blockMenu'      => array( 'above' => '<div style="background-color:#E0EEEE;font-size:small">',
			                          'below' => '</div>'),
			'blockContent'   => array( 'above' => '',
			                          'below' => ''),
			'toMain'         => array( 'above' => '<hr /><div style="text-align:center">',
			                          'below' => '</div>'),
			'subMenu'        => array( 'above' => '<div id="submenu" style="background-color:#ccccff"><h2 style="text-align:center">サブメニュー</h2></div>',
			                          'below' => ''),
		);
		
		// 携帯用XOOPSテーマセット
		$this->k_tai_conf['themeSet'] = 'ktai_default';
		
		// 携帯用XOOPSテンプレートセット
		$this->k_tai_conf['templateSet'] = '';
		
		// 使用テンプレート
		$this->k_tai_conf['template'] = 'default';
		
		// <body> attributes
		$this->k_tai_conf['bodyAttribute'] = '';
		
		// 無効にするブロックの bid (Block Id) (無指定:フィルタリングしない)
		$this->k_tai_conf['disabledBlockIds'] = array();
		
		// 有効にするブロックの bid (Block Id) (無指定:フィルタリングしない)
		$this->k_tai_conf['limitedBlockIds'] = array();
		
		// 常に表示するブロックの bid (Block Id) (メインメニューなど)
		$this->k_tai_conf['showBlockIds'] = array();

		// インラインイメージのリサイズ最大ピクセル
		$this->k_tai_conf['pictSizeMax'] = '200';
		
		// インラインイメージを表示するホスト名(後方一致)
		$this->k_tai_conf['showImgHosts'] = array('amazon.com', 'yimg.jp', 'yimg.com', 'ad.jp.ap.valuecommerce.com', 'ad.jp.ap.valuecommerce.com', 'ba.afl.rakuten.co.jp', 'assoc-amazon.jp', 'ad.linksynergy.com', 'google.com');
		
		// 直接画像を表示するホスト名(後方一致)
		$this->k_tai_conf['directImgHosts'] = array('google-analytics.com');
		
		// リダイレクトスクリプトを経由しないホスト名(後方一致)
		$this->k_tai_conf['directLinkHosts'] = array('amazon.co.jp', 'ck.jp.ap.valuecommerce.com', 'afl.rakuten.co.jp', 'maps.google.com');

		// 外部リンク用リダイレクトスクリプト
		$this->k_tai_conf['redirect'] = XOOPS_URL . '/class/hyp_common/gate.php?way=redirect&amp;_d=0&amp;_u=0&amp;_x=0&amp;l=';
		
		// Easy login を有効にする
		$this->k_tai_conf['easyLogin'] = 1;
		// Easy login で IP アドレス帯域をチェックしない
		$this->k_tai_conf['noCheckIpRange'] = 0;
		
		// リンクメッセージ
		$this->k_tai_conf['msg']['easylogin'] = '簡単ログイン';
		$this->k_tai_conf['msg']['logout'] = 'ログアウト';
		$this->k_tai_conf['msg']['easyloginSet'] = '簡単ログイン:設定';
		$this->k_tai_conf['msg']['easyloginUnset'] = '簡単ログイン:解除';
		$this->k_tai_conf['msg']['toMain'] = '本文を表示';
		$this->k_tai_conf['msg']['mainMenu'] = 'メインメニュー';
		$this->k_tai_conf['msg']['subMenu'] = 'サブメニュー';
		
		// アイコン
		$this->k_tai_conf['icon']['first']   = '((s:465d))';
		$this->k_tai_conf['icon']['prev']    = '((s:465b))';
		$this->k_tai_conf['icon']['next']    = '((s:465a))';
		$this->k_tai_conf['icon']['last']    = '((s:465c))';
		$this->k_tai_conf['icon']['extLink'] = '((i:f8d9))';
		$this->k_tai_conf['icon']['hTag']    = '((i:f8e4))';
		$this->k_tai_conf['icon']['RSS']     = '((e:f699))';
		
		$this->k_tai_conf['icon']['toMain']  = '((e:f7e4))';
		
		// style
		$this->k_tai_conf['style']['highlight'] = 'background-color:#ffc0cb';
		
		// Easy login: 設定 or 解除リンクを表示するURI(XOOPS_URL以降)とuidのGETキーと挿入位置
		$this->k_tai_conf['easyLoginConfPath'] = '/userinfo.php';
		$this->k_tai_conf['easyLoginConfuid'] = 'uid';
		$this->k_tai_conf['easyLoginConfInsert'] = 'content';
		
		// GET query keys
		$this->k_tai_conf['getKeys']['page'] = '_p_';
		$this->k_tai_conf['getKeys']['hash'] = '_h_';
		$this->k_tai_conf['getKeys']['block'] = '_b_';
		
		//// Google Adsense 設定
		// config ファイルのパス
		$this->k_tai_conf['googleAdsense']['config'] = '';
		// 挿入場所 ('header', 'body', 'footer') の下、無指定時はページ最上部
		$this->k_tai_conf['googleAdsense']['below'] = '';
		
		// Google Analytics 設定
		$this->k_tai_conf['googleAnalyticsId'] = '';
		
		// 携帯対応レンダー設定 以上
		/////////////////////////////
}}

-検索ワードの分かち書き機能を利用する場合は、サーバーに KAKASI がインストールされていて、その KAKASI のパスを XOOPS_TRUST_PATH/class/hyp_common/hyp_kakasi.php 内で適切に設定する必要があります。
-KAKASI での分かち書き結果のキャッシュ を有効にするには、"$this->kakasi_cache_dir" で指定したディレクトリにファイル作成権限(707, 777 など)を与える必要があります。

*** 各機能の詳細説明 [#vd0c8534]
**** 検索ワードを定数にセット [#ee7818e8]

サイト内検索や検索エンジンの検索結果から移動してきた場合に、ユーザーの検索語を定数にセットします。

**** 検索ワードをハイライト表示 [#q4073e75]

ページ内の検索された語句をハイライト表示します。ちょうど、Google などのキャッシュ表示のような感じです。

**** POST時プロキシチェックする [#v2279873]

公開プロキシ経由のフォームからの投稿・登録処理を拒否します。

**** 機種依存文字フィルター [#efba8454]

Windows の機種依存文字をチェックし、代替文字に置換します。

**** POST SPAM フィルター [#af96dd9a]

フォームから投稿・登録処理の送信内容をチェックしスパムと判定した場合、即刻 exit() します。(真っ白なページになります)

スパム判定の仕組みは、<a>タグ、BBコードリンク、URL などの個数をチェックし、設定されたポイントを加算していき、閾値を超えたものをスパムと判定します。

閾値は、ゲスト・登録ユーザーと分けて設定できます。

***** 禁止語句と禁止URLの設定 [#j77a656f]

禁止語句と禁止URLは予め主なものが、"trust/class/hyp_common/dat" ディレクトリの "spamwords.dat" と "spamsites.dat" にて設定されています。

これらに追加設定したい場合は、"trust/class/hyp_common/config" ディレクトリの "spamwords.conf.dat.rename" と "spamsites.conf.dat.rename" をそれぞれ "spamwords.conf.dat" と "spamsites.conf.dat" にリネームしてそれらのファイルに行単位で追記していきます。

"spamwords.conf.dat" の1行目は、そのファイルの文字エンコーディングをあらわしています。初期状態では、"@ UTF-8" になっていますので、UTF-8 にて保存してください。もし、EUC-JP で保存したいなら、一行目を "@ EUC-JP" とします。

**** 無効フィールドのBot罠を自動で仕掛ける [#a1bd4d0b]

通常のブラウザには表示されないフィールドを「SPAMボット」用に仕掛けて、そのフィールドに値が入っている場合に特別のポイント加算をします。

**** 携帯対応レンダーを有効にする [#ib8cb053]

携帯電話用に出力を再構成する「携帯対応レンダー」機能を有効にします。

設定等詳しくは、[[./KtaiRender]] をご覧ください。

[[nao-pon/blog/2008-06-17 [プリロードで携帯対応する [ 携帯対応レンダー ] ] - UsersWiki:http://xoops.hypweb.net/modules/UsersWiki/person/nao-pon/blog/2008-06-17]] に開発時の日記もあります。

*** 検索語マーカー用のCSSについて~ [#y53ed636]
CSS は XOOPS_ROOT_PATH/xoops.css に追加するとよいでしょう。~
※ background: url(&font(Red,b){/xoops/images/ext.png};) center right no-repeat;~
 この部分の&font(Red,b){赤字};の部分は適宜環境に応じて書き換えてください。
#code(css){{
a.ext
{
	background: url(/xoops/images/ext.png) center right no-repeat;
	padding-right: 12px;
}

strong.word0 {
	background-color:#FFFF66;
	color:black;
}

strong.word1 {
	background-color:#A0FFFF;
	color:black;
}

strong.word2 {
	background-color:#99FF99;
	color:black;
}

strong.word3 {
	background-color:#FF9999;
	color:black;
}

strong.word4 {
	background-color:#FF66FF;
	color:black;
}

strong.word5 {
	background-color:#880000;
	color:white;
}

strong.word6 {
	background-color:#00AA00;
	color:white;
}

strong.word7 {
	background-color:#886800;
	color:white;
}

strong.word8 {
	background-color:#004699;
	color:white;
}

strong.word9 {
	background-color:#990099;
	color:white;
}
}}

#navi

« Prev[3]