質問箱/4190

カテゴリ
サマリ特定IPからのみ編集できるようにしたい
バージョン1.4.7_notb
投稿者double?
状態完了
投稿日2007-11-15 (木) 09:18:28

質問

基本的に「閲覧のみ」として稼動させ、特定(1個)のIPからは認証することなく編集可能にさせたいと考えています。 どのようにしたら簡単でしょうか? アドバイスお願いします。

回答

  • 試作ともいえないような物ですが。
    lib/init.php のUserAgentの識別のところを、こんな感じにする。
    /////////////////////////////////////////////////
    // INI_FILE: $agents:  UserAgentの識別
    
    $ua = 'HTTP_USER_AGENT';
    $user_agent = $matches = array();
    
    $user_agent['agent'] = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
    unset(${$ua}, $_SERVER[$ua], $HTTP_SERVER_VARS[$ua], $ua);	// safety
    
    if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') { //IP を指定
    	$user_agent['profile'] = 'default';
    	$user_agent['name']    = 'local';	// device or browser name
    	$user_agent['vers']    = ''; // 's version
    } else {
    	foreach ($agents as $agent) {
    		if (preg_match($agent['pattern'], $user_agent['agent'], $matches)) {
    			$user_agent['profile'] = isset($agent['profile']) ? $agent['profile'] : '';
    			$user_agent['name']    = isset($matches[1]) ? $matches[1] : '';	// device or browser name
    			$user_agent['vers']    = isset($matches[2]) ? $matches[2] : ''; // 's version
    			break;
    		}
    	}
    }
    unset($agents, $matches);
    昔、試しに作りかけた物なので、不都合があるかもしれません。
    「IP を指定」とコメントしてあるところに、内部のIP を指定(間違っても外部のIP を指定しないようにしてください)。
    特定以外は閲覧のみにしたいということなので、profile 名に内部用のプロファイルを指定して、そのプロファイルには
    define('PKWK_READONLY', 0);
    を書いておく。pukiwiki.ini.php やindex.phpからは、PKWK_READONLY 定数の定義を消すかコメントアウト。
    外部用のプロファイル(default.ini.php など)全部に
    define('PKWK_READONLY', 1);
    を書いておくか、「UserAgentの識別」の最後に
    if (! defined('PKWK_READONLY'))
    	define('PKWK_READONLY', 1);
    と書いておく。 -- 2007-11-15 (木) 19:38:55
    • 作りかけなので、IP 1つしか指定できなかったりと、いろいろアレな部分満載です。もし使うのなら、ちゃんと、テストしてから実運用に入ってください。 -- 2007-11-15 (木) 19:38:55
    • 書き忘れ。自分がサーバ持ってないと上の方法は使えません。その場合は、dev:BugTrack/744 にある各関連リンク先を参照してください。 -- 2007-11-15 (木) 23:03:12
  • ありがとうございました。プロファイルを複数作り、それを読み分けるということを知りませんでした。おかげさまで制御が出来るようになりました。ありがとうございました。 -- double? 2007-11-16 (金) 09:50:37

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-07 (月) 00:45:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.206 sec.

OSDN