&pgid();
 
 - スパム防止用のPukiWikiライブラリの公開用ページです。
 
 ** 目次 [#x9a15d0e]
 #contents
 
 ** 名前 [#ca867f52]
  reCAPTCHA プラグイン - spamボットのいたずら書き込みに対応するPukiWikiプラグイン
  
  Version 1.0.0
  Copyright (C)
  2008 ARK-Web co,. ltd.
  License: GPL version 2 or (at your option) any later version
 
 ** 対象バージョン [#m3b120b4]
 - 対象のpukiwikiのバージョンは EUC-JP版の pukiwiki-1.4.7_notb です。
 http://pukiwiki.sourceforge.jp/?PukiWiki%2FDownload%2F1.4.7
 -- EUC-JP版の pukiwiki-1.4.6 での動作確認が取れました。
 
 *** 必須環境 [#k412624a]
 本プラグインが動作する環境として、COLOR(red){''PEAR本体''と「''HTTP::Request''」および「''Net::URL''」が必要}です。
 
 ホスティングを借りていてPEAR環境を更新できない場合は↓こちらの方法で自分のホームディレクトリに環境が作れます。
 
 - 共有ホストでの PEAR のローカルコピーのインストール
 http://pear.php.net/manual/ja/installation.shared.php
 
 ** ダウンロード [#eb100ef1]
 - reCAPTCHA.tgz (64KB)
 #ref(reCAPTCHA.tgz)
 
 - reCAPTCHA.zip (68KB)
 #ref(reCAPTCHA.zip)
 
 #blikimore
 
 ** reCAPTCHAとは [#tb5dd840]
 #ref(demo_img.gif)
 
 reCAPTCHAの説明の前に『CAPTCHA(キャプチャ)』はご存知でしょうか?
 Yahoo!の新規登録など、Webサービスでよく使われるようになってきている、画像文字の内容を入力させるアレです。
 
 CAPTCHAの目的は『人間』と『コンピュータ(SpamBot)』を見分けることにあります。画像文字はバイナリデータなので
 コンピュータにはすぐには分かりませんが、人間には目で見たり音声で確認すれば短時間で対応できます。 
 
 それを書籍のデジタル化に有効活用するように目を向けたのがreCAPTCHAです。reCAPTCHAでは画像文字に単語が2つ出てきます。
 このうち1つはCAPTCHAと同じように予め答えの分かっているもので、もう1つはOCRで読み取れなかった単語です。
 
 CAPTCHAのしくみ上、ユーザは「両方正しい単語を入れるだろう」ということで成り立っています。
 
 英語ですが下記のreCAPTCHA公式サイトに詳細な説明があります。
 
 http://recaptcha.net/learnmore.html
 
 ** pukiwkikiのreCAPTCHAモジュールの特徴 [#td83654b]
 - ページを読むだけの閲覧者にはreCAPTCHAによる認証の必要がありません
 
 - 1回reCAPTCHAで認証が取れると、ブラウザを閉じるまで編集が許可されます
 
 - reCAPTCHAで認証が必要となるプラグインを選択できます
 
 - 閲覧者のブラウザがJavaScriptを利用可能なようであれば、モーダルダイアログ中で認証を済ませられます
 
 ** reCAPTCHAモジュールのデモ [#d4912d13]
 導入前にまずどのような機能なのかを知っていただくために、デモ環境を用意しました。
 
 http://www.ark-web.jp/sandbox/recaptcha/pukiwiki
 ※デモ環境は毎日6時に元に戻されます
 
 ** インストール [#w59b8017]
 0.ファイルのバックアップを取ります。
 
 1.pukiwikiがインストールされているディレクトリに、pukiwiki配下をアップロードします。
 
 2.pukiwikiのベースファイル(4ファイル分)に追記します。
  ※追記箇所には全て「// -> (...)」と「// <- (...)」が書いてあります。
 
 2-1.index.phpの先頭に下記のコードを追加します。
 
  		// Copyright (C) 2001-2006 PukiWiki Developers Team
  		// License: GPL v2 or (at your option) any later version
  
  		// -> 2008.02.26 s.g.kohata(reCaptcha)
  		// session
  		session_start();
  		// <- 2008.02.26 s.g.kohata(reCaptcha)
  
  		// Error reporting
  		//error_reporting(0); // Nothing
 
 2-2.lib/init.phpに下記のコードを追加します。
 
  		define('UA_NAME', isset($user_agent['name']) ? $user_agent['name'] : '');
  		define('UA_VERS', isset($user_agent['vers']) ? $user_agent['vers'] : '');
  		unset($user_agent);	// Unset after reading UA_INI_FILE
  
  		// -> 2008.02.26 s.g.kohata(reCaptcha)
  		/////////////////////////////////////////////////
  		// recaptchaプラグインのチェック
  		define('RECAPTCHA_INI_FILE',  PLUGIN_DIR . 'recaptcha.ini.php');
  		if (! file_exists(INI_FILE) || ! is_readable(INI_FILE)) {
  			define('RECAPTCHA_EXIST', false);
  		} else {
  			require(RECAPTCHA_INI_FILE);
  			define('RECAPTCHA_EXIST', true);
  		}
  		// <- 2008.02.26 s.g.kohata(reCaptcha)
  
  		/////////////////////////////////////////////////
  		// ディレクトリのチェック
 
 2-3.skin/pukiwiki.skin.phpに下記のコードを追加します。2箇所あります。
 
  		 <link rel="stylesheet" type="text/css" media="print"  href="skin/pukiwiki.css.php?charset=<?php echo $css_charset ?>&amp;media=print" charset="<?php echo $css_charset ?>" />
  		 <link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo $link['rss'] ?>" /><?php // RSS auto-discovery ?>
  		<?php
  		// -> 2008.02.26 s.g.kohata(reCaptcha)
  		if (defined('RECAPTCHA_ENABLE_PLUGINS'))
  			print recaptcha_get_script();
  		// <- 2008.02.26 s.g.kohata(reCaptcha)
  		?>
  		<?php if (PKWK_ALLOW_JAVASCRIPT && $trackback_javascript) { ?> <script type="text/javascript" src="skin/trackback.js"></script><?php } ?>
  
  		<?php echo $head_tag ?>
  
  		(...)
  
  		<?php } ?>
  
  		<?php echo $hr ?>
  
  		<?php
  			// -> 2008.02.26 s.g.kohata(reCaptcha)
  			if (defined('RECAPTCHA_ENABLE_PLUGINS')) {
  				if (!is_recaptcha_checked()) {
  					global $safari_version;
  					if ($safari_version < 500) {
  						echo RECAPTCHA_SAFARI_MESSAGE;
  						echo $hr;
  					}
  				}
  			}
  			// <- 2008.02.26 s.g.kohata(reCaptcha)
  		?>
  
  		<?php if (PKWK_SKIN_SHOW_TOOLBAR) { ?>
  		<!-- Toolbar -->
  		<div id="toolbar">
 
 2-4.lib/pukiwiki.phpに下記のコードを追加します。2箇所あります。
 
  		/////////////////////////////////////////////////
  		// Include subroutines
  
  		// -> 2008.02.26 s.g.kohata(reCaptcha)
  		// safariのバージョン確認
  		// Mozilla/5.0 (Macintosh; U; Intel Mac OS X; ja-jp) AppleWebKit/418 (KHTML, like Gecko) Safari/417.9.3
  		if (preg_match("/Safari\/([0-9\.]+)$/", $_SERVER['HTTP_USER_AGENT'], $version))
  			$safari_version = (int)$version[1];
  		else
  			$safari_version = 500;
  		// <- 2008.02.26 s.g.kohata(reCaptcha)
  
  		if (! defined('LIB_DIR')) define('LIB_DIR', '');
  
  		require(LIB_DIR . 'func.php');
  
  		(...)
  
  		if ($plugin != '') {
  			// -> 2008.02.26 s.g.kohata(reCaptcha)
  			// recaptchaが必要なページか確認
  			if (defined('RECAPTCHA_ENABLE_PLUGINS')) {
  				// recaptcha用リダイレクト
  				if ($_GET['plugin'] == 'recaptcha') {
  					if ($_GET['action'] == 'status') {
  						header("location: ../plugin/recaptcha.ini.php?action=status");
  						exit;
  					}
  					else if ($_GET['action'] == 'window') {
  						header("location: ../plugin/recaptcha.ini.php?action=window");
  						exit;
  					}
  				}
  				if (is_recaptcha_necessary($plugin)) {
  					// 再ポスト時に一時的に無効化
  					if (isset($_POST['recaptcha_check']) &&
  						$_POST['recaptcha_check'] == 'false')
  							;
  					else {
  						// チェック済みでない場合のみ
  						if (!is_recaptcha_checked()) {
  							// POSTアドレス
  							$_SESSION[RECAPTCHA_SESSION_POSTURL] = $_SERVER['REQUEST_URI'];
  							// 戻りアドレス
  							if (substr($_SERVER['REQUEST_URI'], -9) == "index.php")
  								$_SESSION[RECAPTCHA_SESSION_RETURL] = $_SERVER['HTTP_REFERER'];
  							else
  								$_SESSION[RECAPTCHA_SESSION_RETURL] = $_SERVER['REQUEST_URI'];
  							// POST,GETデータ
  							$_SESSION[RECAPTCHA_SESSION_HTTP_POST] = $_POST;
  							$_SESSION[RECAPTCHA_SESSION_HTTP_GET]  = $_GET;
  							$_SESSION[RECAPTCHA_SESSION_AGENT]     = $_SERVER['HTTP_USER_AGENT'];
  							$_SESSION[RECAPTCHA_SESSION_COOKIE]    = $_COOKIE;
  							header("location: index.php?plugin=recaptcha");
  							exit;
  						}
  					}
  				}
  			}
  			// <- 2008.02.26 s.g.kohata(reCaptcha)
  			if (exist_plugin_action($plugin)) {
  				// Found and exec
  				$retvars = do_plugin_action($plugin);
  				if ($retvars === FALSE) exit; // Done
 
 3.reCAPTCHAのサイトで、利用登録をします。
  http://recaptcha.net/whyrecaptcha.html の[Sign up Now!]で利用登録が可能です。
 
 4.plugin/recaptcha.ini.phpを開いて下記の設定します。
 
 4-1.『RECAPTCHA_PUBLICKEY』と『RECAPTCHA_PRIVATEKEY』に3.で登録した公開キーと秘密キーを入れます。
  // http://recaptcha.net/whyrecaptcha.html の[Sign up Now!]で登録した値の設定
  define('RECAPTCHA_PUBLICKEY',         '公開キーを入れてください');
  define('RECAPTCHA_PRIVATEKEY',        '秘密キーを入れてください');
 
 4-2.『RECAPTCHA_ENABLE_PLUGINS』にreCAPTCHAの認証が必要になるプラグイン名を ,(カンマ)区切りで入れます。
  デフォルトは『comment,newpage,edit,memo,memo2,vote,tracker』が指定してあります。
  // reCAPTCHAの対象とするプラグイン名
  define('RECAPTCHA_ENABLE_PLUGINS',    'comment,newpage,edit,memo,memo2,vote,tracker');
 
 4-3.pukiwikiにBASIC認証がかかっている場合は、ユーザ名とパスワードを
  『RECAPTCHA_BASICAUTH_USER』と『RECAPTCHA_BASICAUTH_PW』に入れます。
  ※BASIC認証がない場合はそのままで結構です。
  // pukiwikiへのアクセスにBASIC認証が必要になる場合は登録します
  define('RECAPTCHA_BASICAUTH_USER',    '');
  define('RECAPTCHA_BASICAUTH_PW',      '');
 
 5.動作確認として、pukiwikiを開いてページの「編集」ボタンをクリックした後で、
  reCAPTCHAの認証が表示されるので、2つの単語を入力して[確認]をクリックします。
  その後、ページ新規作成のテキストフィールドが表示されるようなら設定完了です。
 
 ** 更新履歴 [#ffb169cb]
 - 2008/05/08  第一次公開
 - 2008/04/16  ベータ版完成
 
 #blikifooter(竹村)
 - 本家にコントリビュートしました。 -- [[竹村]] &new{2008-05-08 (木) 18:49:51};
 -- http://pukiwiki.sourceforge.jp/?plugin=related&page=%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2FreCAPTCHA.tgz
 -- [[pukiwiki:自作プラグイン/reCAPTCHA.tgz]]
 
 #comment
 
 tag: [[PHP>tag/PHP]], [[PukiWiki>tag/PukiWiki]], [[Spam>tag/Spam]], [[reCAPTCHA>tag/reCAPTCHA]], [[CAPTCHA>tag/CAPTCHA]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら