Perl・CGI入門/自作掲示板/HTML出力
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
''[[FrontPage]]''
* 自作CGI掲示板のHTML出力部 [#lb698849]
実際に作成したソースコードを公開します。~
私の掲示板では、分かりやすさのため、機能の観点でソースを...
それぞれ、表(HTML出力部: guestbook.cgi)と裏(ログファイル...
ここではログの読込みとHTML出力に特化したguestbook.cgiを、...
~
近いうちに簡単なフローなど作ってみようかと。~
~
ファイル名: guestbook_r4.cgi
#!/usr/bin/perl
use warnings; ...
use strict; ...
...
require './jcode.pl'; ...
...
# Read Cookie ******************************************...
my $cv = ""; ...
my $cname = ""; ...
my $curl = ""; ...
my $cmssid = ""; ...
my $nouse = ""; ...
...
$cv = $ENV{'HTTP_COOKIE'}; ...
...
($cname, $curl, $cmssid, $nouse) = split( /#@#/, $cv ); ...
...
unless( defined( $cmssid ) || $cmssid ne "" ) ...
{ ...
$cmssid = 1; ...
} ...
#/Read Cookie ******************************************...
# Read Log *********************************************...
my @reada = (""); ...
my @readb = (""); ...
my $face = 0; ...
...
open( LOGR, "<./guestlog.txt" ) ...
or print "Location: http://bj006.com/cgi/error0.htm"...
flock( LOGR, 1 ) ...
or print "Location: http://bj006.com/cgi/error0.htm"...
@reada = <LOGR>; ...
close LOGR; ...
...
open( INFO, "<./LOG_MAS.txt" ) ...
or print "Location: http://bj006.com/cgi/error0.htm"...
flock( INFO, 1 ) ...
or print "Location: http://bj006.com/cgi/error0.htm"...
@readb = <INFO>; ...
close INFO; ...
...
$face = @reada - @readb; ...
#/Read Log *********************************************...
# HTML Front *******************************************...
print 'Content-type: text/html'."\n\n"; ...
...
print <<HF; ...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitiona...
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; char...
<title>guestbook</title>
</head>
<body bgcolor="#B8A470" link="#0099FF" vlink="#999999" a...
<p align="left">
<font size="+7" face="Times New Roman, Times, serif">
<strong>bj006.com Guestbook - 掲示板</strong>
</font>
<font size="3"><br></font>
</p>
<form action="./write.cgi" method="POST"> ...
<div align="left">
<table width="98%" border=" " bordercolor="#B8A470">
<tr>
<td width="6%">Name:</td> ...
<td colspan="2">
<input name="name" type="text" size="25" max...
</td>
</tr>
<tr>
<td>Subject:</td> ...
<td colspan="2"><input name="subject" type="text...
</tr>
<tr>
<td>Message:</td> ...
<td colspan="2" rowspan="2">
<textarea name="message" cols="40" rows="4">...
</td>
</tr>
<tr>
<td height="15"></td>
</tr>
<tr>
<td height="2">URL:</td> ...
<td height="2" colspan="2">
<input name="url" type="text" value="$curl" ...
</td>
</tr>
<tr>
<td height="2">ID: </td> ...
<td width="3%" height="2">
<input name="mssid" type="text" size="4" max...
</td>
<td width="5%" height="2">(input 1-1024)</td>
<td width="12%"></td>
<td width="74%">未確定ログ数 : $face 件</td> ...
</tr>
<tr>
<td height="7"></td>
<td height="7" colspan="3">
<input type="submit" name="Submit" value="su...
<INPUT TYPE="reset" VALUE="reset">
</td>
<td width="74%">
未確定ログの確定 :
<input type="submit" name="confirm" value="c...
確定ログ状態へ戻す :
<input type="submit" name="rollback" value="...
</td>
</tr>
</table>
</div>
</form> ...
<p align="left"> ...
<a href="http://bj006.com">
<font size="2">
<span style="background-color: #000000">-HOME-</span>
</a>
<a href="http://bj006.com/cgi/aboutguestbook">
<span style="background-color: #000000">
この掲示板についての説明
</span>
</font>
</a>
</p>
<table width="75%" border="" bordercolor="#B8A470"> ...
HF
#/HTML Front *******************************************...
# Query ************************************************...
my $qkey = ""; ...
my $page = 0; ...
...
unless( defined $ENV{'QUERY_STRING'} ) ...
{ ...
$page = 0; ...
} ...
else ...
{ ...
($qkey, $page) = split( /=/, $ENV{'QUERY_STRING'} );...
} ...
#/Query ************************************************...
# HTML Log *********************************************...
my $cnt = @reada; ...
my $n = 0; ...
my $no = ($cnt - 10 * $page); ...
...
my $name = ""; ...
my $subject = ""; ...
my $message = ""; ...
my $url = ""; ...
my $mssid = 0; ...
my $time = ""; ...
my $ipaddr = ""; ...
my $host = ""; ...
...
while( $no > 0 && $n < 10 ) ...
{ ...
($name, $subject, $message, $url, $mssid, $time, $ip...
= split( /#@#/, $reada[$no - 1] ); ...
$n++; ...
...
print <<HL; ...
<tr>
<td>
<table width="720" height="54" border="0" al...
bordercolor="#B8A470" bgcolor="#000000" ...
</td>
<tr>
<td height="11" valign="top" bgcolor="#000000">
<strong>
<font color="#CC0000">
No.$no $name ($mssid) "$subject" $...
</font>
</strong>
</td>
</tr>
<tr>
<td height="11" valign="top">
<font color="#FFFFFF">$message</font> ...
</td>
</tr>
</table> ...
HL
$no--; ...
} ...
# Log Process ******************************************...
print <<LOG; ...
<tr>
<td>
<a href="http://bj006.com/cgi/guestbook.cgi">
<font size="3">
<strong>
<span style="background-color: #000000">[NEW...
</a> Log →
LOG
...
$page = 1; ...
while( ($cnt - $page * 10) > 0 ) ...
{ ...
print '<a href="http://bj006.com/cgi/guestbook.cgi?p...
"$page". ...
'"><span style="background-color: #000000"...
"$page". ...
']</span></a> '; ...
$page++; ...
} ...
print '</strong></font></td></tr>'."\n"; ...
#/Log Process ******************************************...
print <<END; ...
<tr>
<td>
<font size="-1">
<strong>Copyright © 2005-2008 baje, All...
</font>
</td>
</tr>
</body> ...
</html> ...
END
#/HTML Log *********************************************...
exit;
** 関連ページ [#q0d76fa7]
[[Perl・CGI入門/パッケージを使う/ID Roll]]~
[[Perl・CGI入門/自作掲示板/ログファイル作成]]
** 修正履歴 [#hd1fdd18]
-guestbook_r2.cgi~
--strictとwarnings~
--合わせて変数の初期化を実施。~
--ログファイルに使う区切り文字を変更~
~
-guestbook_r3.cgi~
--もろもろ改良~
~
-guestbook_r4.cgi~
--ログ切戻し機能実装~
--クッキー作成部の修正に対応~
#attach( [nolist] ,[noform])
*** 参考ページ [#h9a09981]
http://www.perl-labo.org/~
http://perl.misty.ne.jp/
終了行:
''[[FrontPage]]''
* 自作CGI掲示板のHTML出力部 [#lb698849]
実際に作成したソースコードを公開します。~
私の掲示板では、分かりやすさのため、機能の観点でソースを...
それぞれ、表(HTML出力部: guestbook.cgi)と裏(ログファイル...
ここではログの読込みとHTML出力に特化したguestbook.cgiを、...
~
近いうちに簡単なフローなど作ってみようかと。~
~
ファイル名: guestbook_r4.cgi
#!/usr/bin/perl
use warnings; ...
use strict; ...
...
require './jcode.pl'; ...
...
# Read Cookie ******************************************...
my $cv = ""; ...
my $cname = ""; ...
my $curl = ""; ...
my $cmssid = ""; ...
my $nouse = ""; ...
...
$cv = $ENV{'HTTP_COOKIE'}; ...
...
($cname, $curl, $cmssid, $nouse) = split( /#@#/, $cv ); ...
...
unless( defined( $cmssid ) || $cmssid ne "" ) ...
{ ...
$cmssid = 1; ...
} ...
#/Read Cookie ******************************************...
# Read Log *********************************************...
my @reada = (""); ...
my @readb = (""); ...
my $face = 0; ...
...
open( LOGR, "<./guestlog.txt" ) ...
or print "Location: http://bj006.com/cgi/error0.htm"...
flock( LOGR, 1 ) ...
or print "Location: http://bj006.com/cgi/error0.htm"...
@reada = <LOGR>; ...
close LOGR; ...
...
open( INFO, "<./LOG_MAS.txt" ) ...
or print "Location: http://bj006.com/cgi/error0.htm"...
flock( INFO, 1 ) ...
or print "Location: http://bj006.com/cgi/error0.htm"...
@readb = <INFO>; ...
close INFO; ...
...
$face = @reada - @readb; ...
#/Read Log *********************************************...
# HTML Front *******************************************...
print 'Content-type: text/html'."\n\n"; ...
...
print <<HF; ...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitiona...
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; char...
<title>guestbook</title>
</head>
<body bgcolor="#B8A470" link="#0099FF" vlink="#999999" a...
<p align="left">
<font size="+7" face="Times New Roman, Times, serif">
<strong>bj006.com Guestbook - 掲示板</strong>
</font>
<font size="3"><br></font>
</p>
<form action="./write.cgi" method="POST"> ...
<div align="left">
<table width="98%" border=" " bordercolor="#B8A470">
<tr>
<td width="6%">Name:</td> ...
<td colspan="2">
<input name="name" type="text" size="25" max...
</td>
</tr>
<tr>
<td>Subject:</td> ...
<td colspan="2"><input name="subject" type="text...
</tr>
<tr>
<td>Message:</td> ...
<td colspan="2" rowspan="2">
<textarea name="message" cols="40" rows="4">...
</td>
</tr>
<tr>
<td height="15"></td>
</tr>
<tr>
<td height="2">URL:</td> ...
<td height="2" colspan="2">
<input name="url" type="text" value="$curl" ...
</td>
</tr>
<tr>
<td height="2">ID: </td> ...
<td width="3%" height="2">
<input name="mssid" type="text" size="4" max...
</td>
<td width="5%" height="2">(input 1-1024)</td>
<td width="12%"></td>
<td width="74%">未確定ログ数 : $face 件</td> ...
</tr>
<tr>
<td height="7"></td>
<td height="7" colspan="3">
<input type="submit" name="Submit" value="su...
<INPUT TYPE="reset" VALUE="reset">
</td>
<td width="74%">
未確定ログの確定 :
<input type="submit" name="confirm" value="c...
確定ログ状態へ戻す :
<input type="submit" name="rollback" value="...
</td>
</tr>
</table>
</div>
</form> ...
<p align="left"> ...
<a href="http://bj006.com">
<font size="2">
<span style="background-color: #000000">-HOME-</span>
</a>
<a href="http://bj006.com/cgi/aboutguestbook">
<span style="background-color: #000000">
この掲示板についての説明
</span>
</font>
</a>
</p>
<table width="75%" border="" bordercolor="#B8A470"> ...
HF
#/HTML Front *******************************************...
# Query ************************************************...
my $qkey = ""; ...
my $page = 0; ...
...
unless( defined $ENV{'QUERY_STRING'} ) ...
{ ...
$page = 0; ...
} ...
else ...
{ ...
($qkey, $page) = split( /=/, $ENV{'QUERY_STRING'} );...
} ...
#/Query ************************************************...
# HTML Log *********************************************...
my $cnt = @reada; ...
my $n = 0; ...
my $no = ($cnt - 10 * $page); ...
...
my $name = ""; ...
my $subject = ""; ...
my $message = ""; ...
my $url = ""; ...
my $mssid = 0; ...
my $time = ""; ...
my $ipaddr = ""; ...
my $host = ""; ...
...
while( $no > 0 && $n < 10 ) ...
{ ...
($name, $subject, $message, $url, $mssid, $time, $ip...
= split( /#@#/, $reada[$no - 1] ); ...
$n++; ...
...
print <<HL; ...
<tr>
<td>
<table width="720" height="54" border="0" al...
bordercolor="#B8A470" bgcolor="#000000" ...
</td>
<tr>
<td height="11" valign="top" bgcolor="#000000">
<strong>
<font color="#CC0000">
No.$no $name ($mssid) "$subject" $...
</font>
</strong>
</td>
</tr>
<tr>
<td height="11" valign="top">
<font color="#FFFFFF">$message</font> ...
</td>
</tr>
</table> ...
HL
$no--; ...
} ...
# Log Process ******************************************...
print <<LOG; ...
<tr>
<td>
<a href="http://bj006.com/cgi/guestbook.cgi">
<font size="3">
<strong>
<span style="background-color: #000000">[NEW...
</a> Log →
LOG
...
$page = 1; ...
while( ($cnt - $page * 10) > 0 ) ...
{ ...
print '<a href="http://bj006.com/cgi/guestbook.cgi?p...
"$page". ...
'"><span style="background-color: #000000"...
"$page". ...
']</span></a> '; ...
$page++; ...
} ...
print '</strong></font></td></tr>'."\n"; ...
#/Log Process ******************************************...
print <<END; ...
<tr>
<td>
<font size="-1">
<strong>Copyright © 2005-2008 baje, All...
</font>
</td>
</tr>
</body> ...
</html> ...
END
#/HTML Log *********************************************...
exit;
** 関連ページ [#q0d76fa7]
[[Perl・CGI入門/パッケージを使う/ID Roll]]~
[[Perl・CGI入門/自作掲示板/ログファイル作成]]
** 修正履歴 [#hd1fdd18]
-guestbook_r2.cgi~
--strictとwarnings~
--合わせて変数の初期化を実施。~
--ログファイルに使う区切り文字を変更~
~
-guestbook_r3.cgi~
--もろもろ改良~
~
-guestbook_r4.cgi~
--ログ切戻し機能実装~
--クッキー作成部の修正に対応~
#attach( [nolist] ,[noform])
*** 参考ページ [#h9a09981]
http://www.perl-labo.org/~
http://perl.misty.ne.jp/
ページ名: