スタッフブログ

  • カテゴリ 総合的な情報 の最新配信
  • RSS

XOOPS Cubeで運用していたWebサイトをリードオンリーにするハック

Ryuji : XOOPS » 総合的な情報 2010/2/18 21:59

Blogger's Avatar

ホームページを運用していると、最初は興味のあるテーマで頻繁に更新していたけれど、だんだんそのテーマに興味が無くなってきて、更新がすっかり止まってしまうということもあります。

バッサリとホームページを閉じてしまうという選択肢もありますが、ネット上にコンテンツを残しておくと誰かの役にたつこともありますよね。

もしXOOPS Cubeで運用していたホームページで、「もう更新しないけど、コンテンツは読めるように残したい」とおもったら、このハックをお試しください。

XOOPS_ROOT_PATH/class/database/mysqldatabase.phpの 244行目あたり、function queryFの冒頭に次の様に記述します。

    function &queryF($sql, $limit=0, $start=0)
	{
		
		// add read only mode
		$sql = ltrim($sql);
		$sql_parts = explode(' ', $sql);
		$first_part = strtolower(trim($sql_parts[0]));
		if (!preg_match('/^(\/\*|select)/', $first_part )){
			if($first_part == 'insert' || $first_part == 'delete'){
				$table_part = trim($sql_parts[2]);
			}else{
				$table_part = trim($sql_parts[1]);
			}
			

			preg_match('/^`?'.XOOPS_DB_PREFIX.'_([^`].+)`?/', $table_part, $match);
			$table_name = $match[1];
			
			if($table_name == 'session'){
				$is_safe = true;
			}else{
				$is_safe = false;
			}
				
			if($is_safe == false){
				$ret = false;
				return $ret;
			}
		}
このハックを適用すると、
ログインに必要なsession テーブルの読み書きはできますが、他のテーブルは全てselect(読み出し)のみになり、記事の更新をしようとすると全部失敗するようになります。

ログインはできますので、ログインユーザにのみが見られるようなコンテンツがある場合でも利用できます。

自分で書き換えるのは面倒であれば、下記からダウンロードして、XOOPS_ROOT_PATH/class/database/mysqldatabase.phpを上書きしてください。

XOOPS Cubeをリードオンリーにするmysqldatabase.php

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.