学習用 -- 簡易掲示板

  sbd.php



<?
header( "Content-Type: text/html; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

require_once("model.php");

mb_regex_encoding('SJIS');

foreach( $_GET as $Key => $Value ) {
	$_GET[$Key] = str_replace("&","&amp;",$_GET[$Key]);
	$_GET[$Key] = str_replace("<","&lt;",$_GET[$Key]);
	$_GET[$Key] = str_replace(">","&gt;",$_GET[$Key]);
	// シングルクォート
	$_GET[$Key] = str_replace("\\'","&#39;",$_GET[$Key]);
	// ダブルクォート
	$_GET[$Key] = str_replace("\\\"","&#34;",$_GET[$Key]);
	// データフォーマットが CSV なので、カンマを変換します
	$_GET[$Key] = str_replace(",","&#44;",$_GET[$Key]);
	// 入力データ中の漢字部分以外の全ての \ が漢字の¥に変換されます
	$_GET[$Key] = mb_ereg_replace( '\x5c\x5c', '¥' ,$_GET[$Key]);
	// 漢字の後ろに付加された \ を削除します( SHIFT_JIS 用 )
	$_GET[$Key] = mb_ereg_replace( '\x5c', '' ,$_GET[$Key]);
}

//print "<PRE>";
//print_r($_GET);
//print "</PRE>";

$fname = "data.csv";

// 送信ボタンが押されていません
if( $_GET['send'] == '' ) {
}
// 入力がありました
else {

	// 入力エラーのチェック
	$ret = check_input( );

	// 入力時のエラーが無かった時の処理
	if ( $ret ) {
		$a = @file_get_contents($fname);

		// テキストファイル( CSV ) のキャラクタセットは、EUC-JPです
		$a = mb_convert_encoding($a, "SHIFT_JIS", "EUC-JP");
	
		$_GET['main'] = str_replace(PHP_EOL,"<br>",$_GET['main']); 
		$_GET['main'] = str_replace("\r","",$_GET['main']);
	
		$a = "{$_GET['subject']},{$_GET['name']},,{$_GET['main']}" . PHP_EOL .$a;
		$shift_jis = $a;
	
		// テキストファイル( CSV ) のキャラクタセットは、EUC-JPです
		$a = mb_convert_encoding($a, "EUC-JP", "SHIFT_JIS");
		file_put_contents($fname,$a);

		// ファイル更新後、初期画面に移動します
		header( "Location: {$_SERVER['SCRIPT_NAME']}");
	}
}

// *********************************************************
// 以下は画面を作成している部分です
// *********************************************************
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<BODY>
<div style='width:400px; margin: 0 auto 0 auto;'>
<span style='font-size:bold;color:#FF0000'><?= $_GET['error'] ?></span>
<FORM>

<INPUT type="text" name="subject" size="30" value="<?= $_GET['subject'] ?>"><br>
<INPUT type="text" name="name" size="30" value="<?= $_GET['name'] ?>"><br>
<TEXTAREA name="main" cols="50" rows="8"><?= $_GET['main'] ?></TEXTAREA>
<INPUT type="submit" name="send" value="送信">

</FORM>
</div>
<?
// *********************************************************
// このコードは、繰り返し部分で、直接 print で出力して
// HTML を完成させるサンプルです
// *********************************************************

require_once("css.php");

// 行の最後に改行文字を追加しない
// @ はエラーが起きてもなにもしないようにします
// エラーの時は、$row は false になるので、空の配列をセットしています
$row = @file("data.csv", FILE_IGNORE_NEW_LINES );
if( !$row ) {
	$row = array();
}

print "<HR>";
print "<TABLE  style='width:400px; margin: 0 auto 0 auto'>";
foreach( $row as $value ) {

	$value = mb_convert_encoding($value, "SHIFT_JIS", "EUC-JP");
	$col = explode_by_name( $value );

	// 行の作成

	print "<TR><TD class=sep></TD></TR>";

	print "<TR>";
	print "<TD>";

	print "<TABLE  style='width:100%'>";
	print "<TR><TD class=ttl style='width:90px;'>タイトル</TD><TD>{$col['タイトル']}</TD></TR>";
	print "<TR><TD class=ttl>お名前</TD><TD>{$col['氏名']}</TD></TR>";
	print "<TR><TD colspan=2>{$col['本文']}</TD></TR>";
	print "</TABLE>";

	print "</TD>";
	print "</TR>";

}
print "</TABLE>";

?>
</BODY>
</HTML>





  model.php



<?
// *********************************************************
// 引数の文字列をカンマで分解して、「名前」で管理する為の
// データを追加する
// *********************************************************
function explode_by_name( $value ) {

	$ret = explode( ",", $value );

	$ret['タイトル'] = $ret[0];

	$ret['氏名'] = $ret[1];

	$ret['投稿日付'] = $ret[2];

	$ret['本文'] = $ret[3];

	return $ret;

}

// *********************************************************
// 入力チェック
// ※ 問題がある場合は、エラーメッセージを$_GET['error']
// ※ に追加セットして、false を返す
// *********************************************************
function check_input( ) {

	if( trim( $_GET['subject'], "\t  " ) == "" ) {
		$_GET['error'] .= "タイトルを入力して下さい<br>";
	}
	if( trim( $_GET['name'], "\t  " ) == "" ) {
		$_GET['error'] .= "氏名を入力して下さい<br>";
	}
	if( trim( $_GET['main'], "\t  " ) == "" ) {
		$_GET['error'] .= "本文を入力して下さい<br>";
	}

	// $_GET['error'] に何かが入っているのでエラー
	if ( $_GET['error'] != "" ) {
		return false;
	}

	// $_GET['error'] が空なのでエラー無し
	return true;

}
?>






  css.php

<STYLE type="text/css">
* {
	font-family: 'MS Pゴシック';
	font-size: 12px;
}
table {
	border-collapse: collapse;
	border-style: solid;
	border-color: #000000;
	border-width: 1px;
	background-color: #FFFFFF;
}
td {
	padding: 5px;
	border-style: solid;
	border-color: #000000;
	border-width: 1px;
	white-space: nowrap;
}
.ttl {
	background-color: #606060;
	color: #FFFFFF;
	font-weight: bold;
}
.sep {
	background-color: #DBD49E;
}

</STYLE>
















   SQLの窓    create:2010/11/08  update:2015/09/23   管理者用(要ログイン)





フリーフォントツール

SQLの窓ツール

SQLの窓フリーソフト

写真素材

一般ツールリンク

SQLの窓

フリーソフト

JSライブラリ