<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis">
<TITLE>KOMOダイアリー(DB連携版)</TITLE>
<STYLE TYPE="text/css">
<!--
:link {
Color : blue ;
Text-Decoration : None
}
:active {
Color : blue ;
Text-Decoration : None
}
:visited {
Color : blue ;
Text-Decoration : None
}
A:hover {
Color : blue ;
Text-Decoration : Underline
}
-->
</STYLE>
</HEAD>
<BODY BGCOLOR="#FFFBF0">
<CENTER>
<P><IMG SRC="title.gif" WIDTH="415" HEIGHT="82" ALIGN="BOTTOM" BORDER="0"></P>
<P><FONT COLOR="#990066"><B>データベース連携の日記帳スクリプトです。記事は日付順(降順)に表示されます。</B></FONT><BR>
パスワードは「777」に設定しています。お試しあれ!(^o^)丿</P>
<?php
//====================初期設定======================
$db_user = "komonet"; //データベースのユーザー名(自分の環境に合わせて変更の事)
$db_name = "komodb"; //データベース名(自分の環境に合わせて変更の事)
$passwd = '777'; //管理者用パスワード
$data_max = 200; //データ最大記録数
$page_view = 5; //1ページの記事表示件数
$back_img = ''; //バック用画像
$this_year = date("Y"); //アクセス時の年
$this_month = date("n"); //アクセス時の月
$this_day = date("d"); //アクセス時の日
$up_dir = '/img/'; //画像保存用ディレクトリ
$w_max = 200; //画像の横幅の最大値(ピクセル)
$h_max = 200; //画像の縦幅の最大値(ピクセル)
$w_limit = 600; //画像の横幅の制限値(ピクセル)
$h_limit = 400; //画像の縦幅の制限値(ピクセル)
//==================================================
//スーパーグローバル変数対策
if(!isset($PATH_TRANSLATED)){
$path = dirname($_SERVER["PATH_TRANSLATED"]).$up_dir;
}else{
$path = dirname($PATH_TRANSLATED).$up_dir;
}
if(!isset($PHP_SELF)){ $PHP_SELF = $_SERVER["PHP_SELF"]; }
if(!isset($action)){
if($_POST['action']){
$action = $_POST['action'];
}else{
$action = $_GET['action'];
}
}
if(!isset($code)){ $code = $_POST['code']; }
if(!isset($year)){ $year = $_POST['year']; }
if(!isset($month)){ $month = $_POST['month']; }
if(!isset($day)){ $day = $_POST['day']; }
if(!isset($subject)){ $subject = $_POST['subject']; }
if(!isset($msg)){ $msg = $_POST['msg']; }
if(!isset($img_name)){ $img_name = $_POST['img_name']; }
if(!isset($img_del)){ $img_del = $_POST['img_del']; }
if(!isset($button)){ $button = $_POST['button']; }
if(!isset($password)){
if($_POST['password']){
$password = $_POST['password'];
}else{
$password = $_GET['password'];
}
}
if(!isset($e_code)){ $e_code = $_POST['e_code']; }
if(!isset($upfile)){ $upfile = $_FILES['upfile']['tmp_name']; }
if(!isset($upfile_name)){ $upfile_name = $_FILES['upfile']['name']; }
if(!isset($pline)){ $pline = $_POST['pline']; }
if(!isset($mode)){ $mode = $_POST['mode']; }
if(!isset($search_str)){ $search_str = $_POST['search_str']; }
//===============インライン関数===================
function inline_link($link){
$link = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$link);
return $link;
}
//================================================
//データベースに接続
$d_base = pg_connect("user=" . $db_user . " dbname=" . $db_name) or die("接続エラー");
if($action == "regist"){
//処理の分岐
if($button == "修正/更新"){
//インラインリンクを実現(URLのみ)
$msg = inline_link($msg);
if(strlen($msg) < 500){
//画像を削除
if($img_del){
unlink(".".$up_dir.$img_name);
$img_name = "";
}
//画像のアップロード処理
if(is_uploaded_file($upfile)){
//画像の属性を取得
$imagesize = getimagesize($upfile);
if(($imagesize[0] > $w_limit) || ($imagesize[1] > $h_limit)){ //大きな画像のアップを制限
$err_msg = "画像のサイズが大き過ぎて登録できませんでした。";
}else{
switch($imagesize[2]){
case 1:
$out = $code . ".gif";
break;
case 2:
$out = $code . ".jpg";
break;
case 3:
$out = $code . ".png";
break;
default:
unlink($upfile);
}
if($out){
$sendpath = $path.$out;
if(move_uploaded_file($upfile, $sendpath)){
chmod($sendpath,0666);
$img_name = $out;
}
}
}
}
//アップデート
$sql = "update db_diary set code = " . $code . ",year = " . $year . ",month = " . $month . ",day = " . $day . ",subject = '" . $subject . "',msg = '" . $msg . "',img_name = '" . $img_name . "' where code = " . $code;
pg_query($d_base, $sql) or die("データ更新エラー");
if(!$err_msg){
echo "<META HTTP-EQUIV=refresh CONTENT=0;URL=$PHP_SELF?action=edit&password=$passwd>\n";
exit;
}
}else{
$err_msg = "コメントの文字数が多すぎます。";
}
}
if($button == "削除"){
if($code){
//画像の削除処理
$sql = "select * from db_diary where code = " . $code;
$result = pg_query($d_base, $sql) or die("データ抽出エラー");
$arr = pg_fetch_row($result, 0); //検索結果の一行分を配列に格納
$img_name = $arr[6];
unlink(".".$up_dir.$img_name);
//該当データを削除
$sql = "delete from db_diary where code = " . $code;
pg_query($d_base, $sql) or die("データ削除エラー");
}
}
if($button == "送信/更新"){
if($msg){
$code = time(); //アクセス時の秒数
//インラインリンクを実現(URLのみ)
$msg = inline_link($msg);
if(strlen($msg) < 500){
//画像のアップロード処理
if(is_uploaded_file($upfile)){
//画像の属性を取得
$imagesize = getimagesize($upfile);
if(($imagesize[0] > $w_limit) || ($imagesize[1] > $h_limit)){ //大きな画像のアップを制限
$err_msg = "画像のサイズが大き過ぎて登録できませんでした。";
}else{
switch($imagesize[2]){
case 1:
$out = $code . ".gif";
break;
case 2:
$out = $code . ".jpg";
break;
case 3:
$out = $code . ".png";
break;
default:
unlink($upfile);
}
if($out){
$sendpath = $path.$out;
if(move_uploaded_file($upfile, $sendpath)){
chmod($sendpath,0666);
$img_name = $out;
}
}
}
}
$sql = "insert into db_diary values ($code,$year,$month,$day,'$subject','$msg','$img_name')";
pg_query($d_base, $sql) or die("データ登録エラー");
//データ最大記録数を調整
$sql = "select * from db_diary order by code DESC";
$result = pg_query($d_base, $sql) or die("データ抽出エラー");
$row = pg_numrows($result); //検索結果の行数を取得
if($row > ($data_max * 1.2)){
$arr = pg_fetch_row($result, $data_max);
$max_arr = $arr[0];
$sql = "delete from db_diary where code <= $max_arr";
pg_query($d_base, $sql) or die("データ削除エラー");
}
if(!$err_msg){
echo "<META HTTP-EQUIV=refresh CONTENT=0;URL=$PHP_SELF>\n";
exit;
}
}else{
$err_msg = "コメントの文字数が多すぎます。";
}
}else{
$err_msg = "コメントが書き込まれていません。";
}
}
}elseif(($action == "edit") && ($password == $passwd)){
$kanri_flag = 1; //管理マドの表示制御用フラグ
echo "<form action=$PHP_SELF method=POST ENCTYPE=multipart/form-data>\n";
echo "<input type=hidden name=action value=regist>\n";
if($e_code){
$sql = "select * from db_diary where code = " . $e_code;
$result = pg_query($d_base, $sql) or die("データ抽出エラー");
$arr = pg_fetch_row($result, 0); //検索結果の一行分の各値を配列に格納
$e_code = $arr[0];
$e_year = $arr[1];
$e_month = $arr[2];
$e_day = $arr[3];
$e_subject = $arr[4];
$e_msg = $arr[5];
$img_name = $arr[6];
echo "<input type=hidden name=code value=\"$e_code\">\n";
echo "<input type=hidden name=img_name value=\"$img_name\">\n";
echo "<table border=0>\n";
echo "<tr><td align=right><B>日付:</B></td><td colspan=2><SELECT NAME=year>";
for($i=$this_year-1; $i<$this_year+5; $i++){
echo "<OPTION" . (($e_year == $i) ? ' SELECTED' : '') . ">$i</OPTION>";
}
echo "</SELECT>年<SELECT NAME=month>";
for($i=1; $i<13; $i++){
echo "<OPTION" . (($e_month == $i) ? ' SELECTED' : '') . ">$i</OPTION>";
}
echo "</SELECT>月<SELECT NAME=day>";
for($i=1; $i<32; $i++){
echo "<OPTION" . (($e_day == $i) ? ' SELECTED' : '') . ">$i</OPTION>";
}
echo "</SELECT>日</td></tr>\n";
echo "<tr><td align=right><B>題名:</B></td><td colspan=2><input type=text size=35 name=subject value=\"$e_subject\"></td></tr>\n";
echo "<tr><td align=right><B>コメント:</B></td><td colspan=2><textarea name=msg rows=6 cols=50>$e_msg</textarea></td></tr>\n";
echo "<tr><td align=right><B>添付画像:</B></td><td colspan=2>上書<INPUT TYPE=file NAME=upfile SIZE=35> 削除<INPUT TYPE=CHECKBOX NAME=img_del VALUE=1></td></tr>\n";
echo "<tr><td></td><td>\n";
echo "<input type=submit name=button value=修正/更新> <input type=submit name=button value=削除></td></form>\n";
echo "<td><form action=$PHP_SELF method=POST><input type=submit value=ログアウト></td></tr>\n";
echo "</table></form>\n";
}else{
echo "<table border=0>\n";
echo "<tr><td align=right><B>日付:</B></td><td><SELECT NAME=year>";
for($i=$this_year-1; $i<$this_year+5; $i++){
echo "<OPTION" . (($this_year == $i) ? ' SELECTED' : '') . ">$i</OPTION>";
}
echo "</SELECT>年<SELECT NAME=month>";
for($i=1; $i<13; $i++){
echo "<OPTION" . (($this_month == $i) ? ' SELECTED' : '') . ">$i</OPTION>";
}
echo "</SELECT>月<SELECT NAME=day>";
for($i=1; $i<32; $i++){
echo "<OPTION" . (($this_day == $i) ? ' SELECTED' : '') . ">$i</OPTION>";
}
echo "</SELECT>日</td></tr>\n";
echo "<tr><td align=right><B>題名:</B></td><td><input type=text size=35 name=subject></td></tr>\n";
echo "<tr><td align=right><B>コメント:</B></td><td><textarea name=msg rows=6 cols=50></textarea></td></tr>\n";
echo "<tr><td align=right><B>添付画像:</B></td><td><INPUT TYPE=file NAME=upfile SIZE=35></td></tr>\n";
echo "</table>\n";
echo "<input type=submit name=button value=送信/更新> <input type=reset value=リセット></form>\n";
}
}
//エラー処理
if($err_msg){
echo "<FONT COLOR='red'>" . $err_msg . "</FONT>";
echo "<BR><BR><A HREF=$PHP_SELF onMouseOver=this.style.color='red' onMouseOut=this.style.color='blue'><やり直す></A>\n";
exit;
}
echo "<form action=$PHP_SELF method=POST>\n";
echo "<input type=hidden name=mode value=sort>\n";
echo "<input type=hidden name=action value=\"$action\">\n";
echo "<input type=hidden name=password value=\"$password\">\n";
echo "<B>文字列検索:</B><FONT SIZE=2>題名又はコメントに文字列</FONT><input type=text size=20 name=search_str><FONT SIZE=2>を含む</FONT> <input type=submit name=submit value=送信> <input type=reset value=リセット></FORM>\n";
if($mode == 'sort'){
if($search_str){
$sql = "select * from db_diary where subject like '%" . $search_str . "%' or msg like '%" . $search_str . "%' order by year DESC, month DESC, day DESC";
}else{
$sql = "select * from db_diary order by year DESC, month DESC, day DESC";
}
}else{
$sql = "select * from db_diary order by year DESC, month DESC, day DESC";
}
$result = pg_query($d_base, $sql) or die("データ抽出エラー");
$row = pg_numrows($result); //検索結果の行数を取得
if($row > 0){
if($pline == ""){
$p_line = 0;
}else{
$p_line = $pline;
}
$end_data = $row - 1;
$page_end = $p_line + ($page_view - 1);
if($page_end >= $end_data)
$page_end = $end_data;
for($i=$p_line; $i<=$page_end; $i++){
$arr = pg_fetch_row($result, $i); //検索結果の一行分を配列に格納
//曜日を生成
$date_str = $arr[1] . "/" . $arr[2] . "/" . $arr[3];
$date_timestamp = strtotime($date_str);
$week_day = strftime("%a", $date_timestamp);
if($week_day == 'Sun'){
$font1 = "<FONT COLOR='red'>";
$font2 = "</FONT>";
}elseif($week_day == 'Sat'){
$font1 = "<FONT COLOR='blue'>";
$font2 = "</FONT>";
}else{
$font1 = "";
$font2 = "";
}
echo "<form action=$PHP_SELF method=POST>\n";
echo "<input type=hidden name=action value=edit>\n";
echo "<input type=hidden name=e_code value=\"$arr[0]\">\n";
echo "<input type=hidden name=pline value=$pline>\n";
echo "<table border=1 width=90% bordercolor=#555555>\n";
echo "<tr><td>■<b>" . $arr[1] . "/" . $arr[2] . "/" . $arr[3] . "(" . $font1 . $week_day . $font2 . ")</B>\n";
echo " <font color='green' size=4><b>" . $arr[4] . "</b></font>\n";
if (($action == "edit") && ($password == $passwd)) {
echo "<input type=hidden name=password value=$passwd> <input type=submit value=訂正>\n";
}
echo "</td></tr><tr><td><blockquote>\n";
if($arr[6]){
$img_name = $arr[6];
if(file_exists("$path$img_name")){
$size = getimagesize("$path$img_name");
$img_w=$size[0];
$img_h=$size[1];
if($img_w > $w_max || $img_h > $h_max){
$w_ritu = $w_max / $img_w;
$h_ritu = $h_max / $img_h;
($w_ritu < $h_ritu) ? $key = $w_ritu : $key = $h_ritu;
$width = (int) $img_w * $key;
$height = (int) $img_h * $key;
echo "<A HREF=.$up_dir$img_name TARGET=_blank><img src=.$up_dir$img_name WIDTH=" . $width . " HEIGHT=" . $height . " ALIGN=LEFT></A>";
}else{
echo "<img src=.$up_dir$img_name ALIGN=LEFT>";
}
}
}
$msg = nl2br($arr[5]);
if($search_str){
$msg = str_replace("$search_str", "<B><SPAN STYLE=\"Background-Color : #FFCCFF\">$search_str</SPAN></B>", $msg);
}
echo $msg . "</blockquote></td></tr></table></form>\n";
}
}else{
echo "<FONT COLOR='red'>登録されている記事がありません。</FONT>";
}
?>
<P>
<TABLE BORDER="0" WIDTH="600">
<TR>
<TD WIDTH="50%">
<?php
if($page_end >= $page_view){
$page_count = floor($page_end / $page_view);
$prev_line = ($page_count - 1) * $page_view;
echo "<form method=Post action=$PHP_SELF>\n";
if (($action == 'edit') && ($password == $passwd)){
echo "<input type=hidden name=action value=edit>\n";
echo "<input type=hidden name=password value=$passwd>\n";
}
echo "<input type=hidden name=pline value=$prev_line>\n";
echo "<input type=hidden name=sort_flag value=$sort_flag>\n";
echo "<input type=submit value=前のページ>\n";
echo "</form>\n";
}else{
echo " \n";
}
?>
</TD>
<TD WIDTH="50%"><P ALIGN="RIGHT">
<?php
$next_line = $page_end + 1;
if($page_end != $end_data){
echo "<form method=Post action=$PHP_SELF>\n";
if (($action == 'edit') && ($password == $passwd)){
echo "<input type=hidden name=action value=edit>\n";
echo "<input type=hidden name=password value=$passwd>\n";
}
echo "<input type=hidden name=pline value=$next_line>\n";
echo "<input type=submit value=次のページ>\n";
echo "</form>\n";
}else{
echo " \n";
}
?>
</TD>
</TR>
</TABLE>
<?php
if($kanri_flag < 1){
echo "<div align=left>\n";
echo "<form action=$PHP_SELF method=POST>\n";
echo "<input type=hidden name=action value=edit>\n";
echo "<input type=password size=10 name=password>\n";
echo "<input type=hidden name=pline value=$pline>\n";
echo " <input type=submit value=管理><br>\n";
echo "</form></div>\n";
}
?>
<div align="right"><font size="-1">Powered by <a href="http://www.komonet.ne.jp/" onMouseOver="this.style.color='red'" onMouseOut="this.style.color='blue'">KOMONET</a></font></div>
</BODY>
</HTML>