<% ASP на блюдечке %>. Часть 15
Создаем гостевую книгу своими руками
Для чего нужна гостевая книга?
Создание и подготовка базы данных
Интеграция системы в уже готовый сайт
Главная страничка гостевой книги (файл Guest.asp)
Введение
Примеры, рассмотренные нами в предыдущих частях настоящей статьи, по своей сути в той или иной степени представляли разнообразные интерфейсы к базам данных, а в 14-й части (в №10’2001) мы показали вам один из механизмов привлечения внимания пользователей к сайту. В настоящей статье мы изложим материал, которого будет достаточно для самостоятельной разработки еще одной системы, позволяющей увеличить интерес к вашему сайту и оснастить последний функционалом для обеспечения обратной связи с пользователями. Мы также рассмотрим вопрос об организации переносимого модуля, который может обеспечить легкое и удобное встраивание такой системы практически в любой сайт независимо от его сложности.
Что такое гостевая книга?
Разумеется, здесь речь идет о наиболее типичной гостевой книге. Прежде всего это система, предоставляющая пользователю возможности для ввода текста, выбора оценки того или иного сайта, а также для указания собственных данных (ФИО, e-mail, http и т.д.). Это также система представления данных, введенных различными пользователями, с возможностью навигации, отправки электронных писем авторам сообщений. Возможны и вариации с различными настройками и с контролем нормативности лексики.
Для чего нужна гостевая книга?
Гостевая книга — основной механизм, обеспечивающий обратную связь с пользователями сайта, особенно в том случае, если пользователь желает сделать свое мнение достоянием общественности. Нередки случаи, когда гостевые книги на сайтах превращались в места для дискусий (в форумы, чаты). Таким образом, гостевая книга также (как и система электронного голосования) может пробудить интерес к вашему сайту, а следовательно является еще одним средством привлечения внимания пользователей.
Что нам понадобится
Конечно, предполагается, что читатель знаком с основами ASP- и SQL-программирования (знакомства с первыми частями настоящей статьи для этого будет вполне достаточно). Кроме того, нам потребуется Microsoft SQL Server 7.0 или 2000, какой-нибудь HTML- или текстовый редактор (рекомендую использовать Macromedia Dreamweaver UltraDev 4.0) и немного терпения.
Создание и подготовка базы данных
Для организации хранения введенных пользователями данных вам понадобиться одна таблица, где можно завести поля для хранения имени пользователя, его электронного адреса, страны проживания, адреса сайта, IP-адреса, значения оценки пользователем сайта по пятибалльной шкале и т.д:
Представим себе пример реализации такой таблицы:
.
В целях удобного встраивания системы в уже существующие сайты рекомендуется спланировать еще одну таблицу, предназначенную для хранения цветовых и других установок. Это позволит в дальнейшем изменять указанные установки без изменений соответствующих параметров в исходных текстах модулей приложения гостевой книги.
Далее необходимо прописать вашу базу данных в соответствующем разделе источников данных системы. Для этого сделайте следующее.
- Запустите программу-конфигуратор источников данных (Data Sources ODBC) — Start->Settings->Control Panel->Administrative Tools->Data Sources ODBC.
- Перейдите во вкладку System DSN и создайте новый источник данных, нажав на Add…
- В появившемся списке драйверов выберите драйвер баз данных — Microsoft SQL Server и нажмите на Next.
- В строке Data Source Name задайте имя вашей базы данных (в описываемом примере Gustbook — это имя, по которому вы в дальнейшем будете обращаться к ней).
- В строке Server укажите сервер, к которому будет осуществлено подключение, и нажмите на Next.
- Выберите режим аутентификации With SQL Server…, задайте имя пользователя и пароль для подключения к SQL-серверу; определите протокол связи с сервером (кнопка Client Configuration — TCP/IP) и два раза нажмите на Next, после чего нажмите на Finish.
- Вы увидите статистику о проделанных действиях, а для проверки источника данных можете воспользоваться кнопкой Test Data Source.
- В итоге перед вами появится строка в списке источников данных в вашей системе.
Теперь, когда база данных готова, можно переходить непосредственно к созданию гостевой книги.
Интеграция системы в уже готовый сайт
Понятно, что сама по себе гостевая книга не имеет смысла. Посудите сами: кому нужен сайт, предназначенный исключительно для сбора мнений читателей. Ведь для того чтобы собирать мнения о чем-либо, надо сначала это что-либо представить на их суд. Следовательно, необходимо уделить особое внимание моментам, связанным с упрощением встраивания системы в уже готовые сайты.
В частности, для упрощения настройки системы под характерные особенности того или иного сайта рекомендуется (как уже говорилось выше) создать специальную таблицу для хранения всех этих предпочтений, чтобы заносить в нее определенные значения, специфические для вашего сайта. Очевидное преимущество такого подхода заключается в том, что для осуществления встраивания системы в уже готовый сайт не потребуется производить изменения в исходном коде модулей, нужно изменить только настройки в соответствующей таблице базы данных.
Представим себе пример реализации такой таблицы:
.
Как видите, здесь присутствуют поля для хранения информации об имени и пароле доступа к режиму настройки системы, о цветах основного фона сообщения пользователей, верхней и нижней рамок (поля Mid_Color, Top_Color, Bot_Color соответственно), о цвете и размере заголовка формы, служащей для ввода пользователем данных (поля Form_Color и FormTitleSize соответственно), о цвете, размере и начертании шрифра текста самого сообщения, информационных полей, а также самих страниц с гостевой книгой (поля MessageFontColor, MessageFontSize, MessageFontFace, InfoFontColor, InfoFontSize, InfoFontFace, PageFontColor, PageFontSize и PageFontFace соответственно), полей-переключателей для включения режима автоматической отправки уведомлений о поступлении новых сообщений по электронной почте ответственному лицу (например, менеджеру или администратору сайта), поля хранения электронного адреса ответственного лица, текста сообщения с благодарностями за оставленное пользователем сообщение, со списком недопустимых слов и переключателем режима их фильтрации (если последний включен, то слова, находящиеся в списке недопустимых, будут автоматически заменяться в тексте сообщения на звездочки и таким образом будет осуществлен контроль за нормативностью лексики текстов сайта).
Развитие системы интеграции гостевой книги подразумевает организацию и Web-интерфейса для настройки всех рассмотренных нами параметров (полей таблицы администрирования).
Интеграция системы в уже готовый сайт в чистом виде может создавать некоторые сложности и при восприятии исходного текста, и в дальнейшем, если, например, потребуется временно отключить гостевую книгу на том или ином сайте. Поэтому попытаемся разработать систему таким образом, чтобы ее интеграция в готовый сайт не составила особого труда. Для этого необходимо сформировать независимый модуль системы и включить его в текст основного сайта там, где это необходимо. Так, к примеру, текст страницы вашего сайта может выглядеть следующим образом:
<head> <title>ASP на блюдечке (Часть - 15) – Гостевая книга </title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" > … <!-- #include file="Guest.asp"--> … </body> </html>
или
<!-- #include file="mainheader.inc"--> <!-- #include file="Guest.asp"--> <!-- #include file="mainfooter.inc"-->
Как видите, в первом случае директива о включении странички с гостевой книгой (<!-- #include file="Guest.asp"-->) указана в нужном месте, а во втором случае страничка исходного сайта представлена просто в виде трех последовательно включаемых элементов: начала, странички с гостевой книгой и конца. Использование того или иного способа организации структуры странички вашего сайта — дело вкуса и зависит как от структуры исходного сайта, так и от степени его сложности.
Главная страничка гостевой книги (файл Guest.asp)
В представленном приложении будет всего одна страничка, которая будет служить и для отображения сообщений пользователей, и для навигации и ввода новых сообщений. В зависимости от значений ключевых параметров будет осуществляться то или иное действие, а страничка будет находиться в том или ином состоянии. Прежде всего вам потребуется разработать ту ее часть, на которой будет происходить показ сообщений пользователей и в которой будут размещены ссылки на часть, служащую для добавления новых сообщений.
Для начала напишем несколько функций для работы со строками:
<!--#include file="config.asp"-->
- Функцию замены пустой строки на пробел и одинарной кавычки на двойную:
<% Function ChkString(string) If string = "" then string = " " ChkString = Replace(string, "'", "''") End Function %>
- Функцию проверки лексики текста сообщения на нормативность. В случае обнаружения
совпадений слов со словами из списка недопустимых следует заменять их на звездочки:
<% Function ChkBadWords(String2) strBadWords = objRec2("BadWords") bwords = split(strBadWords, "|") For i = 0 to ubound(bwords) String2 = Replace(String2, bwords(i), string(len(bwords(i)),"*"), 1,-1,1) Next ChkBadWords = String2 end function %> - Функцию форматирования текста, введенного пользователем. В случае необходимости
(при наличии соответствующего флажка в базе данных) будет проверяться (фильтроваться)
текст на предмет нормативности:
<% Function FormatStr(String) on Error resume next String = Server.HTMLEncode(String) String2 = Replace(String, CHR(13), "") String2 = Replace(String, CHR(10) & CHR(10), "</P><P>") String2 = Replace(String, CHR(10), "<br>") If objRec2("BadOn") = True then String2 = ChkBadWords(String2) End if FormatStr = String2 End Function %> - Функцию проверки заполнения полей:
<% Function ValidateField(sFieldValue, sFieldType) Valid = True Select Case LCase(sFieldType) Case "name" If Len(sFieldValue) = 0 Then Valid = False Case "message" If Len(sFieldValue) = 0 Then Valid = False End Select ValidateField = Valid End Function %>
- Процедуру добавления новых сообщений (обратите внимание на то, каким образом вычисляется IP-адрес компьютера, с которого посланно сообщение):
<%
Sub Update
strSql = "insert into Messages (Name, Country, Email, URL,IP,Message,Rating) values ('"
strSql = StrSql & ChkString(Request.Form("name")) & "', '"
strSql = StrSql & ChkString(Request.Form("Country")) & "', '"
strSql = StrSql & ChkString(Request.Form("email")) & "', '"
strSql = StrSql & ChkString(Request.Form("URL")) & "', '"
strSql = StrSql & Request.ServerVariables("REMOTE_ADDR") & "', '"
strSql = StrSql & ChkString(Request.Form("Message")) & "', '"
strSql = StrSql & ChkString(Request.Form("Rating")) & "')"
objConn.Execute (StrSql)
%>
После этого извлекаются и применяются параметры цветов, размеров, шрифтов оформления из соответствующей таблицы:
<font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>"
size="<%=objRec2("FormTitleSize")%>"><b>Спасибо за вашу запись в нашей гостевой книге!</b><p>
<font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>"
size="<%=objRec2("PageFontSize")%>">Для просмотра вашей записи кликните<a href="guest.asp"> здесь</a></b>
А теперь отправьте электронное письмо менеджеру или администратору с уведомлением о поступлении нового сообщения в гостевую книгу в случае необходимости:
<%
If Not(Request.Form("email"))="" AND objRec2("AutoEmail")=True then
Name = Request.Form("name")
Email = Request.Form("email")
sFrom = objRec2("YourEmail")
sTo=Email
sSubject = "Спасибо, Ваша запись в нашей гостевой книге принята!"
sMessage = "Дорогой(ая) " & Name & vbcrlf _
& vbcrlf _
& objRec2("ThankMessage") & vbcrlf _
& vbcrlf _
& vbcrlf
Set objNewMail = CreateObject("CDONTS.NewMail")
objNewMail.Send sFrom, sTo, sSubject, sMessage
Set objNewMail = Nothing
End If
If objRec2("YouEmail")=True then
Name = Request.Form("name")
Home_Page = Request.Form("url")
Email = Request.Form("email")
Message = Request.Form("message")
Country = Request.Form("Country")
Address = Request.ServerVariables("REMOTE_ADDR")
Rating = Request.Form("Rating")
If Rating ="0" then
Rating="No Rating"
End If
sFrom = objRec2("YourEmail")
sTo= objRec2("YourEmail")
sSubject = "Новое сообщение"
sMessage = "Привет," & vbcrlf _
& "Новое сообщение поступило в гостевую книгу" & vbcrlf _
& vbcrlf _
& ":" & vbcrlf _
& vbcrlf _
& Message & vbcrlf _
& vbcrlf _
& "Детали сообщения:" & vbcrlf _
& "Ваше имя: " & Name & vbcrlf _
& "Email: " & Email & vbcrlf _
& "URL: " & Home_Page & vbcrlf _
& "Страна: " & Country & vbcrlf _
& "Рейтинг: " & Rating & vbcrlf _
& "Адрес: " & Address
Set objNewMail = CreateObject("CDONTS.NewMail")
objNewMail.Send sFrom, sTo, sSubject, sMessage
Set objNewMail = Nothing
End If
End Sub
%>
Форма ввода новых значений
Целесообразно также вовлечь в процедуру показ формы, служащей для добавления новых сообщений (обратите внимание, что форма замкнута на себе, то есть в качестве реакции на нее служит модуль, который именно ее и содержит):
<%
Sub ShowForm(Sign)
%>
<center>
<form action="guest.asp?mode=post" method="post">
<table width=400 border=0 cellpadding=3 cellspacing=0 bgcolor=<%=ObjRec2("Form_Color")%>>
<tr>
<td colspan=2 align=center><font face="<%=objRec2("PageFontFace")%>"color="
<%=objRec2("PageFontColor")%>" size="<%=objRec2("FormTitleSize")%>">
<b>Оставьте запись в нашей гостевой книге</b>
<p><font size="<%=objRec2("PageFontSize")%>"><font color=red><sup>*</sup>
</font>Обозначает поля, которые обязательно нужно запомнить</font></font>
</td>
</tr>
<tr><td align=left bgcolor=<%=ObjRec2("Form_Color")%> colspan=2>
<font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>"
size="<%=objRec2("PageFontSize")%>"> <b>Ваше имя:</b>
<font color=red><sup>*</sup></font></td></tr>
<tr>
<td width=230><input name="name" value="<%= Request.Form("name") %>" size=30>
</td>
<td width=170>
<%
If dictFields(LCase("name")) Then
Response.Write "<font size=""-2"" color=""red"" face=""verdana,arial,sans-serif""> You must enter a name</font><br>"
Else
Response.Write "<font size=""-2""> <br></font>"
End If
%>
</td></tr>
<tr>
<td align=left bgcolor=<%=ObjRec2("Form_Color")%> colspan=2>
<font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>"
size="<%=objRec2("PageFontSize")%>">
<b>Email:</b>
</td>
</tr>
<tr>
<td colspan=2><input name="email" value="<%= Request.Form("email") %>" size=30>
</td>
</tr>
<tr>
<td align=left bgcolor=<%=ObjRec2("Form_Color")%> colspan=2>
<font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>" size="<%=objRec2("PageFontSize")%>">
<b>URL:</b>
</td>
</tr>
<tr>
<td colspan=2> <font face="<%=objRec2("PageFontFace")%>" color="
<%=objRec2("PageFontColor")%>
" size="<%=objRec2("PageFontSize")%>"> <a href="http:// %3c/font" rel="nofollow">http:// </font</a>>
<input name="url" value="<%= Request.Form("url") %>" size=30>
</td>
</tr>
<tr>
<td align=left bgcolor=<%=ObjRec2("Form_Color")%> colspan=2>
<font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>" size="<%=objRec2("PageFontSize")%>">
<b>Страна:</b>
</td>
</tr>
<tr>
<td colspan=2><input name="country" value="<%= Request.Form("country") %>" size=30></td></tr>
<tr><td align=center colspan=2><font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>" size="<%=objRec2("PageFontSize")%>">
<b>Как Вы оцениваете наш сайт?</b><br>
<select NAME="Rating" size="1"><option value="0"
<%
If Request.Form("Rating") = "0" then
Response.Write "selected"
End if
%>
>Без оценки</option>
<option value="1" <% If Request.Form("Rating") = "1" then Response.Write "selected" End if %>
>1 Балл</option>
<option value="2" <% If Request.Form("Rating") = "2" then Response.Write "selected" End if %>
>2 Балла</option>
<option value="3" <% If Request.Form("Rating") = "3" then Response.Write "selected" End if %>
>3 Балла</option><option value="4" <% If Request.Form("Rating") = "4" then Response.Write "selected" End if %>
>4 Балла</option><option value="5" <% If Request.Form("Rating") = "5" then Response.Write "selected" End if %>
>5 Баллов</option></select></td></tr>
<tr><td align=center colspan=2><font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>" size="<%=objRec2("PageFontSize")%>
"><b>Ваши комментарии:<font color=red><sup>*</sup></font></b></td></tr>
<tr><td align=center colspan=2><textarea name="Message" rows=6 cols=40 wrap="virtual"><%= Request.Form("Message") %></textarea></td></tr>
<tr><td align=center colspan=2><font face="<%=objRec2("PageFontFace")%>" color="red" size="-2">
<%
If dictFields(LCase("message")) Then
Response.Write "Вы не ввели сообщение</font><br>"
Else
Response.Write " <br></font>"
End If
%>
<INPUT type="submit" value="Оставить запись" name=submit></td></tr></table></form>
<%
End Sub
%>
Затем следует основная функция, служащая для показа фиксированного количества сообщений пользователей (значения извлекаемого из таблицы административных настроек):
<%
Sub Show
NumPerPage=INT(objRec2("NumPerPage"))
If Request.QueryString("page") = "" Then
iPageCurrent = 1
Else
iPageCurrent = CInt(Request.QueryString("page"))
End If
Set objRec = Server.CreateObject ("ADODB.Recordset")
StrSql = "SELECT * FROM Messages ORDER BY ID DESC;"
objRec.PageSize = NumPerPage
objRec.CacheSize = NumPerPage
objRec.Open StrSql,objConn,3,1,&H0001
iPages = objRec.PageCount
TotalRows = objRec.RecordCount
If iPageCurrent > iPages Then iPageCurrent = iPages
If iPageCurrent < 1 Then iPageCurrent = 1
If iPages = 0 Then
Response.Write "Не найденно записей!"
Else
ObjRec.AbsolutePage = iPageCurrent
%>
<p align=left><font face="<%=objRec2("PageFontFace")%>
" color="<%=objRec2("PageFontColor")%>" size="<%=objRec2("PageFontSize")%>">
Всего в книге <b><%=TotalRows%></b> записей на <b><%=iPages%></b> странице(ах)</font></p>
<%
iRecordsShown = 0
Do While iRecordsShown < NumPerPage And Not objRec.EOF
Rating = ObjRec("Rating")
If IsNull(Rating) or Rating="0" then
Rating = "nr"
Else
Rating = ObjRec("Rating")
End If
If IsNull(ObjRec("URL")) then
Link = "Не указан URL"
Else
Link = "<a href='http://" & ObjRec("URL") & "'>http://" & ObjRec("URL") & "</a>"
End If
Email = FormatStr(ObjRec("Email"))
Name = FormatStr(ObjRec("Name"))
%>
<table width="550" border="0" cellpadding="1" cellspacing="0">
<tr>
<td colspan="2" bgcolor="<%=ObjRec2("Top_Color")%>">
<font face="<%=objRec2("InfoFontFace")%>"
color="<%=objRec2("InfoFontColor")%>"
size="<%=objRec2("InfoFontSize")%>"><%=ObjRec("DateID") %>
</font>
</td>
<td align="right" bgcolor="<%=ObjRec2("Top_Color")%>">
<font face="<%=objRec2("InfoFontFace")%>" color="<%=objRec2("InfoFontColor")%>"
size="<%=objRec2("InfoFontSize")%>"><b>Оценка сайта: </b>
</font>
<img src="images/star<%= Rating %>.gif" height="14" width="65">
</td>
</tr>
<tr><td colspan=3 bgcolor="<%=ObjRec2("Mid_Color")%>">
<font face="<%=objRec2("MessageFontFace")%>" color="<%=objRec2("MessageFontColor")%>" size="<%=objRec2("MessageFontSize")%>"><%=FormatStr(ObjRec("Message"))%>
</font>
</td>
</tr>
<tr>
<td width="110" valign="top" bgcolor="<%=ObjRec2("Bot_Color")%>">
<font face="<%=objRec2("InfoFontFace")%>" color="<%=objRec2("InfoFontColor")%>"
size="<%=objRec2("InfoFontSize")%>">
<%
If IsEmpty(Email) or Email=" " then
Response.Write Name
Else
Response.Write "<a href=""mailto:" & Email & """><img src=images/mail.gif border=0></a> " & Name
End If
%>
</font>
</td>
<td width="180" valign="top" bgcolor="<%=ObjRec2("Bot_Color")%>">
<font face="<%=objRec2("InfoFontFace")%>" color="<%=objRec2("InfoFontColor")%>"
size="<%=objRec2("InfoFontSize")%>"><%=FormatStr(ObjRec("Country")) %> <i>
IP:<%= ObjRec("IP") %> </i>
</font>
</td>
<td width=260 align="right" valign="top" bgcolor="<%=ObjRec2("Bot_Color")%>">
<font face="<%=objRec2("InfoFontFace")%>" color="<%=objRec2("InfoFontColor")%>"
size="<%=objRec2("InfoFontSize")%>">
<%=Link%>
</font>
</td>
</tr>
</table>
<br>
<%
iRecordsShown = iRecordsShown + 1
objRec.MoveNext
Loop
if iPages > 1 then
%>
<p align=left>
<font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>"
size="<%=objRec2("PageFontSize")%>">
<b>Pages: </b>
<%
For I = 1 To iPages
If I = iPageCurrent Then
Response.Write "<b>" & I & "</b> "
Else
Response.Write "<a href=./guest.asp?page=" & I & ">" & I & "</a> "
End If
Next
Response.Write "</font>"
Else
Response.Write " "
End If
End If
objRec.Close
Set objRec = Nothing
End Sub
%>
Обратите внимание на то, каким образом формируется и осуществляется ссылка на просмотр следующей странички с такой «порцией» сообщений:
Response.Write "<a href=./guest.asp?page=" & I & ">" & I & "</a> "
Как видите, в качестве значения параметра page ей передается номер странички и впоследствии, если это значение не равно 1, показ сообщений начинается не с первого сообщения, а с того, которое окажется первым по счету на страничке с соответствующим номером, заданным в параметре:
<%
NumPerPage=INT(objRec2("NumPerPage"))
If Request.QueryString("page") = "" Then
iPageCurrent = 1
Else
iPageCurrent = CInt(Request.QueryString("page"))
End If
%>
Далее следует исходный текст самого модуля, в котором осуществляются подключение к базе данных и извлечение записей (в описываемом примере это будет единственной записью) из таблицы административных настроек Admin:
<%
Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open StrConn
Set objRec2 = Server.CreateObject ("ADODB.Recordset")
ConfigSql = "SELECT * FROM Admin;"
objRec2.Open ConfigSql,objConn,0,1,&H0001
%>
Затем можно оформить заголовок и основные тэги HTML-странички:
<head>
<title>ASP на блюдечке часть 15 - Гостевая книга своими руками</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
<table width="780" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="left" valign="top" height="389">
<center>
<table border="0" width="550" cellpadding="0">
<tr>
<td width=100% valign=bottom align=middle>
<font face="<%=objRec2("PageFontFace")%>" color="<%=objRec2("PageFontColor")%>" size="<%=objRec2("PageFontSize")%>">
Теперь нужно сформировать ссылки на ваш функционал (просмотр и добавление записей в гостевую книгу):
<a href="guest.asp?mode=show">Просмотреть гостевую книгу</a> | <a href="guest.asp?mode=post">Оставить запись в гостевой книге</a> </font> <p> </td> </tr> <tr> <td align=center>
И наконец, главный цикл обработки вашей главной и единственной asp-странички модуля будет выглядеть следующим образом:
<%
select case Request.QueryString("mode")
case "post"
Dim Field
Dim dictFields
Set dictFields = Server.CreateObject("Scripting.Dictionary")
For Each Field in Request.Form
If ValidateField(Request.Form(Field), Field) = False Then
dictFields.Add LCase(Field), True
End If
Next
If Request.Form.Count <> 0 And dictFields.Count = 0 Then
Call Update
Else
If Request.Form.Count <> 0 Then
End If
ShowForm("Sign")
End If
case "show"
Call Show
case Else
Call Show
End Select
%>
Здесь рассматриваются всего два случая (case), соответствующие двум функциям нашего Web-приложения: добавлениe новой записи в гостевую книгу (значение параметра mode = “post”) и просмотр сообщений гостевой книги (значение параметра mode = “show”).
<% objRec2.Close Set objRec2 = Nothing s objConn.Close Set objConn = Nothing Response.Write "</td></tr></table></center>" %> </td> </tr> </table> </body> </html>
Заключение
Мы рассмотрели еще один функциональный компонент сайта, причем сразу сделали его переносимым. Результатом этого явился довольно сложный с точки зрения восприятия исходный код. Хотя большое число параметров, извлекаемых из административной таблицы, несколько усложнило восприятие исходного кода модуля, однако их применение раз и навсегда избавит вас от необходимости править код при их изменении. Разработанная нами система вполне приемлема в использовании, а благодаря модульности ее реализации и описанному в статье подходу к ее внедрению в уже существующие сайты она может быть применена в качестве гостевой книги на сайте практически любой степени сложности.
Следовало бы, конечно, рассмотреть и Web-интерфейс для редактирования, добавления и удаления административных настроек (схем), однако это займет много времени, и поэтому автор постарается освeтить его в одной из следующих частей настоящей статьи.
КомпьютерПресс 11'2001








