WEBメモプログラム-ソース

「WEBメモプログラム-ソース」の編集履歴(バックアップ)一覧はこちら

WEBメモプログラム-ソース」(2008/07/15 (火) 17:47:55) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

<p>#!/usr/local/bin/perl<br /> ###################################################<br /> #webmemo.cgi  WEBメモプログラム<br /> #                   2004.01.22  MARCO<br /> #              edit 2004.01.27  MARCO<br /> #<br /> #  パーミッション<br /> #              webmemo.cgi(755)<br /> #              $datafile(666)<br /> ###################################################<br /> require 'jcode.pl';<br /> ############ 設定項目 ##############<br /> #データファイル<br /> $defaultfile='webmemo.txt';<br /> #ログファイル(つけた名前+連番+'.log')<br /> $logfile='weblog';<br /> #バックグランドの画像ファイル<br /> $bg_gif='onpu.gif';<br /> #ページのタイトル<br /> $title='WebMemo';<br /> #バックグランドカラー<br /> $bg_color='#FFFFFF';<br /> #ホームページアドレス<br /> $hp_address='../../../index.html';<br /> #ホームページアイコン<br /> $hp_icon='top.gif';<br /> #テキストの文字色<br /> $textcolor='#003366';<br /> $linkcolor='#006633';<br /> #テーブルの背景色<br /> $tblcolor1='#ffffcc';<br /> $tblcolor2='#ccffff';<br /> $tblcolor3='#eeeeee';<br /> #自動ログ実行間隔<br /> $autolog=50;<br /> #1ページに表示する件数<br /> $pagevew=10;<br /> #クッキー名<br /> $CookieName='webmemo';<br /> #管理者パスワード<br /> $master_key='password';<br /> ######################################<br /> #日付と時間を取得<br /> ($sec,$min,$hour,$dd,$mm,$yy,$wd)=localtime();<br /> #日付時刻のフォーマットを整える<br /> $yy+=1900;<br /> $mm++;<br /> $mm=sprintf(&quot;%02d&quot;,$mm);<br /> $dd=sprintf(&quot;%02d&quot;,$dd);<br /> $hour=sprintf(&quot;%02d&quot;,$hour);<br /> $min=sprintf(&quot;%02d&quot;,$min);<br /> $udate=&quot;$yy/$mm/$dd $hour:$min&quot;;</p> <p>#環境変数からクッキーの情報を取得<br /> $cookies=$ENV{'HTTP_COOKIE'};<br /> @pairs=split(/;/,$cookies);<br /> #この掲示板のクッキーだけを抜き出す<br /> foreach $pair (@pairs){<br />  ($name,$value)=split(/=/,$pair);<br />  $name=~ s/ //g;<br />  $DUMMY{$name}=$value;<br /> }<br /> #さらに、各パーツに分解する<br /> @pairs=split(/,/,$DUMMY{$CookieName});<br /> foreach $pair (@pairs) {<br />  ($name,$value)=split(/\!/,$pair);<br />  $COOKIE{$name}=$value;<br /> }</p> <p>#フォームからのデータを取得<br /> use CGI;<br /> $form=CGI-&gt;new();<br /> $sts=$form-&gt;param(&quot;status&quot;);<br /> $ittl=$form-&gt;param(&quot;title&quot;);<br /> $iurl=$form-&gt;param(&quot;url&quot;);<br /> $ikey=$form-&gt;param(&quot;key&quot;);<br /> $icom=$form-&gt;param(&quot;comment&quot;);<br /> $idno=$form-&gt;param(&quot;delno&quot;);<br /> $ipln=$form-&gt;param(&quot;pline&quot;);<br /> $datafile=$form-&gt;param(&quot;filename&quot;);<br /> if($datafile eq ''){<br />  $datafile=$defaultfile;<br /> }<br /> #コメントの文字変換<br /> $icom=~ tr/+/ /;<br /> $icom=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&quot;C&quot;,hex($1))/eg;<br /> $icom=~ s/&lt;/&amp;lt;/g;<br /> $icom=~ s/&gt;/&amp;gt;/g;<br /> $icom=~ s/\n//g;<br /> $icom=~ s/\,/,/g;<br /> &amp;jcode'convert(*icom,'sjis');</p> <p>open(DAT,&quot;$datafile&quot;);<br /> @DATA=&lt;DAT&gt;;<br /> close(DAT);</p> <p>opendir(DIR,'.');<br /> @files=readdir(DIR);<br /> closedir(DIR);<br /> $fcnt=0;<br /> foreach $jfile (@files){<br />  $ext=substr($jfile,rindex($jfile,&quot;.&quot;));<br />  if($ext eq '.log'){<br />   $fcnt++;<br />  }<br /> }<br /> $fcnt++;</p> <p>if($sts eq 'ins' &amp;&amp; $iurl ne '' &amp;&amp; $ikey eq $master_key){<br />  #タイトルがない場合はURLをセット<br />  if($ittl eq ''){<br />   $ittl=$iurl;<br />  }<br />  #連番を取得<br />  $newno=0;<br />  foreach(@DATA){<br />   ($no,$ttl,$url,$com,$date)=split(/\t/,$_);<br />   if($no&gt;$newno){$newno=$no;}<br />  }<br />  $newno++;<br />  unshift(@DATA,&quot;$newno\t$ittl\t$iurl\t$icom\t$udate\n&quot;);<br />  <a href="mailto:$count=@DATA">$count=@DATA</a>;<br />  if($count&gt;$autolog){<br />         pop(@DATA);<br />     }<br />  #自動ログ出力<br />  if($newno%$autolog==0){<br />   $fcnt=sprintf(&quot;%05d&quot;,$fcnt);<br />   $newlogfile=&quot;$logfile$fcnt\.log&quot;;<br />   open(LOG,&quot;&gt;$newlogfile&quot;);<br />   print LOG @DATA;<br />   close(LOG);<br />  }<br />  open(DAT,&quot;&gt;$datafile&quot;);<br />  print DAT @DATA;<br />  close(DAT);<br />  set_cookie();<br />  $COOKIE{'key'}=$ikey;<br /> }</p> <p>if($sts eq 'del' &amp;&amp; $ikey eq $master_key){<br />  $i=0; $match=0;<br />  foreach(@DATA){<br />   ($no,$ttl,$url,$com,$date)=split(/\t/,$_);<br />   if($idno==$no){<br />    splice(@DATA,$i,1);<br />    $match=1;<br />    last;<br />   }<br />   $i++;<br />  }<br />  if ($match) {<br />   open(DAT,&quot;&gt;$datafile&quot;);<br />   print DAT @DATA;<br />   close(DAT);<br />  }<br /> }</p> <p>print &quot;Content-type: text/html\n\n&quot;;<br /> print &quot;&lt;html&gt;&lt;head&gt;&quot;;<br /> print &quot;&lt;meta http-equiv=\&quot;Content-Type\&quot; content=\&quot;text/html;charset=x-sjis\&quot;&gt;\n&quot;;<br /> print &quot;&lt;STYLE TYPE=\&quot;text/css\&quot;&gt;\n&quot;;<br /> print &quot;&lt;!--\n&quot;;<br /> print &quot;a:link { text-decoration:none; color:$linkcolor; }\n&quot;;<br /> print &quot;a:visited { text-decoration:none; color:$linkcolor; }\n&quot;;<br /> print &quot;a:active { text-decoration:none; color:$linkcolor; }\n&quot;;<br /> print &quot;a:hover { text-decoration:underline; color:$linkcolor; }\n&quot;;<br /> print &quot;--&gt;\n&quot;;<br /> print &quot;&lt;/STYLE&gt;\n&quot;;<br /> print &quot;&lt;title&gt;$title&lt;/title&gt;&lt;/head&gt;\n&quot;;<br /> print &quot;&lt;body bgcolor=$bg_color text=$textcolor link=$linkcolor alink=$linkcolor vlink=$linkcolor background=$bg_gif&gt;\n&quot;;<br /> print &quot;&lt;center&gt;&lt;font size=5&gt;&lt;b&gt;$title&lt;/b&gt;&lt;/font&gt;&lt;/center&gt;&lt;br&gt;\n&quot;;</p> <p>print &quot;&lt;table border=0 width=100%&gt;&lt;tr&gt;&lt;td&gt;\n&quot;;<br /> if($hp_icon ne ''){print &quot;&lt;a href=$hp_address&gt;&lt;img src=$hp_icon border=0&gt;&lt;/a&gt;\n&quot;;}<br /> else{print &quot;&lt;a href=$hp_address&gt;HomePage&lt;/a&gt;\n&quot;;}<br /> print &quot;&lt;/td&gt;&lt;td align=right&gt;&quot;;<br /> if($fcnt&gt;1){<br />  print &quot;&lt;form action=webmemo.cgi method=POST&gt;\n&quot;;<br />  print &quot;ログ&lt;select name=filename&gt;\n&quot;;<br />  print &quot;&lt;option value=$defaultfile&gt;現在のファイル&lt;br&gt;\n&quot;;<br />  foreach $jfile (@files){<br />   $ext=substr($jfile,rindex($jfile,&quot;.&quot;));<br />   if($ext eq '.log'){<br />    print &quot;&lt;option value=$jfile&gt;$jfile&lt;br&gt;\n&quot;;<br />   }<br />  }<br />  print &quot;&lt;/select&gt;&lt;input type=submit value=開く&gt;&lt;/form&gt;\n&quot;;<br /> }<br /> print &quot;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&quot;;</p> <p>print &quot;&lt;form action=webmemo.cgi method=POST&gt;\n&quot;;<br /> print &quot;&lt;input type=hidden name=status value=del&gt;\n&quot;;<br /> print &quot;&lt;table border=0 width=100% cellspacing=0 cellpadding=0&gt;\n&quot;;<br /> $lcnt=0;<br /> $wymd='';<br /> if($ipln eq ''){$pline=0;}else{$pline=$ipln;}<br /><a href="mailto:$end_data=@DATA-1">$end_data=@DATA-1</a>;<br /> $page_end=$pline+($pagevew-1);<br /> if($page_end&gt;=$end_data){<br />  $page_end=$end_data;<br /> }<br /> foreach(($pline .. $page_end)){<br />  ($no,$ttl,$url,$com,$date)=split(/\t/,$DATA[$_]);<br />  $com=~ s/\r/&lt;br&gt;/g;<br />  chomp($date);<br />  $ymd=substr($date,0,10);<br />  $hms=substr($date,11,5);<br />  if($ymd ne $wymd){<br />   print &quot;&lt;tr&gt;&lt;td colspan=3 bgcolor=$tblcolor3&gt;&lt;font size=4&gt; &lt;b&gt;$ymd&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;<br />   $wymd=$ymd;<br />  }<br />  if($lcnt%2==0){$tbc=$tblcolor1;}<br />  else{$tbc=$tblcolor2;}<br />  print &quot;&lt;tr bgcolor=$tbc&gt;&lt;td colspan=2&gt;&lt;input type=radio name=delno value=$no&gt;\n&quot;;<br />  print &quot;■ &lt;a href=$url&gt;&lt;b&gt;$ttl&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;\n&quot;;<br />  print &quot;&lt;td width=10%&gt;&lt;font size=1&gt;- $hms -&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;<br />  print &quot;&lt;tr bgcolor=$tbc&gt;&lt;td width=10%&gt;&lt;/td&gt;&lt;td&gt;&lt;font size=2&gt;$com&lt;/font&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;<br />  $lcnt++;<br /> }<br /> if($datafile eq $defaultfile &amp;&amp; @DATA&gt;0){<br />  print &quot;&lt;tr&gt;&lt;td colspan=3 bgcolor=$tblcolor3 align=right&gt;&lt;font size=2&gt;削除キー&lt;/font&gt;&quot;;<br />  print &quot;&lt;input type=password size=12 name=key value=$COOKIE{'key'}&gt;\n&quot;;<br />  print &quot;&lt;/font&gt;&lt;input type=submit value=削除&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;<br /> }<br /> print &quot;&lt;/form&gt;&lt;/table&gt;\n&quot;;<br /> $next_line=$page_end + 1;<br /> if($page_end!=$end_data){<br />  print &quot;&lt;form method=POST action=webmemo.cgi&gt;\n&quot;;<br />  print &quot;&lt;input type=hidden name=pline value=$next_line&gt;\n&quot;;<br />  print &quot;&lt;input type=submit value=次のページ&gt;\n&quot;;<br />  print &quot;&lt;/form&gt;\n&quot;;<br /> }<br /> #投稿フォーム<br /> if($datafile eq $defaultfile){<br />  print &quot;&lt;form action=webmemo.cgi method=POST&gt;\n&quot;;<br />  print &quot;&lt;input type=hidden name=status value=ins&gt;\n&quot;;<br />  print &quot;&lt;table border=0&gt;\n&quot;;<br />  print &quot;&lt;tr&gt;&lt;td&gt;&lt;font size=2&gt;タイトル&lt;/font&gt;&lt;/td&gt;&quot;;<br />  print &quot;&lt;td&gt;&lt;input type=text size=80 name=title&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;<br />  print &quot;&lt;tr&gt;&lt;td&gt;&lt;font size=2&gt;URL&lt;/font&gt;&lt;/td&gt;&quot;;<br />  print &quot;&lt;td&gt;&lt;input type=text size=80 name=url&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;<br />  print &quot;&lt;tr&gt;&lt;td&gt;&lt;font size=2&gt;メモ&lt;/font&gt;&lt;/td&gt;&quot;;<br />  print &quot;&lt;td&gt;&lt;textarea name=comment rows=4 cols=60&gt;&lt;/textarea&gt;&lt;/td&gt;&lt;/tr&gt;\n&quot;;<br />  print &quot;&lt;tr&gt;&lt;td&gt;&lt;font size=2&gt;キー&lt;/font&gt;&lt;/td&gt;&quot;;<br />  print &quot;&lt;td&gt;&lt;input type=password size=12 name=key value=$COOKIE{'key'}&gt;\n&quot;;<br />  print &quot;&lt;/font&gt;&lt;input type=submit value=送信&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;\n&quot;;<br />  print &quot;&lt;/form&gt;\n&quot;;<br /> }</p> <p>print &quot;&lt;/body&gt;&lt;/html&gt;\n&quot;;<br /> exit;<br /> sub set_cookie{<br />  $ENV{'TZ'} = &quot;GMT&quot;;<br />  local(@date)=localtime(time+10*86400);<br />  $date[5]+=1900;<br />  $date[3]=sprintf(&quot;%02d&quot;,$date[3]);<br />  $date[2]=sprintf(&quot;%02d&quot;,$date[2]);<br />  $date[1]=sprintf(&quot;%02d&quot;,$date[1]);<br />  $date[0]=sprintf(&quot;%02d&quot;,$date[0]);<br />  $wday=('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') [$date[6]];<br />  $month=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') [$date[4]];<br />  $date_gmt=&quot;$wday, $date[3]\-$month\-$date[5] $date[2]:$date[1]:$date[0] GMT&quot;;<br />  $cook=&quot;key\!$ikey&quot;;<br />  print &quot;Set-Cookie: $CookieName=$cook; expires=$date_gmt\n&quot;;<br /> }</p> <p> </p>

表示オプション

横に並べて表示:
変化行の前後のみ表示: