開発のページ
Webはくしゅ(sxWebClap)ver1.41
機能と説明
ホームページの各コンテンツに対して「拍手」ボタンを表示します。
「拍手」された回数をそれぞれのコンテンツごとおよび期間ごとに集計します。
「拍手」時に「一言メッセージ」の入力を求め、入力されたメッセージを記録します。
レポート表示にてコンテンツごとの拍手回数と最新のメッセージ一覧を表示しますfrom ver 1.2
ページごとのメッセージ一覧を表示します。(レポートからのリンク)from ver 1.2
複数のサイト(別スペース)からの拍手を受け付けることができます
……from ver 1.2
携帯電話での拍手および閲覧に対応しています
……from ver 1.3
スクリプト(UTF-8)と文字コードの異なるページからの拍手も受け付けます
……from ver 1.4
拍手ボタンにこれまでの拍手数を表記できます
……from ver 1.4
使用方法
このスクリプトは、単独動作、および埋め込み動作の両方に対応しています。
「単独動作」
拍手確認やレポート報告にメインスクリプト(sx_webclap.php)を直接呼び出します。通常使用であれば、これで問題ありません。
「埋め込み動作」
スタイルの統一などの理由でメインスクリプトを別のphpからインクルード(埋め込み)して使う場合。
"sx_webclap.php"はhtmlを書き出しはせず、結果を変数($WbcBuff)に格納して戻します。
実際の運用には、初期設定で若干の手直しが必要です。(呼び出し用アドレスの記述など)
[PIC]
[PIC]
「Webはくしゅ」ボタンをクリックすると、拍手のお礼画面が表示され、同時に一言メッセージの入力フォームが表示されます。
一言メッセージの入力は任意であり、ページには「もとのページに戻る」リンクも存在します。また、同じページに対して投稿された一言メッセージの一覧が表示されています。
[PIC]
一言メッセージを投稿した場合、不正投稿等の判定処理をした上でメッセージのお礼画面が表示されます。
sx_webclap.php内部で行っている不正判定は以下の通りです。
未記入投稿
http href @ の文字を含んでいる
日本語が使われていない
よって、海外スパム等による不正投稿はほぼ遮断できるはずです。
[PIC]
メインとなるスクリプト($sx_WebClapSelfに設定したもの)を呼び出すとレポート(報告)表示画面となります。
レポート表示では、拍手のあったページすべてのそれぞれの拍手数をランキング表示し、最新の一言メッセージのリストを表示します。
そこでは、「今日の拍手」「昨日の拍手」「過去1週間」「過去1ヶ月」「過去1年」でのそれぞれの期間別での拍手ランキングを表示することができます。(デフォルトは「今日の拍手」)
またこの画面ではタイトル部分をクリックすると、そのページにジャンプします。
[PIC]
またランキング右端の[Msg]をクリックすると、そのタイトルに対してのみ投稿されたメッセージのリストを表示します。
$WbcAddr = $_SERVER['REQUEST_URI'];
include("./clap/sx_webclap.php");
echo $WbcBuff;
?>
(説明)
$WbcTitleにページ名を格納して呼び出すとsx_webclap.phpはボタンを
表示するためのhtml文を$WbcBuffに格納して返します。
(単独、埋め込み両方とも)
また、$WbcAddrにはそのページ名に対応するアドレスを格納します。
通常は呼び出した当のページなので上の記述で構いません。
また、$WbcAddrが空のときはスクリプト内部で$_SERVER['REQUEST_URI']
を補完いたします。
また、次のように記述することも多いと思います。
(記述例2 一度変数にhtml文を格納し、最後に表示させている場合)
$htmlBuff
……すでに処理済みのhtml文が格納されている。その中で、ボタンを表示させたい場所には{WebClap}と記述してある。
$WbcTitle = "ページタイトル";
include("./clap/sx_webclap.php");
$htmlBuff =str_replace ("{WebClap}",$WbcBuff,$htmlBuff);
echo $htmlBuff;
[3]初期設定(sx_webclap.php)
sx_webclap.phpの上の方にある(cinfig start)から(config end)までの中で、各自の環境に合わせて変更してください。特に重要な部分は動作モードに関係する以下の設定です。
(設定例1)初期値
単独動作モードの場合は変更の必要はありません。
//(config start)
//クッキー、トークンに使うスクリプト固有タグ。
//同じサーバースペースで複数このスクリプトを動かす場合に
//問題が発生しないよう個別化する。
define("SXWBCTAG", "SXWBC");
//このスクリプトの動作モード(0:単独動作/1:埋め込み)
//単独動作:htmlを出力します(echo)
//埋め込み:「$WbcBuff」にhtmlを格納して返します
define("SXWBCMODE", 0);
//トークンによる2重拍手の防止を行う(=1)行わない(=0)
……ver1.2追加
define("SXWBCTOKEN", 1);
//ボタン生成タグの種類
……ver1.2追加
//0:form
//1:a
define("SXWBCBTMF", 0);
//オプションセパレータ(通常は「?」)
//ページ別結果表示など、オプション付きで呼び出す場合に上の
//アドレスにオプションを付けるときに使うセパレータ。
//通常は「?」だが、特殊な呼び出しで$sx_WebClapSelfで既に
//「?」を使ってしまっている場合には「&」で続ける必要がある。
define("SXWBCSPT", "?");
//拍手レポートに使用されるグラフの長さ(最大)
……ver1.2追加
//単位はpxを想定
//グラフ表示するかしないかは、スキン次第
define("SXWBCGLENGS", 300);
//外部サーバー(URLオプション)からの拍手の受け入れを許可(=0)拒否(=1)
……ver1.2追加
define("SXWBCOUTSIDE", 0);
//外部(URLオプション)から拍手を受け付ける場合に許可する相手のURL(前方一致)
……ver1.2追加
define("SXWBCOUTURL", "http://sample.com<>http://sample1.com");
//---------------------
//このスクリプトの呼び出し用アドレス
//埋め込み動作の場合、ここは"sx_webclap.php"であるとは限りません
//sx_webclap.phpからの相対アドレスで記述
//特殊な呼び出し方の場合に注意
$sx_WebClapSelf = 'sx_webclap.php';
//---------------------
//以下のファイルについてはsx_webclap.phpからの相対アドレス
//拍手ログファイル
……ver1.2追加
$sx_WebClapCountLog = 'sx_webclap.log';
//拍手ログファイル(過去ログ)
……ver1.2追加
$sx_WebClapPastLog = 'sx_webclap_past.log';
//拍手カウンタファイル
$sx_WebClapCountFile = 'sx_wbc_count.log';
//拍手メッセージファイル
$sx_WebClapMsgFile = 'sx_wbc_msg.log';
//拍手メッセージファイル(過去ログ)
$sx_WebClapPastFile = 'sx_wbc_past.log';
//スキンファイル
$sx_WebClapSkinFile = 'sx_webclap.html';
//ロックファイル
$sx_WebClapLockFile = 'sx_wbc_lock.txt';
//---------------------
//画面に表示する拍手ランキング数
$sx_WebClapCountLMax = 50;
//最大拍手メッセージ(これ以降は過去ログに保存)
$sx_WebClapMsgMax = 1000;
//画面に表示するメッセージ数
$sx_WebClapMsgLMax = 30;
//---------------------from ver1.4
//拍手・ひとこと投稿があったときの通知先メールアドレス(空白なら通知しない)
$sx_WebClapMailTo = '';
//メール通知の際の送り主(from)に設定するアドレス。変更する必要はない。
$sx_WebClapMailFrom = 'system@webclap.mail';
//(config end)
デフォルトで、トークンによる二重拍手防止はOFFにしました。拍手ログの1行目での判定を行っているので、現実的にトークンを使う必要性はありません。(残っているのは交換性のため)
(設定例2)
sx_webclap.phpと同じフォルダにindex.phpがあり、基本のページを記述した上でその中でsx_webclap.phpを呼び出している場合。
(index.php)
include('sx_webclap.php');
(sx_webclap.php)
define("SXWBCMODE", 0);
define("SXWBCSPT", "?");
$sx_WebClapSelf = './';
(設定例3)
ルートにあるindex.phpですべてのページを記述し、各ページをオプションによって読み込ませている場合。(The Blue and Violet Storyはこの方法でHPを構成しています)
(index.php)
if($_GET["bvs"]){
$bvsmde= $_GET["bvs"];
}
if($bvsmde == 'clap'){
$WbcTitle = ''; //$WbcTitleが空なのでボタン表示以外の処理
include('clap/sx_webclap.php');
}
(sx_webclap.php)
define("SXWBCMODE", 1);
define("SXWBCSPT", "&");
$sx_WebClapSelf = '../?bvs=clap';
(説明)
あくまでレポート表示等を行うために呼び出すアドレスはルートに
あるindex.phpなので、$sx_WebClapSelfにはそのルートまで戻るため
に'../'によって相対アドレッシングをしていることに注意してくださ
い。
また、既にオプション付きで呼び出されていることから、SXWBCSPT
には"?"ではなく"&"を使います。(ver1.0現在、SXWBCSPTは未使用)
複数サーバーでの運用
複数サイトからの拍手受け入れのためにボタン記述専用のスクリプト(sx_webclap_button.php)を用意しました。
中身はメインスクリプトのボタン記述部分を抜き出したもので、拍手元になるサイトに設置して使用します。
なお、あくまで拍手元サイトでのボタン(html)の記述を簡略化させるためのスクリプトであり、かならず必要というものではありません。
それ以前に、拍手元サイトがphpを使えない環境の場合は必然的に手作業でのボタンフォームあるいはAタグを記述することになります。
[1]sx_webclap.phpの設定
以下の2か所の設定を確認してください。デフォルトでは受け入れを許可しています。また、受け入れ元のURLを特定するために、SXWBCOUTURLを正しく設定してください。(ここに設定されたURL以外からの拍手は拒否されます)
//外部サーバー(URLオプション)からの拍手の受け入れを許可(=0)拒否(=1)
……ver1.2追加
define("SXWBCOUTSIDE", 0);
//外部(URLオプション)から拍手を受け付ける場合に許可する相手のURL(前方一致)
……ver1.2追加
define("SXWBCOUTURL", "http://hoge.hoge<>http://hoge2.hoge<>http://hoge3.hoge""ページタイトル";
$WbcAddr = $_SERVER['REQUEST_URI'];
include("./clap/sx_webclap_button.php");
echo $WbcBuff;
?>
なお、拍手ボタンに相当するhtml(フォームあるいはリンク)を自前で記述ないし生成する場合は、sx_webclap_button.phpは必要ありません。
(参考 拍手リンク例)
<a href="http://hoge.hoge/clap/sx_webclap.php?wbc=clap&title=(タイトル)&code=UTF-8" target="_self">(ボタン画像)</a>
(タイトル)に日本語を使用する場合はurlencodeされたものである必要があることに注意してください。
また、ターゲット属性は「_self」ですメインスクリプト側で、リンク元URLを参照します。
なお、ver1.4から明示的に拍手元ページの文字コードを指定できるようになっています。
[3]sx_webclap_button.phpの設定
//(config start)
//このスクリプトの動作モード(0:単独動作/1:埋め込み)
//単独動作:htmlを出力します(echo)
//埋め込み:「$WbcBuff」にhtmlを格納して返します
define("SXWBCMODE", 1);
//拍手投稿受け入れスクリプトのアドレス
//絶対参照で記述
//特殊な呼び出し方の場合に注意
define("SXWBCMAIN", 'http://sample.com/clap/sx_webclap.php');
//Web拍手ボタンに使用する画像のURL
//絶対参照で記述
//define("SXWBCBTMIMG""SXWBCBTMIMG", 'http://sample.com/clap/sx_wbc_imgbutton.php');
//生成タグの種類
//0:form
//1:a
define("SXWBCBTMF", 0);
//オプションセパレータ(通常は「?」)
//ページ別結果表示など、オプション付きで呼び出す場合に上の
//アドレスにオプションを付けるときに使うセパレータ。
//通常は「?」だが、特殊な呼び出しでSXWBCMAINで既に
//「?」を使ってしまっている場合には「&」で続ける必要がある。
define("SXWBCSPT", "?");
//---------------------
SXWBCMAINおよびSXWBCBTMIMGが絶対参照であることに留意してください。
なお、ここでのSXWBCMODEは、メインスクリプトではなく「sx_webclap_button.php」に適用されますので、単独動作(=0)にした場合、$WbcBuffに格納するだけでなく、html出力します。(上の例であればechoが不要になります)
文字コードについて
Webはくしゅ(sxWebClap)では、スクリプトおよび各ログファイルの文字コードにUTF-8を使用しています。もちろん、運用されるサイト自体の文字コードについても、同様にUTF-8であることを前提としていますが、複数サイトからの拍手受付を可能としたことから、必ずしも周囲が同じUTF-8とは限らない状況が考えられることから、ver1.4より拍手元ページの文字コードを判別する機能を追加しました。
具体的にはスキンの拍手ボタン記述部分にあるように、フォームではsx_clapJCode、Aタグではcodeにそのページの文字コードを明記できるようにしました。
これにより、スクリプト側では、正しく文字コードを内部コードであるUTF-8に変換してログに記録、表示できるようになります。
もちろん、これらが記述されていない場合は"auto"によって自動判別します。
なお、文字コードについては他にURLエンコードの問題があります。
ボタン表示にフォームを用いている場合は内部で処理されるため問題は生じませんが、Aタグによる表記であった場合、オプションにて渡されるタイトルなどはURLエンコードされている必要がありますので注意してください。
更新
2008.7.5(ver 1.0)
公開
2008.7.21(ver 1.2)
拍手ログを残すようにした
期間ごとの拍手ランキング表示
外部スペースからの拍手の受け入れ
拍手ボタンにform a(link)選択
2009.2.1(ver 1.3)
……未公開
携帯対応(スキンを用意しただけ)
2009.8.14(ver 1.4)
二重クリック対策の微調整
拍手・ひとこと投稿通知メール追加
拍手ボタンにカウント数付加機能を追加
拍手元ページの文字コードに対応
2010.5.26(ver 1.41)
携帯閲覧時の不都合の修正