- 追加された行はこの色です。
- 削除された行はこの色です。
**[[続・質問箱/146]] [#o06637dc]
|RIGHT:70|LEFT:410|c
|~サマリ|編集者のIPを取りたい|
|~バージョン|1.4.3|
|~投稿者|[[TOMON]]|
|~状態|完了|
|~投稿日|&new{2004-05-06 (THU) 22:21:16};|
***質問 [#vf30d72f]
嵐が多くて困っています。
ページを編集した人のIPを記録するには
どうすればよいでしょうか。
***回答 [#v47446f3]
-[[reimy]] &new{2004-05-07 (FRI) 06:32:11};
~init.phpで
// 初期設定 (サーバ変数)
foreach (array('HTTP_USER_AGENT','PHP_SELF','SERVER_NAME','SERVER_SOFTWARE','SERVER_ADMIN','REMOTE_ADDR') as $key) {
define($key,array_key_exists($key,$_SERVER) ? $_SERVER[$key] : '');
}
というようにREMOTE_ADDRを追加し、file.phpのfunction page_writeの中で、REMOTE_ADDRの内容をファイル出力するように改造すれば、書き込みをした人のIPを記録することができます。
-[[TOMON]] &new{2004-05-08 (SAT) 11:48:10};
~file.phpの改造の仕方もお願い致します。
-[[名無しさん]] &new{2004-05-08 (SAT) 20:48:00};
~どのような形でファイル出力したいのかによって、改造の仕方はいくらでもあります。
--- file.php.orig Sat Mar 20 22:43:58 2004
+++ file.php Sat May 8 20:47:20 2004
@@ -54,6 +54,13 @@
// linkデータベースを更新
links_update($page);
+
+ // REOMTE_ADDRのファイル書出し
+ $fp = fopen(DATA_DIR.encode('iplog').'.txt', 'a');
+ flock( $fp, LOCK_EX);
+ fputs( $fp, '|'.date("r").'|'.REMOTE_ADDR.'|[['.$page."]]|\n");
+ flock( $fp, LOCK_UN);
+ fclose( $fp);
}
// ユーザ定義ルール(ソースを置換する)
例えば、こうすればページ'iplog'に日付、REMOTE_ADDR、編集ページ名
を追記していくようになります。'iplog'に対しては閲覧・編集制限を加えて
おくと良いでしょう。
~一応、例として書いてみましたが、使い勝手やプライバシポリシー等、よく考えてからやるべきです。
-[[TAMON]] &new{2004-05-09 (SUN) 15:10:27};
~txtファイルに出力したいのですが、どうすればよいのでしょうか。
-[[TOMON]] &new{2004-05-09 (SUN) 15:37:47};
~txtへの出力は自力でできました。
--[[reimy]] &new{2004-05-09 (SUN) 16:36:28};
~.htaccessで
Order allow,deny
Deny from all
を忘れずに。
-[[TOMON]] &new{2004-05-09 (SUN) 15:38:26};
~もう1つ質問ですが、ホストは取得できないのでしょうか。
-[[名無しさん]] &new{2004-05-09 (SUN) 16:12:19};
~もちろん出来る筈です。REMOTE_HOSTが取れないサーバ設定であっても、[[gethostbyaddr:http://jp.php.net/manual/ja/function.gethostbyaddr.php]]でREMOTE_ADDRから生成すれば良いでしょう。
~もはやPukiWikiの質問ではありませんね。
-[[TAMON]] &new{2004-05-09 (SUN) 23:06:24};
~皆さんありがとうございました。無事解決しました。
#comment