**[[質問箱4/190]] [#i54289cb] #author("2018-03-11T19:53:45+09:00;2009-09-07T00:45:13+09:00","","") **[[質問箱/4190]] [#i54289cb] |RIGHT:70|LEFT:410|c |~カテゴリ|| |~サマリ|特定IPからのみ編集できるようにしたい| |~バージョン|1.4.7_notb| |~投稿者|[[double]]| |~状態|完了| |~投稿日|&new{2007-11-15 (木) 09:18:28};| ***質問 [#k72da221] 基本的に「閲覧のみ」として稼動させ、特定(1個)のIPからは認証することなく編集可能にさせたいと考えています。 どのようにしたら簡単でしょうか? アドバイスお願いします。 ***回答 [#v3b44f65] - 試作ともいえないような物ですが。&br;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); 昔、試しに作りかけた物なので、不都合があるかもしれません。&br;「IP を指定」とコメントしてあるところに、内部のIP を指定(&color(red){間違っても外部のIP を指定しないようにしてください};)。&br;特定以外は閲覧のみにしたいということなので、profile 名に内部用のプロファイルを指定して、そのプロファイルには define('PKWK_READONLY', 0); を書いておく。pukiwiki.ini.php やindex.phpからは、PKWK_READONLY 定数の定義を消すかコメントアウト。&br;外部用のプロファイル(default.ini.php など)全部に define('PKWK_READONLY', 1); を書いておくか、「UserAgentの識別」の最後に if (! defined('PKWK_READONLY')) define('PKWK_READONLY', 1); と書いておく。 -- &new{2007-11-15 (木) 19:38:55}; -- 作りかけなので、IP 1つしか指定できなかったりと、いろいろアレな部分満載です。もし使うのなら、ちゃんと、テストしてから実運用に入ってください。 -- &new{2007-11-15 (木) 19:38:55}; -- 書き忘れ。''自分がサーバ持ってないと上の方法は使えません''。その場合は、[[dev:BugTrack/744]] にある各関連リンク先を参照してください。 -- &new{2007-11-15 (木) 23:03:12}; - ありがとうございました。プロファイルを複数作り、それを読み分けるということを知りませんでした。おかげさまで制御が出来るようになりました。ありがとうございました。 -- [[double]] &new{2007-11-16 (金) 09:50:37}; //#comment