#!/usr/bin/scriba
import cgi.bas
'commentが送信されているか?
IF cgi::POSTParam("comment") <> undef Then CALL kakikomi
'読み込みを表示
CALL yomikomi
'プログラムはここまで
END
'読み込み部分
SUB yomikomi
print "Content-Type: text/html; charset=euc-jp\n\n"
print """
<html><body>
<form action="bbs14.bas" method="POST">
お名前:<input type="text" name="onamae" size=20><br>
Email:<input type="text" name="email" size=20><br>
▼コメント<br>
<textarea name="comment" rows=4 cols=40></textarea><br>
URL:<input type="text" name="url" value="http://" size=50><br>
<input type="submit" value="送信">
</form>
"""
'読み込み部分(ファイルが存在する場合)
IF FILEEXISTS("bbslog3.txt") Then
open "bbslog3.txt" for input as 1
i=0
'最後までループ
while NOT(EOF(1))
'配列data[i]に代入
line input #1,data[i]
i=i+1
wend
close 1
'ループ開始
for a=i-1 to 0 STEP -1
'配列data[a]を取り出し
IF len(data[a])>0 Then
'分割:<>で分割
split data[a] by "<>" to onamae,comdata,email,url
'emailが書き込まれているか?
IF email <> "" Then
print "お名前:<a href=\"mailto:",email,"\">",onamae,"</a>"
ELSE
print "お名前:",onamae
END IF
print "<br>",comdata,"<br>"
'urlがhttp://以外なら
IF url<>"http://\n" Then print "<a href=\"",url,"\">",url,"</a>"
print "<hr>"
END IF
next
ELSE
print "ファイルがありません"
END IF
print "</html></body>"
END SUB
'書き込み部分
SUB kakikomi
'変数に代入
comment=cgi::POSTParam("comment")
onamae=cgi::POSTParam("onamae")
email=cgi::POSTParam("email")
url=cgi::POSTParam("url")
'HTMLタグの置換
comment=REPLACE(comment,"<","<")
comment=REPLACE(comment,">",">")
onamae=REPLACE(onamae,"<","<")
onamae=REPLACE(onamae,">",">")
email=REPLACE(email,"<","<")
email=REPLACE(email,">",">")
url=REPLACE(url,"<","<")
url=REPLACE(url,">",">")
'入力検査部分
IF onamae="" then CALL errormes("お名前が記入されていません")
IF comment="" then CALL errormes("コメントが記入されていません")
'文字数検査
IF len(comment)>1000 then CALL errormes("コメントが1000文字以下ではありません")
IF len(onamae)>30 then CALL errormes("お名前が30文字以下ではありません")
IF len(email)>64 then CALL errormes("Emailが64文字以下ではありません")
IF len(url)>128 then CALL errormes("URLが128文字以下ではありません")
'改行を<br>に
comment=REPLACE(comment,"\r\n","<br>")
comment=REPLACE(comment,"\r","<br>")
comment=REPLACE(comment,"\n","<br>")
'過去のデータをチェック
IF FILEEXISTS("bbslog3.txt") Then
open "bbslog3.txt" for input as 1
'最後までループ
while NOT(EOF(1))
'checkに代入
line input #1,check
'checkが存在するか?
IF len(check)>0 Then
'分割:<>で分割
split check by "<>" to check_onamae,check_comdata,check_email,check_url
IF comment=check_comdata then CALL errormes("過去に同じ内容の書き込みがあります")
END IF
wend
close 1
END IF
'書き込み
open "bbslog3.txt" for append as 1
'ロック
LOCK #1,write
print #1,onamae,"<>",comment,"<>",email,"<>",url,"\n"
'ロック解除
LOCK #1,release
close 1
print "Location:http://127.0.0.1/cgi-bin/bbs14.bas\n\n"
END
END SUB
'errormesサブルーチン
SUB errormes(errmessage)
'メッセージを出力
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>",errmessage,"</body></html>"
'ここでプログラム終了
END
END SUB
|