ccidnet????

出版日期:2000-10-01 总期号:164 本年期号:10

本期导读
新闻专递
方案设计
应用篇
技术篇
产品篇
利用ASP技术提交注册信息到数据库

林青松

  各位在网上冲浪的时候,一定会经常碰到要提交注册信息的表单。在愉快注册的同时,你是否想知道它的实现过程呢?提交处理技术有CGI、ASP、E-mail等多种,下面就以目前最流行的ASP技术为例介绍如何利用ASP技术把注册表单与数据库连接。


  一、环境要求


  因为ASP 是一套服务器端的脚本语言,当用户从浏览器向 Web 服务器请求 .asp 文件时,ASP 脚本开始运行,然后Web服务器调用ASP,ASP全面读取请求的文件,执行所有脚本命令,并将Web页传送给浏览器,这就意味着你不能简单地在现有的操作系统( 如 Windows 95、98)下,用浏览器中的“ 打开” 命令来浏览 .asp 文件;所以运行 .asp 文件需要服务器端的支持,目前除了 WindowsNT下的 Microsoft Internet Information Server 支持 Active Server 技术,Active Server 还可用于MS Windows NT Workstation 和 MS Windows 95/98 中的 Personal Web Server 的构件,因此无论你安装的是NT还是Windows 95/98,都必须在原系统上安装支持ASP的服务器端环境,才能使你的机器得以运行 .asp 文件。

  由于目前绝大多数朋友安装的是Windows 95或98,因此就在这里着重介绍如何在 Windows 95/98 下运行和浏览 .asp 文件。因为 MSPersonal Web Server 支持通用网关接口(CGI) 应用程序、 Internet 数据库接口(IDC) 应用程序和 IIS 应用程序接口(ISAPI) 应用程序,并且支持运行和开发 ASP 应用程序,所以使得 Windows 95 及其以后操作平台Windows 98具备了近似于 NT 的健全的网站运作和管理功能。你所要做的只是在现有的 Windows 95/98 系统上安装 MS Personal Web Server。找一张完整的Windows 98安装盘,PWS4.0的安装文件在H:\addoins\pws目录下面(H为光驱盘符)。当安装完成后,PWS4.0 会在系统启动时自动加载。把要发布的文件存放在C:\intepub\wwwroot子目录下面(C:为PWS安装的盘符)。


  二、注册表单(register.htm)


  注册表单用Frontpage2000就可以制作,完成后如图1所示。


  图1

  在这里又一个技巧需要指明:为了真正实现客户机/服务器(ASP的最重要优点)的模式功能,充分发挥各自的作用,应该在提交表单到服务器前客户机对表单的信息进行规范性监测。在这个注册表的源程序中,用了一个test函数来检测信息规范性,test函数代码如下(直接插入Html语言中就行了):

  〈SCRIPT〉

  function test() {

   if(main.id.value.length==0) {

   alert("请填写用户名");

   return false;}

   if(main.nickname.value.length==0) {

   alert("请填写昵称");

   return false;}

   if(main.password.value.length==0) {

   alert("请填写密码");

   return false;}

   if(main.password.value!=main.com.value) {

   alert("密码不符,请确认");

   return false;}

   if(main.name.value.length==0) {

   alert("请填写你的姓名");

   return false;}

   if(main.email.value.length==0) {

   alert("请填写你的email地址");

   return false;}

   if(main.email.value.indexOf("@")〈1 || main.email.value.indexOf(".")〈1) {

   alert("请填写正确的email地址");

   return false;}

   if(main.certificate.options[main.certificate.selectedIndex].text=="身份证"){

   if(!(main.csn.value.length==15 || main.csn.value.length==18)) {

   alert("身份证号必须为15位或18位");

   return false;}

   if(!(main.csn.value〉0)) {

   alert("身份证号必须为数字");

   return false;} }

   if(main.address.value.length==0) {

   alert("请填上你的地址");

   return false;}

   if(main.postcode.value.length==0) {

   alert("请填上你的所在地邮政编码");

   return false;}

   if(main.telphone.value.length==0) {

   alert("请填上你的电话");

  return false; } }

  〈/SCRIPT〉

  test函数可以通过在form标识中调用:

  〈form action="success.asp" method="POST" name="main" onsubmit="return test();"〉

  action="success.asp"表明服务器端处理程序名为success.asp,method="POST"表示提交方式为“POST”,name="main"指明表单的名称为“main”,onsubmit="return test();"就是调用检测函数的语句了。


  三、建立数据库


  利用ACCESS建立数据库,利用新建在c:\intepub\wwwroot下面创建feilang.mdb,然后使用表设计器建立表user,各字段如图2所示。


  图2

  除了“用户编号”为自建为主健外,其余的各个字段都要与注册表单中的注册项一一对应(名称可以不一样,但在下面的服务器处理程序(success.asp)中也要注意不一样)。

  数据库建立后,要把数据库与系统服务器相连接,步骤如下:

  ① 在“控制面板”中双击“ODBC数据源”,选取“系统DSN”,如图3。


  图3

  ② 点击“添加”选择“Microsoft access driver(*.mdb)”点击“完成”后仿照图4设置参数。


  图4

  设置完成后单击“确定”完成数据源的设置。


  四、服务器处理程序(success.asp)


  下面给出服务器端处理程序的源代码:

  〈% @language=vbscript %〉

  〈%

  Option Explicit

  'response.expires = 0

  〈:--为各个参数作变量说明 〉

  Dim strmem,strnick,strsex,strpw,strmail,strName,strcg,strcsn,stradd,strzip,strtel

  Dim objConn,objRS,strconn

  〈:--为数据库连接说明变量〉

  strmem = Trim(request.Form("id"))

  〈:--清除注册表单各项注册信息值中的空格,同时赋指给strmem,id为注册表单中的“用户名”项的变量名〉

   strnick = Trim(request.Form("nickname"))

   strsex=Trim(request.Form("sex"))

   strpw = Trim(request.Form("password"))

   strmail = Trim(request.Form("email"))

   strname = Trim(request.Form("name"))

   strcg = Trim(request.Form("certificate"))

   strcsn = Trim(request.Form("csn"))

   stradd = Trim(request.Form("address"))

   strzip = Trim(request.Form("postcode"))

   strtel = Trim(request.Form("telphone"))

   Set objConn = server.CreateObject("adodb.connection")

   〈:--建立数据库连接 〉

   strConn = "dsn=feilang"

   〈:--设立数据源,在建立数据库一节中我们把数据库源命名为“feilang”(图4)所以这里打开的就是“feilang ”〉

  objConn.open strconn

  〈:--利用建立的连接打开数据源 〉

  set objrs=server.createobject("ADODB.recordset")

  〈:--为数据库中的返回数据作连接〉

  objrs.Open "SELECT * FROM user",objconn,1,3

  〈:--从数据库中选取符合条件的数据项,user为feilang.mdb文件中的表名〉

  objrs.addnew

  〈:--添加新数据〉

  objrs("用户名")=strmem

  〈:--数据库feilang.mdb中表user中的字段名称,把前面strmem得到的值传给user表中的“用户名”字段〉

  objrs("昵称")=strnick

  objrs("性别")=strsex

  objrs("密码")=strpw

  objrs("真实姓名")= strname

  objrs("E-mail")= strmail

  objrs("证件类型")= strcg

  objrs("证件编号")= strcsn

  objrs("联系地址")= stradd

  objrs("邮编")=strzip

  objrs("电话")= strtel

  objrs.update

  〈:--对数据库进行更新〉

  %〉

  〈html〉

  〈:--从该句到最后都为注册成功后从服务器返回给客户端浏览器的信息〉

  〈head〉

  〈title〉register.asp注册申请〈/title〉

  〈meta http-equiv="目录类型" content="文本/html; 字符集=gb2312"〉

  〈/head〉

  〈body bgcolor="#FFFFFF" 〉

  〈div align="center"〉〈BR〉

   〈font face="华文行楷"〉申请成功!〈br〉

   〈font face="黑体" color="ff0000"〉〈%=strName%〉:〈:--注册时输入的注册人真实姓名项变量〉

  〈/font〉 你好!〈BR〉

   〈BR〉

   请你等候电话通知.〈BR〉

   谢谢!〈/font〉〈BR〉〈BR〉

   〈%objrs.close

   〈:--关闭建立的返回数据连接〉

  objconn.close

  〈:--关闭数据库连接〉

  %〉

  〈h3〉 〈/h3〉

  〈/body〉

  〈/html〉

  

  把上面的代码用记事本编辑存为success.asp,存放路径为register.htm(注册表单文件)的同一路径下。打开浏览器,在地址框健入http://feilang/register.htm(feilang 为该电脑标识,右健点击“网络邻居”,单击属性,点击“标识”,“计算机名”即为该项名称),输入各项注册信息,回车后如果一切按照我所介绍的去做,你将会看到如图5所示的信息,恭喜你,成功了!


  图5

  此程序在我的电脑中测试通过,软硬环境为:赛扬300A,32MB内存,Windows 98第二版+PWS4.0。

  怎么样,有点看不明白,没关系,有些语句可能也看不懂,这时你只要把那些语句照搬到你的程序中就行了(注意变量名要与你的其他程序保持一致的啊)。只要你按照我说的步骤去一步一步的做,你会慢慢的明白的,如果还是不明白的话,那就到我的主页上来把三个文件(register.htm、succsee.asp和feilang.mdb)打包下载(http://go.163.com/~flyingwaves/html/asp.zip),再在自己的电脑上分析分析吧,相信你一定会搞懂的!初次动手写稿,难免有不足之处,欢迎大家来信指教(lqslion@263.net)。