<%@ LANGUAGE = "VBScript" %> <% '*************************************************************************** ' 掲示板 for mobile ' テキストファイル仕様 ' 2006/02 SQLインジェクション対策修正 '*************************************************************************** On Error Resume Next 'エラー処理ON Response.Buffer=True '================================================== ' 初期設定 '================================================== '//携帯判別 Dim KEITAI,wk_br,wk_hr wk_br = "
" wk_hr = "
" KEITAI = Request.ServerVariables("HTTP_USER_AGENT") If InStr(KEITAI,"DoCoMo") > 0 then KEITAI = "i" method = "get" input_mode_al = "istyle=" & """" & "3" & """" input_mode_num = "istyle=" & """" & "4" & """" ElseIf InStr(KEITAI,"J-PHONE") > 0 then KEITAI = "j" method = "get" input_mode_al = "mode=" & """" & "alphabet" & """" input_mode_num = "mode=" & """" & "numeric" & """" ElseIf InStr(KEITAI,"UP.Browser") > 0 then 'au対応 200404 KEITAI = "a" method = "get" input_mode_al = "format=" & """" & "*m" & """" input_mode_num = "format=" & """" & "*n" & """" wk_br = "
" wk_hr = "
" Else KEITAI = "p" method = "post" End If TITLE = "i-exer 掲示板 for mobile" '掲示板タイトル BLANK = " " '2バイトスペース COUNTER = 1 ' NEW_DATE = 86400 '24時間以内の投稿か? ASP_NAME = "bbs.asp" 'aspファイル名 MAX_LOG = 100 '最大ログ数 MAX_PLOG = 3 '表示件数/1ページ DELKEY = "suko" '管理者用削除キー Wk_sort_flg = 0 ' 最新記事をTopに表示する(0=no 1=yes) Wk_autolink = 0 ' URLの自動リンク (0=no 1=yes)※タグ許可の場合は (0=no) とすること。 '** SQLインジェクション対策「EncodeText」追加(2006/02) NO = EncodeText(Request("no")) '記事番号 NAME = EncodeText(Request("name")) '名前 MAIL = EncodeText(Request("mail")) 'メールアドレス URL = EncodeText(Request("url")) 'URL DEL_ID = EncodeText(Request("del_id")) '削除ID SUBJECT = EncodeText(Request("subject")) '題名 COMMENT = EncodeText(Request("comment")) 'コメント NUMBER = EncodeText(Request("number")) '番号 TOTAL = EncodeText(Request("total")) ' PARENT = EncodeText(Request("parent")) '親記事NO RES = EncodeText(Request("res")) 'レス記事 PAGE = EncodeText(Request("page")) ' MODE = EncodeText(Request("mode")) '処理モード FLG = EncodeText(Request("flg")) 'フラグ NEXTCNT = EncodeText(Request("nextcnt")) ' BACKCNT = EncodeText(Request("backcnt")) ' Wk_TopCnt= EncodeText(Request.Querystring("TopCnt")) S_IJ = EncodeText(Request("ij")) If MODE = "login" then ID = EncodeText(Request("id")) 'ID PASSWD = EncodeText(Request("passwd")) 'パスワード Else IJ = decode(S_IJ) If IJ <> "" then ID = Mid(IJ,1,7) 'ID PASSWD = Mid(IJ,8,Len(IJ) - 7) 'パスワード Else ID = "" 'ID PASSWD = "" 'パスワード End If End If Wk_logfile = "bbs1.log" ' ログファイル名 Wk_Lockfile = "lock1.dat" 'ロックファイル名 Wk_LockAfile = "Alock1.dat" 'アンロックファイル名 Dim PARE_CNT '親記事件数 Dim LOG_CNT 'ログ総件数 Dim MAX_LOG Dim OBJCMD, OBJID '作業用変数 Dim Wk_AllLog_array() ReDim Preserve Wk_AllLog_array(MAX_LOG - 1) Dim Wk_mode Dim Wk_tno Dim Wk_no Dim Wk_reno Dim Wk_date Dim Wk_name Dim Wk_mail Dim Wk_sub Dim Wk_mes Dim Wk_url Dim Wk_del Dim Wk_title Dim Wk_comment Dim Wk_host_ip Dim Wk_pwd Dim Wk_parent Dim Wk_delflg Dim Wk_flg Dim Wki_word Dim Wki_cond Dim Wki_no Dim Wki_reno Dim Wki_pwd Dim Wki_pwd2 ' クッキー用 Dim Wki_name Dim Wki_email Dim Wki_sub Dim Wki_mes Dim Wki_url Dim Wki_pass Dim Wki_res Dim Cnt_All Dim Cnt_Today Dim Cnt_Yesterday Dim Wk_User_Agent Dim wk_moji,wk_mojisuu Server.ScriptTimeout = 90 '================================================== ' 処理分岐 '================================================== Select Case MODE Case "login" Call LOGIN() Case "add" Call ADD() Case "delete" Call DELETE() End Select Call HEADER() Select Case MODE Case "" Call LOGIN_FORM() Case "view" Call VIEW() Case "add_form" Call ADD_FORM() Case "del_form" Call DEL_FORM() End Select Call FOOTER() '================================================== ' ヘッダー処理 '================================================== Sub HEADER() If KEITAI ="a" then %> <%=TITLE%> <%=TITLE%> <%= wk_hr %> <% Else %> <%=TITLE%> <%=TITLE%> <%= wk_hr %> <% End If End Sub '================================================== ' フッター処理 '================================================== Sub FOOTER() %> <% End Sub '================================================== ' ログイン処理 '================================================== Sub LOGIN_FORM() If KEITAI ="a" then 'AUの場合 200404 %> i-exer掲示板<%= wk_br %> 【ログイン】<%= wk_br %>
ユーザーID<%= wk_br %> /><%= wk_br %> パスワード<%= wk_br %> <%= wk_br %><%= wk_br %> <%= wk_br %>
<%= wk_br %> [TOP画面へ]<%= wk_br %> <%= wk_hr %> (C)sukoyaka center <% Else 'AU以外 200404 %> i-exer掲示板<%= wk_br %> 【ログイン】<%= wk_br %>
ユーザーID<%= wk_br %> ><%= wk_br %> パスワード<%= wk_br %> <%= wk_br %><%= wk_br %> <%= wk_br %>
<%= wk_br %> [TOP画面へ]<%= wk_br %> <%= wk_hr %> (C)sukoyaka center <% End If End Sub '================================================== ' ログイン処理 '================================================== Sub LOGIN() If ID = "" then CALL ERROR("ユーザーIDを入力してください。") End If If PASSWD = "" then CALL ERROR("パスワードを入力してください。") End If '//DB接続 Set OBJ = Server.CreateObject("ADODB.Connection") OBJ.Open DSN, DBUSER, DBPASSWD '//レコードセット 'SQL = "SELECT ログインID, パスワード FROM PERSONAL_DATA WHERE ログインID = '" & Cstr(ID) & "'" 'Set RS = OBJ.Execute(SQL) '** SQLインジェクション対策ここから(2006/02) ** Set OBJCMD = Server.CreateObject("ADODB.Command") OBJCMD.CommandText= "SELECT ログインID, パスワード FROM PERSONAL_DATA WHERE ログインID = ?" '-[コマンドを文字列として扱う] OBJCMD.CommandType = 1 OBJCMD.ActiveConnection = OBJ Set OBJID = Server.CreateObject("ADODB.Parameter") OBJID.Value = ID OBJID.Size = Len(ID) OBJID.Type = 200 OBJCMD.Parameters.Append OBJID Set RS = OBJCMD.Execute() '** SQLインジェクション対策ここまで(2006/02) ** eof_f = RS.EOF If eof_f = true then RS.Close Set RS = Nothing Set OBJID = Nothing Set OBJCMD = Nothing OBJ.Close Set OBJ = Nothing CALL ERROR_L("ユーザーIDもしくはパスワードが間違っています。") Else MODE = "view" S_IJ = encode(ID,PASSWD) End If RS.Close Set RS = Nothing Set OBJID = Nothing Set OBJCMD = Nothing OBJ.Close Set OBJ = Nothing End Sub '================================================== ' 記事の一覧表示 '================================================== Sub VIEW() '//DB接続 Set OBJ = Server.CreateObject("ADODB.Connection") OBJ.Open DSN, DBUSER, DBPASSWD '//個人情報テーブル レコードセット SQL = "SELECT * FROM PERSONAL_DATA WHERE ログインID = '" & ID & "'" Set RS = OBJ.Execute(SQL) If RS.EOF = true then RS.Close OBJ.Close CALL ERROR("ユーザーIDが間違っています。1") End If %> ←i-exerトップ<%= wk_br %> [ 新規書込み ] <%= wk_br %> <%= wk_hr %> <% ' 改ページ用処理 Wk_start = CInt(Wk_TopCnt) + 1 Wk_end = CInt(Wk_TopCnt) + CInt(MAX_PLOG) On Error Resume Next '***logファイルから記事情報を取得*** Set objFile = CreateObject("Scripting.FileSystemObject") Set DataFile = objFile.OpenTextFile (BBSLOGDIR & Wk_logfile,1,FALSE) If Err.Number > 0 Then Call ERROR("ログファイルの読み込みに失敗しました1") Else If DataFile.AtEndOfStream = true Then '一件もなかったら表示なし Response.Write wk_br & wk_br & vbCRLF Exit Sub Else Do Until DataFile.AtEndOfStream Wk_LineCnt = DataFile.Line - 1 If Wk_LineCnt >= 0 Then Wk_AllLog_array(Wk_LineCnt - 1) = DataFile.ReadLine End If Loop End If End If ' DataFile.Close Set DataFile = Nothing Set objFile = Nothing ' On Error GoTo 0 Wk_Ix = 0 For Each Wkl_AllLog In Wk_AllLog_array Wkl_AllLog_array = split(Wkl_AllLog,"<>") If UBound(Wkl_AllLog_array) >= 9 Then Wk_no = Wkl_AllLog_array(0) Wk_reno = Wkl_AllLog_array(1) Wk_name = Wkl_AllLog_array(2) Wk_mail = Wkl_AllLog_array(3) Wk_url = Wkl_AllLog_array(4) Wk_del = Wkl_AllLog_array(5) Wk_title = Wkl_AllLog_array(6) Wk_comment = Wkl_AllLog_array(7) Wk_date = Wkl_AllLog_array(8) Wk_host_ip = Wkl_AllLog_array(9) Else Exit For End If Wk_Ix = Wk_Ix + 1 '親記事カウント If (Wk_Ix < Wk_start) or (Wk_Ix > Wk_end) Then Wkl_AllLog_array = split(Wkl_AllLog,"<>") If UBound(Wkl_AllLog_array) < 8 Then Wk_Ix = Wk_Ix - 1 Exit For End If Else Call DTAILVIEW() ' 明細表示 End If Next Wk_Next_top = CInt(Wk_TopCnt) + MAX_PLOG Wk_back_top = CInt(Wk_TopCnt) - MAX_PLOG If ((Wk_back_top >= 0) or (Wk_Next_top < Wk_ix)) Then Response.Write "
" & vbCRLF End If %>
<% If KEITAI ="a" then 'AUの場合 200404 If Wk_back_top >= 0 Then %>
<% End If If Wk_Next_top < Wk_Ix Then %>
<% End If Else 'AU以外 200404 If Wk_back_top >= 0 Then %>
<% End If If Wk_Next_top < Wk_Ix Then %>
<% End If End If %>
<% End Sub '================================================== ' ログの詳細表示 '================================================== Sub DTAILVIEW() If (Wk_reno = 0) and (Wk_flg = 1) Then Wk_flg = 1 End If If Wk_autolink = 1 Then ' 自動リンク If Instr(Wk_comment,wk_br) > 0 Then Wk_comment_array = Split(Wk_comment,wk_br) For Each Wkl_mes In Wk_comment_array If Wk_Ix > 0 Then Wkl_mes_all = Wkl_mes_all & wk_br & auto_link(Wkl_mes) Else Wkl_mes_all = auto_link(Wkl_mes) End If Wk_Ix = Wk_Ix + 1 Next Wk_comment = Wkl_mes_all Else Wk_comment = auto_link(Wk_comment) End If End If %> [<%=Wk_no%>]<%=Wk_title%><%= wk_br %> <% 'メールリンク If Wk_mail <> "" Then %> ><%=Wk_name%>さん<%= wk_br %> <% Else %> <%=Wk_name%>さん<%= wk_br %> <% End If %> <%=Wk_date%><%= wk_br %> <%= wk_br %><%=Wk_comment%><%= wk_br %> <%= wk_br %> [返信] [削除] <%= wk_hr %> <% Wk_flg = 1 End Sub '================================================== ' 新規・返信 書き込み用フォーム '================================================== Sub ADD_FORM() If C_URL = "" Then C_URL = "http://" End If If RES = "res" Then On Error Resume Next '***logファイルから記事情報を取得*** Set objFile = CreateObject("Scripting.FileSystemObject") Set DataFile = objFile.OpenTextFile (BBSLOGDIR & Wk_logfile,1,FALSE) If Err.Number > 0 Then Call ERROR("ログファイルの読み込みに失敗しました2") Else Do Until DataFile.AtEndOfStream Wk_LineCnt = DataFile.Line - 1 If Wk_LineCnt >= 0 Then Wk_AllLog_array(Wk_LineCnt - 1) = DataFile.ReadLine End If Loop End If ' DataFile.Close Set DataFile = Nothing Set objFile = Nothing ' On Error GoTo 0 Wk_flag = 0 Wk_Ix = 0 For Each Wkl_AllLog In Wk_AllLog_array Wkl_AllLog_array = split(Wkl_AllLog,"<>") If UBound(Wkl_AllLog_array) >= 9 Then Wk_no = Wkl_AllLog_array(0) Wk_reno = Wkl_AllLog_array(1) Wk_name = Wkl_AllLog_array(2) Wk_mail = Wkl_AllLog_array(3) Wk_url = Wkl_AllLog_array(4) Wk_del = Wkl_AllLog_array(5) Wk_title = Wkl_AllLog_array(6) Wk_comment = Wkl_AllLog_array(7) Wk_date = Wkl_AllLog_array(8) Wk_host_ip = Wkl_AllLog_array(9) End If If NO = Wk_no Then Wk_flag = 1 Exit For End If Next If Wk_flag = 0 Then Call ERROR("該当記事が見つかりません。") End If Wk_title = Replace(Wk_title,"^Re:","") Wk_r_title = "Re:[" & Wk_no & "] " & Wk_title Wk_parent = NO End If If KEITAI ="a" then 'AUの場合 200404 %> 書き込みフォーム<%= wk_br %>
名前(必須) <%= wk_br %> E-MAIL<%= wk_br %> /><%= wk_br %> 削除キー<%= wk_br %> <%= wk_br %>  記事を削除するときに必要です。半角数字4桁で入力してください。<%= wk_br %><%= wk_br %> タイトル(必須)<%= wk_br %> <%= wk_br %> コメント<%= wk_br %>(50文字以内)
<% Else'AU以外 200404 %> 書き込みフォーム<%= wk_br %>
名前(必須) <%= wk_br %> E-MAIL<%= wk_br %> ><%= wk_br %> 削除キー<%= wk_br %> <%= wk_br %>  記事を削除するときに必要です。半角数字4桁で入力してください。<%= wk_br %><%= wk_br %> タイトル(必須)<%= wk_br %> <%= wk_br %> コメント<%= wk_br %>(50文字以内)
<% End If End Sub '================================================== ' 追加処理 '================================================== Sub ADD() If NAME = "" Or SUBJECT = "" then Call ERROR("必須項目を埋めてください。") End If wk_moji = HanTokumojicheck(trim(NAME)) If wk_moji <> "" then Call ERROR("名前に半角特殊文字は入力できません。") End If If MAIL <> "" then wk_mojisuu = Len(trim(MAIL)) wk_moji = trim(MAIL) If InStr(wk_moji,"@") < 2 then Call ERROR("Eメールアドレスが不正です。") End If For i = 1 to wk_mojisuu If (Mid(wk_moji,i,1) < "!") or (Mid(wk_moji,i,1) > "~")then Call ERROR("Eメールアドレスは半角で入力してください。") Exit For End If NEXT End If If COMMENT = "" Then Call ERROR("コメントがありません。") End If wk_moji = HanTokumojicheck(trim(COMMENT)) If wk_moji <> "" then Call ERROR("コメントに半角特殊文字は入力できません。") End If If PARENT = "" Then PARENT = 0 End If URL = "" If DEL_ID = "" Then DEL_ID = DELKEY Else delno = Len(DEL_ID) If delno <> "4" then Call ERROR("削除キーは半角数字4桁で入力してください。") Else moji = trim(DEL_ID) For i = 1 to delno IF (Mid(moji,i,1) < "0") or (Mid(moji,i,1) > "9") then Call ERROR("削除キーを半角数字4桁で記入してください。") END IF NEXT wk_moji = HanTokumojicheck(trim(DEL_ID)) If wk_moji <> "" then Call ERROR("削除キーに半角特殊文字は入力できません。") End If End If End If TODAY = Now HOST_IP = Request.ServerVariables("REMOTE_ADDR") On Error Resume Next '***logファイルから記事情報を取得*** Set objFile = CreateObject("Scripting.FileSystemObject") Set DataFile = objFile.OpenTextFile (BBSLOGDIR & Wk_logfile,1,FALSE) If Err.Number > 0 Then Call ERROR("ログファイルの読み込みに失敗しました3 ") Else Do Until DataFile.AtEndOfStream Wk_LineCnt = DataFile.Line - 1 If Wk_LineCnt >= 0 Then Wk_AllLog_array(Wk_LineCnt - 1) = DataFile.ReadLine Wkl_Log_array = Split(Wk_AllLog_array(Wk_LineCnt - 1),"<>") If UBound(Wkl_Log_array) >= 1 Then Wk_last_no = Wkl_Log_array(0) If Cint(Wk_tno) < Cint(Wk_last_no) then Wk_tno = Wk_last_no End If End If End If Loop End If ' DataFile.Close Set DataFile = Nothing Set objFile = Nothing ' On Error GoTo 0 ' 再番用に特別処理(削除等で同じ番号がかぶらないように2倍でループ) If CInt(Wk_tno) >= (MAX_LOG * 2) Then ' 記事Noを採番 Wk_no = CInt(1) Wk_tno = Wk_no Else Wk_no = Wk_tno + 1 Wk_tno = Wk_no End If NAME = Replace(NAME,"<","<") MAIL = Replace(MAIL,"<","<") URL = Replace(URL,"<","<") SUBJECT = Replace(SUBJECT,"<","<") COMMENT = Replace(COMMENT,"<","<") NAME = Replace(NAME,"'","’") MAIL = Replace(MAIL,"'","’") URL = Replace(URL,"'","’") SUBJECT = Replace(SUBJECT,"'","’") COMMENT = Replace(COMMENT,"'","’") NAME = Replace(NAME,"\","¥") MAIL = Replace(MAIL,"\","¥") URL = Replace(URL,"\","¥") COMMENT = Replace(COMMENT,"\","¥") NAME = Replace(NAME,"*","*") MAIL = Replace(MAIL,"*","*") URL = Replace(URL,"*","*") COMMENT = Replace(COMMENT,"*","*") COMMENT = Replace(COMMENT,Chr(13) + Chr(10),wk_br) COMMENT = Replace(COMMENT,Chr(10),wk_br) COMNO = NUMBER & ".dat" ' 編集&書き込み Wkl_write_data = Wk_no & "<>" Wkl_write_data = Wkl_write_data & PARENT & "<>" Wkl_write_data = Wkl_write_data & NAME & "<>" Wkl_write_data = Wkl_write_data & MAIL & "<>" Wkl_write_data = Wkl_write_data & URL & "<>" Wkl_write_data = Wkl_write_data & DEL_ID & "<>" Wkl_write_data = Wkl_write_data & SUBJECT & "<>" Wkl_write_data = Wkl_write_data & COMMENT & "<>" Wkl_write_data = Wkl_write_data & TODAY & "<>" Wkl_write_data = Wkl_write_data & HOST_IP & "<>" Wkl_write_data = Wkl_write_data & "<><>" write_data(Wkl_write_data) End Sub '================================================== '* データの書き込み '================================================== Sub write_data(Wk_In) On Error Resume Next Call File_Lock() Set objFile = CreateObject("Scripting.FileSystemObject") Set WDateFile = objFile.OpenTextFile(BBSLOGDIR & Wk_logfile,2,true) ' If Err.Number > 0 Then Call ERROR("ログファイルの読み込みに失敗しました4") Else Wkl_In_array = split(Wk_In,"<>") If UBound(Wkl_In_array) >= 1 Then Wkl_no = Wkl_In_array(0) Wkl_reno = Wkl_In_array(1) End If ' WDateFile.WriteLine Wk_tno & "<>" & Wk_admes & "<><><><><><><><><><><><>" If Wkl_reno = 0 Then ' 親記事の時 WDateFile.WriteLine(Wk_In) For Wk_Ix = 0 To (MAX_LOG - 2) WDateFile.WriteLine(Wk_AllLog_array(Wk_Ix)) Next Else ' 子記事の時 If Wk_sort_flg = 0 Then ' ソートしない Wkl_sw = 0 Ix1 = 0 ReDim Preserve Wkl_AllLog_array2(MAX_LOG - 1) For Each Wkl_Log In Wk_AllLog_array Wkl_Log_array = split(Wkl_Log,"<>") If UBound(Wkl_Log_array) >= 1 Then Wkl_Log_no = Wkl_Log_array(0) Wkl_Log_reno = Wkl_Log_array(1) Else Exit For End If If (Wkl_sw = 0) and (Wkl_reno = Wkl_Log_no) Then Wkl_sw = 1 Else If (Wkl_sw = 1) and (Wkl_reno <> Wkl_Log_reno) Then Wkl_sw = 2 Wkl_AllLog_array2(Ix1) = Wk_In Ix1 = Ix1 + 1 End If End If Wkl_AllLog_array2(Ix1) = Wkl_Log Ix1 = Ix1 + 1 Next If Wkl_sw = 1 Then Wkl_AllLog_array2(Ix1) = Wk_In End If For Each Wkl_Log2 In Wkl_AllLog_array2 WDateFile.WriteLine(Wkl_Log2) Next Else ' 最上へのソートをする Wkl_sw = 0 Ix1 = 0 Iy1 = 0 ReDim Preserve Wkl_AllLog_array2(MAX_LOG - 1) ReDim Preserve Wkl_AllLog_array3(MAX_LOG - 1) For Each Wkl_Log In Wk_AllLog_array Wkl_Log_array = split(Wkl_Log,"<>") If UBound(Wkl_Log_array) >= 1 Then Wkl_Log_no = Wkl_Log_array(0) Wkl_Log_reno = Wkl_Log_array(1) Else Exit For End If If Wkl_reno = Wkl_Log_no Then Wkl_AllLog_array2(Ix1) = Wkl_Log Ix1 = Ix1 + 1 Wkl_sw = 1 Else If Wkl_reno = Wkl_Log_reno Then Wkl_AllLog_array2(Ix1) = Wkl_Log Ix1 = Ix1 + 1 Else If (Wkl_sw = 1) And (Wkl_reno <> Wkl_Log_reno) Then Wkl_AllLog_array2(Ix1) = Wk_In Wkl_AllLog_array3(Iy1) = Wkl_Log Ix1 = Ix1 + 1 Iy1 = Iy1 + 1 Wkl_sw = 2 Else Wkl_AllLog_array3(Iy1) = Wkl_Log Iy1 = Iy1 + 1 End If End If End If Next If Wkl_sw = 1 Then Wkl_AllLog_array2(Ix1) = Wk_In Ix1 = Ix1 + 1 End If For Each Wkl_Log3 In Wkl_AllLog_array3 Wkl_AllLog_array2(Ix1) = Wkl_Log3 Ix1 = Ix1 + 1 Next For Each Wkl_Log2 In Wkl_AllLog_array2 WDateFile.WriteLine(Wkl_Log2) Next End If End If End If ' WDateFile.Close Set WDataFile = Nothing Set objFile = Nothing ' Call File_UnLock() ' On Error GoTo 0 MODE = "view" End Sub '================================================== ' 削除フォーム '================================================== Sub DEL_FORM() If KEITAI ="a" then 'AUの場合 200404 %> 削除フォーム <%= wk_br %> No. <%=NO%> を削除します。よろしいですか?<%= wk_br %>
削除キー
<%= wk_br %> <% Else'AU以外 200404 %> 削除フォーム <%= wk_br %> No. <%=NO%> を削除します。よろしいですか?<%= wk_br %>
削除キー
<%= wk_br %> <% End If End Sub '================================================== ' 削除処理 '================================================== Sub DELETE() If DEL_ID = "" Then Call ERROR("削除キーが未入力です") End If On Error Resume Next '***logファイルから記事情報を取得*** Set objFile = CreateObject("Scripting.FileSystemObject") Set DataFile = objFile.OpenTextFile (BBSLOGDIR & Wk_logfile,1,FALSE) If Err.Number > 0 Then Call ERROR("ログファイルの読み込みに失敗しました1") Else If DataFile.AtEndOfStream = true Then '一件もなかったら表示なし Exit Sub Else Do Until DataFile.AtEndOfStream Wk_LineCnt = DataFile.Line - 1 If Wk_LineCnt > 0 Then Wk_AllLog_array(Wk_LineCnt - 1) = DataFile.ReadLine Else Wkl_Log = DataFile.ReadLine Wkl_Log_array = Split(Wkl_Log,"<>") If UBound(Wkl_Log_array) >= 1 Then Wk_tno = Wkl_Log_array(0) Wk_admes = Wkl_Log_array(1) End If End If Loop End If End If ' DataFile.Close Set DataFile = Nothing Set objFile = Nothing ' On Error GoTo 0 Wk_flag=0 For Each Wkl_Log In Wk_AllLog_array Wkl_Log_array = split(Wkl_Log,"<>") If UBound(Wkl_Log_array) >= 9 Then Wk_no = Wkl_Log_array(0) Wk_reno = Wkl_Log_array(1) Wk_name = Wkl_Log_array(2) Wk_mail = Wkl_Log_array(3) Wk_url = Wkl_Log_array(4) Wk_del = Wkl_Log_array(5) Wk_title = Wkl_Log_array(6) Wk_comment = Wkl_Log_array(7) Wk_date = Wkl_Log_array(8) Wk_host_ip = Wkl_Log_array(9) End If If NO = Wk_no Then Wk_flag = 1 Exit For End If Next If Wk_flag = 0 Then Call ERROR("既に削除済です") End If If Wk_del <> DEL_ID Then Call ERROR("削除キーが違います。") End If CALL DEL(Wk_no) ' 削除処理 S_IJ = encode(ID,PASSWD) MODE = "view" End Sub '================================================== ' データの削除 '================================================== Sub DEL(Wk_In) On Error Resume Next Call File_Lock() Set objFile = Server.CreateObject("Scripting.FileSystemObject") Set WDateFile = objFile.OpenTextFile(BBSLOGDIR & Wk_logfile, 2, TRUE) ' If Err.Number > 0 Then Call ERROR("ログファイルの読み込みに失敗しました") Else WDateFile.WriteLine(Wk_tno & "<>" & Wk_admes & "<><><><><><><><><><><><>") For Each Wkl_Log In Wk_AllLog_array Wkl_Log_array = split(Wkl_Log,"<>") If UBound(Wkl_Log_array) >= 9 Then Wkl_no = Wkl_Log_array(0) Wkl_reno = Wkl_Log_array(1) Wkl_name = Wkl_Log_array(2) Wkl_mail = Wkl_Log_array(3) Wkl_url = Wkl_Log_array(4) Wkl_del = Wkl_Log_array(5) Wkl_title = Wkl_Log_array(6) Wkl_comment = Wkl_Log_array(7) Wkl_date = Wkl_Log_array(8) Wkl_host_ip = Wkl_Log_array(9) Else Wkl_no = "" Wkl_reno = "" Wkl_date = "" Wkl_name = "" Wkl_mail = "" Wkl_sub = "" Wkl_mes = "" Wkl_url = "" Wkl_host = "" Wkl_pwd = "" End If If (Wkl_no = Wk_In) or (Wkl_reno = Wk_In) Then Else WDateFile.WriteLine(Wkl_Log) End If Next End If ' WDateFile.Close Set WDataFile = Nothing Set objFile = Nothing ' Call File_UnLock() ' On Error GoTo 0 End Sub ' '================================================== '* ファイルのロック '================================================== Sub File_Lock() On Error Resume Next Set objFile1 = Server.CreateObject("Scripting.FileSystemObject") If objFile1.FileExists(BBSLOGDIR & Wk_Lockfile) = true then Call error("他の方が書込み中" & wk_br & "お手数ですが" & wk_br & "再度実行して下さい。") Exit Sub End if ' Application.Lock ' Set objFile2 = Server.CreateObject("Scripting.FileSystemObject") set LockFile = objFile2.CreateTextFile(BBSLOGDIR & Wk_Lockfile,true,False) ' Set LockFile = Nothing Set objFile1 = Nothing Set objFile2 = Nothing ' On Error GoTo 0 End Sub ' '================================================== '* ファイルのロック解除 '================================================== Sub File_UnLock() On Error Resume Next ' Set objFile = Server.CreateObject("Scripting.FileSystemObject") set UnLockFile = objFile.DeleteFile(BBSLOGDIR & Wk_Lockfile,true) ' Set UnLockFile = Nothing Set objFile = Nothing ' Application.Unlock ' On Error GoTo 0 End Sub '================================================== ' エラー処理 '================================================== Sub ERROR(WORD) %> !! エラーメッセージ !! <%= wk_br %>
<%= WORD %><%= wk_br %><%= wk_br %>
<% Call FOOTER() Response.End End Sub '*-----------------------------------------------------------------------------* ' 自動リンク (タグがない時のみ) ' この自動リンクロジックはWING☆さん に 著作権が有ります ' URL : http://www04.u-page.so-net.ne.jp/yd5/wing/aspyui/ ' E-mail : wing@yd5.so-net.ne.jp '*-----------------------------------------------------------------------------* Function auto_link(Wk_In) If (Instr(1,Wk_In,"http://") > 0 or Instr(1,Wk_In,"ftp://") > 0 or Instr(1,Wk_In,"mailto:") > 0) and InStr(1,Wk_In,"<") = 0 Then Wk_In = Replace(Wk_In,"__URL__","") flg = 0 Wk_Incp = "" urlcp = "" for i = 1 to len(Wk_In) j = Mid(Wk_In,i,1) Select Case UCase(j) Case "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0","$","@","/","%",".","_","-","~","#","&","=","l",":","?" If Mid(Wk_In,i,7) = "http://" or Mid(Wk_In,i,6) = "ftp://" or Mid(Wk_In,i,7) = "mailto:" Then If flg = 1 Then Wk_Incp = Replace(Wk_Incp,"__URL__",urlcp) Wk_Incp = Wk_Incp & "" urlcp = "" End If If Mid(Wk_In,i,7) = "mailto:" Then 'メールの場合のフォーマット設定 Wk_Incp = Wk_Incp & "" Else 'URL又はftpの場合のフォーマット設定 Wk_Incp = Wk_Incp & "" End If flg = 1 End If If flg = 1 Then urlcp = urlcp & Mid(Wk_In,i,1) End If Case Else If flg = 1 Then Wk_Incp = Replace(Wk_Incp,"__URL__",urlcp) Wk_Incp = Wk_Incp & "" flg = 0 urlcp = "" End If End Select Wk_Incp = Wk_Incp & j Next If flg = 1 Then Wk_Incp = Replace(Wk_Incp,"__URL__",urlcp) Wk_Incp = Wk_Incp & "" End If auto_link = Wk_Incp Else auto_link = Wk_In End If End Function %>