Файл для доступа к БД MS Access'97.
[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
ReadOnly=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=512
ImplicitCommitSync=Yes
FIL=MS Access
DriverId=281
DefaultDir=C:\Inetpub\scripts\bookcd
DBQ=C:\Inetpub\scripts\bookcd\bakal1.mdb
Сценарий, использующий этот файл, приведен в листинге 4.14.
Листинг 4.13.Файл для доступа к БД MySQL.
[ODBC]
DRIVER=MySQL ODBC 3.51 Driver
UID=gun
STMT=
OPTION=3
PORT=
PASSWORD=
SERVER=inna
DATABASE=test
Листинг 4.14.Сценарий формирования DSN.
<%
Dim sDB, sPath, sDSNFil, sDSN, sScriptDir
'This is the entire DB path
sDB = "C:\Inetpub\scripts\bookcd\bakal1.mdb"
' Retrieve the script directory
sScriptDir = Request.ServerVariables("SCRIPT_NAME")
sScriptDir = StrReverse(sScriptDir)
sScriptDir = Mid(sScriptDir, InStr(1, sScriptDir, "/"))
sScriptDir = StrReverse(sScriptDir)
' Set the virtual Directory
sPath = Server.MapPath(sScriptDir) & "\"
' This is the DSN file Name for Access database
sDSNFil = "Access.dsn" ' This is the resulting DSN string
sDSN="filedsn="&sPath&sDSNFil&";DefaultDir="&sPath&";DBQ="&sPath&sDB&";"
%>
Чтобы не вставлять данный код в каждый сценарий, в котором требуется обращение к базе данных, применяют файлы включения (подобно include-файлам в языке С):
<!-- #include file ="dsn.asp" -->
<!-- #include file="adovbs.inc" -->
Заметим, что файл adovbs.inc не может быть вызван, как сценарий, хотя и содержит код. Как правило, в файлы с расширением .inc помещают часто употребляемые константы и функции, как это показано в листинге 4.15:
Листинг 4.15.Файл включения.
<%
' ADO constants include file for VBScript
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
%>
<FONT FACE="Verdana, Arial" SIZE=2>
<FORM ACTION="<% =sScript%>" METHOD=GET>
<SELECT NAME=YEAR>
<OPTION VALUE=1998 SELECTED>1998
<OPTION VALUE=1999>1999
<OPTION VALUE=2000>2000
<OPTION VALUE=2001>2001
<OPTION VALUE=2002>2002
</SELECT></FONT>
<P><INPUT TYPE="Image" SRC="images/go.gif" BORDER="0" WIDTH="35" HEIGHT="20"> </P>
</FORM>
В заключение приведем в листинге 4.16 законченный пример сценария авторизации посетителя с извлечением регистрационного имени и пароля из базы данных.
Листинг 4.16.Сценарий авторизации посетителя.
<!-- #include file ="dsn.asp" -->
<!-- #include file="adovbs.inc" -->
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Идентификация пользователя</title></head>
<body BGCOLOR="#CCCCFF" TEXT="#0000FF" LEFTMARGIN="3">
<%
If not isEmpty(Session("userlevel")) then
Session("userlevel") = Empty
Session("userid") = Empty
end if
user = Request.Form.Item("T1")
pswd = Request.Form.Item("T2")
b1 = Request.Form.Item("B1")
If not isEmpty(user) and not isEmpty(pswd) then
Set Rs = Server.CreateObject("ADODB.RecordSet")
sSQL = "SELECT Users.Pswd, Users.Access_ID, Users.User_ID FROM Users WHERE Users.Login = '"&user&"'"
Rs.Open sSQL, sDSN
if not RS.EOF then
if RS.fields(0).value = pswd then
Session("userlevel") = RS.fields(1).value
Session("userid") = RS.fields(2).value
Response.Redirect("menu.asp")
end if
end if
Session("userlevel") = 3
Response.Redirect("menu.asp")
end if
%>
<form method="POST" action="enter.asp">
<center>
<table border="0" width="50%" cellspacing="1" cellpadding="4">
<tr><td width="100%" colspan="2" bgcolor="#000080">
<b><font size="4">Идентификация пользователя </font> </b></td> </tr>
<tr><td width="50%" align="right">Имя:</td>
<td width="50%"><input type="text" name="T1" size="20"></td>
</tr>
<tr><td width="50%" align="right">Пароль:</td>
<td width="50%"><input type="password" name="T2" size="20"></td>
</tr>
<tr><td width="100%" align="right" colspan="2">
<center><input type="submit" value="Войти" name="B1" ></td>
</tr>
</table></center>
</form></body></html>
Доступ к базам данных MySQL осуществляется аналогично, с использованием файлового источника данных (листинг 4.13) и модификации сценария доступа (листинг 4.14), где последняя строка имеет вид:
sDSN = "filedsn=" & sPath & sDSNFil & ";"
Ниже приводится аналог листинга 4.10, но обращающегося к базе данных MySQL (из примера 3.14).
Дата добавления: 2015-11-04; просмотров: 732;