編集者のログを残す

現在実際に使っているのは、「ファイルに編集・コメント投稿者のログを残す」のみです。

diffで表示した差分の最後に、編集者のIPやUSER AGENT情報などを表示

「差分」の最後に編集者の情報が出るようになる。
抑止力にはなるかもしれないが、これだけだと過去の情報が残らないため不便なことがある。
普通の編集者にとっても不都合なことがあるため微妙。

  • init.php/file.php - 美麻Wiki
    • init.php.patchは、spam_filter.phpの導入で既に適用済みなので不要。
    • file.php.patch
      patch < file.php.patch

最終変更者のIP表示

上記とほぼ同じ。内輪向けWikiで実装している事例はあった。

ファイルに編集・コメント投稿者のログを残す

+	// 初期設定 (サーバ変数)
+	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] : '');
+	}
  • 下記はIPだけでなくホストも取得するようになっています。
	links_update($page);

+	// REOMTE_ADDRのファイル書出し
+	$fp = fopen(DATA_HOME . 'iplog/' . strftime('%y%m%d') . '.ignore.log', 'a');
+	flock( $fp, LOCK_EX);
+	fputs( $fp, '|'.date("Y/m/d H:i:s").'|'.REMOTE_ADDR.'|'.gethostbyaddr(REMOTE_ADDR).'|[['.$page."]]|\n");
+	flock( $fp, LOCK_UN);
+	fclose( $fp);
  • $read_auth_pages(閲覧制限) , $edit_auth_pages(編集制限) , $non_list(一覧から隠す)に iplog を追加する必要があります。
  • しかし放っておくとiplogのデータ量が膨大になるので、閲覧時の負荷が大きくなります。定期的にiplogページを削除しないといけないので面倒です。
-	$fp = fopen(DATA_DIR.encode('iplog').'.txt', 'a');
+	$fp = fopen(DATA_HOME . 'log/' . strftime('%y%m%d') . '.ignore.log', 'a');

とするとiplogページでなくlogフォルダに1日ごとにファイルを生成してくれるのでこちらの方がよさそうです。

  • logフォルダは予め自分で作成しておきます。(パーミッション777)
  • 検索がしずらくなる等のデメリットはあります。
  • spam_filter.phpの時と同様に、他人に中身のファイルを閲覧されないように、.htaccess .htpasswdなどで規制する。フォルダ名も変えたほうがいいです。

コメント

コメントはありません。 コメント/Tips/編集者のログを残す?

コメント:

最終更新: 2016-08-22 (月) 00:56:51