ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: PHP シンプル掲示板 ( ver 1.02 )
名前: lightbox
処理選択
パスワード

件名 PHP シンプル掲示板 ( ver 1.02 )
名前 lightbox
コメント
@DIV
CREATE TABLE `board` (
  `board_id` bigint not null auto_increment,
  `board_title` varchar(50),
  `board_name` varchar(20),
  `board_pass` varchar(40),
  `board_body` mediumtext,
  `board_create` datetime,
  `board_update` datetime,
  `board_delflg` varchar(1),
  PRIMARY KEY (`board_id`)
)
@END

  [[実装済み]]
@DIV
◎ 同一投稿の禁止
◎ 削除時は、`board_delflg` に 'D' をセットする
@END

  [[要修正バグ]]
@DIV
◎ 変更時エラーが出た場合、元の状態に復帰していない
@END

  [[未実装]]
@DIV
◎ 名前が未入力の場合の処理
◎ 名前とパスワードをクッキーで復帰
◎ 入力された HTML が反映されないようにする
◎ 連続投稿の禁止( 対アプリ投稿 )
◎ タイトルおよび本文に対する禁止文字列フィルタ
◎ 投稿参照機能
◎ ページ処理
◎ 検索処理
◎ 添付ファイル機能( 含ファイルアップロード )
◎ URL リンク化( 正規表現 )
◎ テキストエリア TAB 機能実装
@END

  [[連続投稿禁止用テーブル]]
@DIV
CREATE TABLE `access` (
  `access_ip` varchar(15),
  `access_time` int,
  PRIMARY KEY (`access_ip`)
)
@END

  [[連続投稿禁止処理]]
@DIV
if ( $_POST['send'] != '' ) {

	$err_flg = false;

	$Query = "select * from board ";
	$Query .= " where board_body = '{$_POST['body']}'";
	$Query .= " and board_delflg is NULL";
	$Column = $SQL->QueryEx( $Query );
	if ( $Column ) {
		err_msg( "二重投稿です。" );
		$err_flg = true;
	}

	# 連続投稿のチェック
	if ( !$err_flg ) {
		$Query = "select * from access ";
		$Query .= " where access_ip = '{$_SERVER['REMOTE_ADDR']}'";
		$Column = $SQL->QueryEx( $Query );
		if ( $Column ) {
			if ( time() - ($Column['access_time'] + 0) < @C:red(10) ) {
				err_msg( "連続投稿です。(しばらくしてから投稿して下さい)" );
				$err_flg = true;
			}
		}
	}

	if ( !$err_flg ) {
		$Query = " insert into board (board_title,board_name,board_pass,board_body,board_create,board_update) ";
		$pass = sha1($_POST['password']);

		if ( trim($_POST['name']) == '' ) {
			$_POST['name'] = $someone;
		}

		$Query .= " values('{$_POST['title']}','{$_POST['name']}','$pass','{$_POST['body']}',now(),now()) ";
		$SQL->Execute( $Query );

		setcookie ("name", $_POST['name'],time()+3600);
		setcookie ("password", $_POST['password'],time()+3600);

		# アクセステーブルの更新
		$tm = time();
		$Query = "update `access` set access_time = $tm where access_ip = '{$_SERVER['REMOTE_ADDR']}'";
		$SQL->Execute( $Query );
		$cnt = mysql_affected_rows( $SQL->Connect );
		if ( $cnt == 0 ) {
			$Query = "insert into access (access_ip,access_time) values('{$_SERVER['REMOTE_ADDR']}',$tm)";
			$SQL->Execute( $Query );
		}

	}
}
@END