|
<?
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("&","&",$_GET[$Key]);
$_GET[$Key] = str_replace("<","<",$_GET[$Key]);
$_GET[$Key] = str_replace(">",">",$_GET[$Key]);
// シングルクォート
$_GET[$Key] = str_replace("\\'","'",$_GET[$Key]);
// ダブルクォート
$_GET[$Key] = str_replace("\\\"",""",$_GET[$Key]);
// データフォーマットが CSV なので、カンマを変換します
$_GET[$Key] = str_replace(",",",",$_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 border=1 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 border=1 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>
|
|
<?
// *********************************************************
// 引数の文字列をカンマで分解して、「名前」で管理する為の
// データを追加する
// *********************************************************
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;
}
?>
|
|
<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>
|
|