**[[続・質問箱/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}; ~皆さんありがとうございました。無事解決しました。 - 関連: [[続・質問箱/309]], [[続・質問箱/444]], [[質問箱3/408]], [[質問箱4/170]], [[質問箱4/444]], [[質問箱4/535]], [[欲しいプラグイン/100]], [[欲しいプラグイン/191]] -- &new{2009-12-03 (木) 15:54:34}; //#comment