ASP 与 DHTML 资 料 集 锦
-
ASP 是 什 么
-
我 看 ASP
-
Web 上 著 名 ASP 站 点
-
ASP 中 文 日 期 函 数
-
IE4 模 态 对 话 框 设 计
-
关 于 Session Object
-
IE4 DHTML + ASP 实 现 滚 动 新 闻
-
最 终 幻 想 - 界 面 生 成 函 数
-
VBScript 特 有 的 两 个 函 数
-
关 于 ADO 的 简 单 介 绍
-
一 个 页 面 的 多 个 提 交
-
IE4 DHTML + ASP 实 现 COOLBAR
-
讨 论 SERVER.HTMLEncode() ( 98/09/14 ) 14 ASP Upload 的 实 现 (
98/09/14 )
15 优 化 ASP 程 序 ( 98/10/06 )
- 使 用 MS Posting Accepter 的 心 得
( 98/10/19 )
- 使 用 CSS 统 一 WEB 页 面 的 界 面风 格( 98/12/5 )
18 远 程 维 护 数 据 库 (98/12/5 )
19 拒 绝 不 友 好 者 的 访 问 (98/12/21)
20 防 止 连 续 提 交 (99/1/20)
21 关 于 口 令 加 密 (99/1/20)
ASP FAQ I( 98/10/19 )
文 本 文 件 处 理VBScript 常 见 问 题中 文 处 理
ODBC 问 题
ASP 的 错 误 处 理
ASP FAQ II ( 98/12/21)
VBScript
数据库处理
ASP FAQ III ( 99/1/4)
ASP 常见问题数据库处理
飞鸟 Joy ASP 和其他
ASP FAQ ( 国 外 站 点 翻 译 98/10/19)
微 软 Visual Interdev 6.0 Tutorial ( WORD 格式 98/11/02)
ASP A to Z ( WORD 格 式 98/11/02)
中 文 ASP 文 档 一 份 ( WORD 格 式
98/11/16) 露 茜 提 供
附 1 Image Gallery IE4 99/1/4
附 2 动 态 加 亮 的 按 钮 IE4 99/1/4
附 3 HTML Tooltips IE4 NC4 99/1/4
附 4 输 入 域 自 动 移 动 IE4 NC4 99/1/10
附 5 鼠 标 轨 迹 IE4 NC4 99/1/10
附 6 巨 酷 菜 单 IE4 99/1/10
ASP 是 什 么
Active Server Pages
超 文 本 简 史
ASP 代 表 了 Web 技 术 的 重 要 发 展 这 里 将 讲 述 一 段 从 静 态 内 容 联 接 到 动态 交 互 的 ASP 环 境 的 简 短 历 史
静 态 联 接 内 容
Web 最 初 建 立 在 静 态 内 容 联 接 上 直 到 今 天 许 多 站 点 仍 保 持 静 态 这 就是 说 为 了 改 变 从 Web 服 务 器 送 到 浏 览 器 的 东 西 你 不 得 不 手 工 编 辑 HTML 页面 在 静 态 的 模 式 下 浏 览 器 使 用 HTTP ( 超 文 本 传 输 协 议 ) 向 Web 服 务 器 请 求HTML 文 件 服 务 器 受 到 请 求 并 传 送 一 个 HTML 页 面 到 这 个 浏 览 器 浏 览 器 以一 定 格 式 显 示 这 个 页 面
使 用 ASP , 你 可 以 直 接 在 你 的 HTML 文 件 插 入 可 执 行 脚 本 代 码 HTML 开 发 和脚 本 开 发 变 成 相 同 的 过 程 使 你 径 直 将 注 意 力 集 中 于 web 站 点 的 外 观 和 感觉 适 当 把 动 态 元 素 编 入 你 的 页 面 虽 然 这 种 模 式 提 供 了 包 含 雇 员 和 潜 在 客户 信 息 的 良 好 组 织 的 页 面 的 访 问 能 力 但 是 只 有 用 户 和 服 务 器 的 有 限 交 互并 且 这 些 静 态 页 面 只 能 通 过 手 工 修 改 更 新 内 容
动 态 的 HTML
网 关 接 口 例 如 CGI ( 公 共 网 关 接 口 ) ISAPI ( 微 软 IIS 的 编 程 接 口 ) 以 及 其 他接 口 可 以 用 来 在 Web 内 加 入 动 态 的 内 容 通 过 这 些 接 口 浏 览 器 能 够 发 送 一个 可 执 行 应 用 程 序 的 HTTP 请 求 而 不 仅 仅 只 是 静 态 的 HTML 文 件 服 务 器 运 行指 定 的 应 用 程 序 这 个 应 用 程 序 读 取 与 请 求 相 关 的 信 息 获 得 请 求 传 送 过 来的 数 值 例 如 使 用 者 填 写 HTML 表 单 提 交 的 数 据 然 后 分 析 其 有 信 息 输 出HTML 传 送 到 浏 览 器 此 类 程 序 的 缺 点 是 很 难 创 建 和 修 改 网 关 程 序 不 是 和HTML 集 成 在 一 起 的 事 实 上 它 们 的 设 计 过 程 与 HTML 文 件 完 全 不 同
注 意 虽 然 HTTP 浏 览 器 和 服 务 器 能 够 传 送 HTML 之 外 的 数 据 格 式 如 AVI ( 扫 描 视 频 ) 和 GIF ( 图 型 图 象 格 式) 为 简 化 讨 论 这 里 HTTP 内 容 仅 为 HTML
ASP 应 用 程 序 是 具 有 如 下 特 点完 全 与 HTML 文 件 集 成
易 于 创 建 无 需 手 工 编 译 或 连 接
面 向 对 象 可 通 过 ActiveX 服 务 端 构 件 扩 展 功 能
ASP 的 好 处 在 于 使 得 Web 提 供 者 不 止 单 纯 发 布 信 息 内 容 更 能 提 供 交 互的 商 业 应 用 举 个 例 子 旅 行 社 不 仅 可 以 发 布 飞 机 航 班 时 间 表 利 用 ASP 脚 本它 还 可 以 让 客 户 检 查 合 适 的 航 班 比 较 票 价 和 预 定 航 班 座 位 利 用 ASP 脚 本开 发 应 用 是 很 容 易 的 装 备 了 合 适 的 脚 本 引 擎 你 可 以 使 用 任 何 脚 本 语 言ASP 提 供 了 VBScript 和 JScript 脚 本 引 擎 使 用 ActiveX 服 务 端 构 件 ( 以 前 称 Automation servers 自 动 化 服 务 器 ) 你 可 以 结 合 高 级 功 能 来 处 理 数 据 和 产 生 有 用 信 息
ASP 产 生 的 内 容 与 标 准 Web 浏 览 器 兼 容
我 看 ASP
飞 鸟 认 为 编 ASP 是 件 综 合 性 很 强 的 事 情
首 先 编 写 asp 你 需 要 做 出 一 个 美 观 的 客 户 端 界 面 所 以 你 需 要 对 HTML
相 当 熟 悉 至 少 熟 悉 FrontPage 的 操 作
然 后 你 可 能 要 面 对 IE 和 NS 兼 容 性 问 题 IE NS 各 自 为 政 它 们 对 H T M L 的 处 理 有 不 小 的 区 别 至 于 DHTML 则 完 全 走 向 了 两 个 方 向 在 IE 上 运 行 得 很完 美 但 在 NS 上 你 只 能 得 到 一 个 又 一 个 的 错 误 反 之 亦 然
还 有 你 会 发 现 CSS ( 好 象 是 Cascading Style Sheets ) 对 于 实 现 画 面 风 格 统 一 有 相 当大 的 帮 助 ( 实 际 上 微 软 的 DHTML 也 用 到 了 许 多 CSS 的 元 素 ) 你 可 能 觉 得 研 究 研究 CSS 相 当 有 必 要
当 然 透 彻 研 究 几 个 ASP 固 有 的 控 件 比 如 ADO 更 为 实 际 有 用 然 而 当 你觉 得 只 有 这 些 控 件 不 能 满 足 你 需 要 的 功 能 的 时 候 你 就 不 得 不 考 虑 自 己 编 一个 ActiveX Server Component 来 实 现 它
ASP 与 FrontPage
飞 鸟 只 用 过 四 种 编 辑 HTML 的 方 式 Frontpage97 ( 在 使 用 98 之 前 使 用 了 98 后就 把 它 抛 弃 了 ) FrontPage98 Editor 无 疑 是 极 好 的 网 页 编 辑 器 不 过 曾 经 出 过 意 外往 页 面 里 加 客 户 端 VBScript , 写 着 写 着 PAGE 变 成 了 白 板 , 也 不 知 为 什 么 所 以以 后 对 FrontPage 98 深 具 戒 心 只 用 来 做 HTML 的 框 架 写 Script 只 用 InterDev 的 Source Editor 此 外 asp 程 序 一 般 不 用 FrontPage 98 打 开 FrontPage 98 会 把 它 里 面 的 内 容 打乱 万 一 不 小 心 存 了 盘 ... 嘿 嘿 8-( 我 一 般 写 了 HTML 再 放 到 InterDev Source Editor 内
加 ASP 服 务 器 端 Script 另 外 两 种 编 辑 HTML 的 方 式 当 然 是 NotePad 和 InterDev 的
Source Editor 手 工 写 :-(
不 过 凭 心 而 论 飞 鸟 很 爱 FrontPage98 , 所 以 用 它 来 制 作 个 人 竹 叶 ” :-)
ASP 与 DHTML
DHTML 即 Dynatic HTML ( 动 态 HTML ) 是 客 户 端 的 Script , 它 实 现 的 动 态 画 面 效果 能 使 你 的 界 面 更 友 好 动 人 动 态 的 图 形 按 钮 , 活 动 的 菜 单 可 以 开 合 的 仿真 OUTLINE 增 强 的 事 件 处 理 甚 至 能 使 你 页 面 看 起 来 象 个 VB 等 语 言 开 发 的 应用 程 序
但 IE 和 NS 的 DHTML 是 有 极 大 区 别 的 能 实 现 的 Cross Browser ( 跨 浏 览 器 ) DHTML 的 功 能 极 其 困 难 与 有 限 对 此 你 必 须 作 出 选 择 飞 鸟 个 人 认 为 微 软的 DHTML 更 好 一 点 微 软 的 站 点 关 于 DHTML 的 REFERENCE 手 册 ( E 文 ) 洋 洋 洒 洒近 千 个 文 件 包 括 了 扩 充 了 的 CSS , HTML 的 详 尽 说 明 如 果 你 是 为 一 个 WEB 站点 开 发 ASP 那 么 Cross Browser DHTML 是 如 此 的 恼 人 为 照 顾 各 种 不 同 的 浏 览 器 ( 尤 其 是 众 多 Netscape 拥 护 者 ) JAVASCRIPT 写 两 个 动 态 的 按 钮 就 足 矣 如 果 你 开发 INTRANET WEB MIS 那 么 大 可 尽 情 发 挥 IE DHTML IE4 是 如 此 的 普 及 局 域 网 的速 度 又 ... 嘿 嘿
ASP 与 CSS
CSS 是 好 东 西 通 过 它 你 可 以 使 你 的 WEB 页 面 保 持 相 同 的 风 格 写 一 个
CSS 文 件 在 你 的 页 面 内 加 入 <LINK REL=STYLE TYPE="text/css" HREF="yourstyles.css">
以 后 如 果 要 改 变 风 格 只 需 改 变 CSS 文 件 内 的 CSS 内容 页 面 们 的 风 格 都 变了
此 外 IE 的 DHTML 与 CSS 密 切 相 关 离 开 了 CSS DHTML 简 直 没 法 开 发
ASP 与 MIS
ASP 是 新 鲜 事 物 ( 至 少 半 年 前 飞 鸟 还 不 知 它 是 什 么 南 北 搞 不 懂 VS97 内 的InterDev 有 何 用 ) ASP 开 发 的 MIS 系 统 姑 且 成 为 WEB MIS 我 们 一 再 向 客 户 强 调 我们 的 MIS 是 如 此 的 棒 和 先 进 客 户 端 的 软 件 配 置 是 如 此 的 简 单 一 个 浏 览 器吻 酒 吧 甚 至 还 自 己 带 了 一 个 不 需 另 外 安 装 但 是 开 发 WEB MIS 的 朋 友 们 真 是命 苦 WEB 本 来 的 特 性 便 是 浏 览 来 浏 览 去 行 云 流 水 般 开 发 WEB MIS 很 让 人不 习 惯 ( 都 是 VB Delphi 等 造 的 孽 ) 最 初 感 觉 ASP 的 流 程 难 以 控 制 REQUEST RESPONSE 的 礼 尚 往 来 让 人 晕 头 转 向 更 痛 苦 的 是 调 试 IIS3 只 能 通 过 response.write abcVar ( 或 <%=abcVar%> ) 这 种 方 式 查 看 变 量 IIS4 总 算 带 了 个 脚 本 调 试 器 不 过 使用 方 法 真 是 古 怪 在 某 一 行 按 F9 设 个 断 点 红 色 加 亮 的 却 是 上 一 行 或 者 五行 内 的 某 一 行 ( 不 过 总 比 没 有 好 :o( 飞 鸟 的 系 统 WINNT 4.0 简 体 中 文 + SP3 + IIS4 ( 西 文 ) , 可 能 别 的 朋 友 情 况 有 所 不 同 那 你 们 就 比 较 幸 福 了 )
不 过 总 体 而 言 开 发 ASP 还 是 幸 福 的 总 比 CGI 好 使 唤 ( 比 如 SESSION )
ASP 与 ACTIVEX SERVER COMPONENTS
在 网 上 查 找 ASP 组 件 的 时 候 看 到 有 洋 人 做 的 很 多 东 东 其 中 有 些 确 实做 得 很 好 比 如 SA-FILEUP ( 文 件 上 载 ) 飞 鸟 用 V B 也 捣 鼓 了 一 个 不 过 功 能 还很 弱 有 空 的 时 候 要 好 好 改 一 改 用 人 家 的 要 美 圆 试 用 版 的 有 期 限 bug 也很 难 保 证 没 有
主 席 教 导 我 们 自 立 更 生
Web 上 著 名 ASP 站 点
本 文 飞 鸟 摘 自http://www.activeserverpages.com/ 有 删 节
— 个 真 正 伟 大 的 站 点 提 供 详 尽 透 彻 的 联 接 地 址 ASP 著 作 吸 引 人 的 版 面 设计 和 一 些 由 Jon A. Mnemonic. 编 写 的 ASP 部 件
这 个 站 点 拥 有 解 疑 的 答 案 ASP 邮 件 清 单 信 息 ASP 技 巧 你 可 能 需 要 需 要 几个 星 期 的 时 间 才 能 读 完 这 些 信 息 在 http://www.15seconds.com/AllComponents.asp 可 读 到 新的 极 好 的 部 件 介 绍 . 有 很 有 用 的 文 档 与 例 子
-
是 个 获 得 无 数 价 廉 有 用 经 过 测 试 的 部 件 的 地 方
-
ASP 论 坛 http://www.vallin.com/forum/! 著 名 的 ASP 专 家 Alan
Saldanha 还 写 了 一 个 很 棒 的 教程 http://www.vallin.com/pub/1/asp1.asp
-
是 专 为 小 型 交 互 商 业 经 理 们 的 ASP 站 点 Manohar Kamath mkamath@niu.edu 建 立 了 新 闻 邮 件 一 个 芝 加 哥 的 ASP 用 户 组
-
http://www.glostart.com/webdev/default.asp
是 一 个 杀 手 飞 鸟 按 洋 鬼 子 真 会 夸 夸 其 谈 的 ASP 站 点 和 W eb 开 发 者 联 接 站 点 ! 你 能 够 在 他 们 的 搜 索 数 据 库 内 找 到 任 何ASP 的 东 西 他 们 还 增 加 了 这 样 一 个 特 色 允 许 其 他 ASP 的 开 发 者 或 跟 WEB 开发 有 关 的 人 员 立 即 加 上 他 们 的 站 点 联 接 或 代 码 例 子 高 兴 加 多 少 就 加 多 少
-
http://homepages.id.ibs.se/henrik/aspfaq/
是 粗 陋 的 ASP FAQ! 拥 有 无 以 计 数 成 吨 的 问 题 和 解答
获 得 更 新 的 BROWSCAP.INI 文 件 的 地 方 它 指 BROWSCAP.INI 拥 有 每 一 个 ASP 安 装时 微 软 没 有 提 供 支 持 你 的 A S P 站 点 的 浏 览 器
-
http://www.softwing.com/iisdev/
是 IIS 相 关 开 发 的 好 东 东 Christophe Wille 提 供 许 多 东 东 : ADSI 飞 鸟 按 可 能 是 广 告 服 务 接 口 如 果 有 朋 友 知 道 别 忘 了 告 诉 飞 鸟 , Locales, W3Info Object, Design Time controls for Visual Interdev, Search Wizard, SQL Server Manager.
-
Cobb Group 开 设 的 ASP 论 坛 ! 去 在 那 里 加 贴 你 的 问 题 读别 人 的 问 题 和 解 答 吧
原 文 有 TOP 20 飞 鸟 翻 译 得 好 累 TOP TEN 足 矣 哪 位 朋 友 想 淹 没 在 ASP 的 海洋 里 自 己 去 读 原 文 吧 请 原 谅
如 有 不 同 意 见 请 写 妹 儿 给 飞 鸟 欢 迎 前 来 讨 论 ASP
获 得 ASP 的 中 文 日 期 字 符 串
我 们 通 常 需 要 在 WEB 页 面 上 写 上 当 前 的 日 期 可 能 使 用 客 户 端 script 或者 使 用 ASP 使 用 ASP 的 一 个 特 点 是 它 产 生 的 效 果 看 起 来 是 静 态 的 页 面
但 实 际 上 它 是 动 态 生 成 的 如 果 你 希 望 用 ASP 显 示 一个 中 文 的 日 期 则 需 要转 化 一 下 下 面 是 用 来 转 化 的 函 数 及 其 调 用 实 例
<<<< 函数实现 >>>>
<% '======================================================
-
函数 Date2Chinese
-
功能
获得中文日期的字符串 如一九九八年五月十二日
-
参数: iDate 要转化的日期
-
返回: 中文日期的字符串
'======================================================
Function Date2Chinese(iDate) Dim num(10)
Dim iYear Dim iMonth Dim iDay
num(0) = "〇"
num(1) = "一"
num(2) = "二"
num(3) = "三"
num(4) = "四"
num(5) = "五"
num(6) = "六"
num(7) = "七"
num(8) = "八"
num(9) = "九"
iYear = Year(iDate) iMonth = Month(iDate) iDay = Day(iDate)
Date2Chinese = num(iYear \ 1000) + _ num((iYear \ 100) Mod 10) + num((iYear _
\ 10) Mod 10) + num(iYear Mod _ 10) + "年"
If iMonth >= 10 Then
If iMonth = 10 Then
Date2Chinese = Date2Chinese + _ "十" + "月"
Else
Date2Chinese = Date2Chinese + _
Else
End If
"十" + num(iMonth Mod 10) + "月"
End If
Date2Chinese = Date2Chinese + _ num(iMonth Mod 10) + "月"
If iDay >= 10 Then
If iDay = 10 Then
Date2Chinese = Date2Chinese + _ "十" + "日"
ElseIf iDay = 20 Or iDay = 30 Then
Date2Chinese = Date2Chinese + _ num(iDay \ 10) + "十" + "日"
ElseIf iDay > 20 Then
Date2Chinese = Date2Chinese + _ num(iDay \ 10) + " 十 " + _ num(iDay Mod 10) + "日"
Else
Date2Chinese = Date2Chinese + _ "十" + num(iDay Mod 10) + "日"
Else
End If
Date2Chinese = Date2Chinese + _
num(iDay Mod 10) + "日"
End If End Function
%>
<<<< 调 用 举 例 >>>>
<%
response.write date2Chinese(date())
%>
本 文 系 飞 鸟 个 人 写 作 如 有 雷 同 纯 属 巧 合
IE4 的 模 式 对 话 框 设 计
在 开 发 Intranet Web Mis 的 过 程 中 大 家 发 现 如 果 运 用 模 式 对 话 框 程 序 的 流程 将 更 为 清 楚 在 某 些 情 况 用 户 必 须 进 行 某 些 操 作 之 后 才 能 继 续 后 面 的事 情 比 如 某 些 安 全 性 要 求 比 较 高 的 操 作 需 要 操 作 者 输 入 口 令 以 确 认如 果 实 现 了 模 式 对 话 框 那 么 一 个 WEB 程 序 看 上 去 更 象 一 个 VB 或 DELPHI 开 发的 应用 程 序 结 合 运 用 ASP 和 DHTML 可 以 实 现 模 式 对 话 框
本 文 以 msgbox 的 实 现 为 例 客 户 端 VBScript 有 一 个 函 数 Msgbox() ( 以 及 衍 生 出来 的 Alert() confirm() ) 我 们 常 常 需 要 msgbox 显 示 一 些 简 要 提 示 或 是 简 单 选 择 但是 遗 憾 的 是 Msgbox 功 能 有 巨 大 缺 陷 如 果 是 中 文 句 子 在 西 文 系 统 下 只 怕只 能 看 到 一 串 “ ” 即 使 安 装 了 中 文 平 台 如 南 极 星 客 户 端 Jscript 类 似 的函 数 Alert() 和 confirm() , 当 然 也 存 在 着 相 同 的 问 题
幸 好 在 微 软 DHTML 说 明 书 找 到 了 一 个 函 数 : showModalDialog() 结 合 DHTML
和 ASP 便 可 实 现 MsgBox 的 功 能 并 且 无 操 作 平 台 CODEPAGE 不 同 的 烦 恼
<<<< showModalDialog 语 法 >>>>
variant = object.showModalDialog(sURL [, vArguments [, sFeatures]])
参 数
描 述
sURL
指 定 要 装 载 和 显 示 的 文 件 的 URL 地 址
vArguments
可 选 . Variant 变 量 在 显 示 文 件 时 设 定 的 参 数 . 这 个 参 数 可 以 传 送 包 括 数 组 在内 的 数 据 对 话 框 通 过 访 问 window 对 象 的 dialogArguments 属 性 来 获 得 这 些 属性 注 意 通 过 A S P 文 件 后 面 加 可 以 向 ASP 发 送 参 数
sFeatures
可 选 指 定 对 话 框 窗 体 的 参 数 可 有 下 列 内 容
语 法
描 述
dialogWidth:number
窗 口 宽 度
dialogHeight:number
窗 口 高 度
dialogTop:number
窗 口 上 部 坐 标
dialogLeft:number
窗 口 右 部 坐 标
center:{yes | no | 1 | 0 }
是否居中 缺省为 yes
<<<< 以 下 为 msg.asp 源 码 >>>>
<%@ LANGUAGE="VBSCRIPT" %>
<%
dim title dim msg dim itype
title=request("title") msg=request("msg") itype=request("type")
%>
<html>
<head>
<meta NAME="GENERATOR" Content="Microsoft FrontPage 3.0">
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80">
<title><%=title%></title>
</head>
<body language="javascript" onload="window.returnValue=0" topmargin="0" leftmargin="0" bgcolor="#000000" text="#FFFF00">
<table border="0" cellpadding="0" width="100%" cellspacing="0">
<tr>
<td width="100%"><p align="center"><br><%=msg%><br>
<br>
<%if itype=0 then
response.write "<input type='button' value=' 确 定 ' name='cmdOk' onclick='window.returnValue=1;window.close()'>"
elseif itype=1 then
response.write "<input type='button' value=' 确 定 ' name='cmdOk' onclick='window.returnValue=1;window.close()'> "
response.write "<input type='button' value=' 取 消 ' name='cmdCANCEL' onclick='window.returnValue=0;window.close()'>"
elseif itype=2 then
response.write "<input type='button' value=' 是 ' name='cmdYes' onclick='window.returnValue=1;window.close()'> "
response.write "<input type='button' value=' 否 ' name='cmdNo' onclick='window.returnValue=0;window.close()'>"
end if%>
</td>
</tr>
</table>
</body>
</html>
<<<< 调 用 范 例 >>>>
<html>
<head>
<meta NAME="GENERATOR" Content="Microsoft FrontPage 3.0">
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80">
<title>Document Title</title>
</head>
<script langauge="javascript"> function message(title,msg,type)
{
var ret=0; ret=showModalDialog(
"msg.asp?itle="+title+"&msg="+msg+"&type="+type, "","dialogWidth:30;dialogHeight:8;center:1")
return ret
}
// 此 函 数 将 调 用 方 法 简 化 使 它 在 调 用 方 法 上 看 起 来 更 象 系 统 的 MSGBOX
</script>
<body>
<form method="POST" action="../_vti_bin/shtml.dll/msg/test.asp" webbot-action="--WEBBOT-SELF--">
<p><input type="button" value="test" name="cmdTest1" language="javascript" onclick="alert(message('title','message is here',2))"></p>
</form>
</body>
</html>
关 于 Session Object
使 用 SESSION 是 一 种 在 ASP 文 件 间 传 递 参 数 的 常 用 方 法 你 可 以 传 递 数值 字 符 串 数 组 对 象
SESSION 一 个 奇 特 的 特 性 是 超 时 失 效 使 用 于 保 存 用 户 权 限 信 息 之 类 的 全局 信 息 数 据 使 用 Session.Timeout [ = nMinutes] 可 以 设 定 超 时 的 时 间 单 位 为 分 钟
从 某 种 意 义 上 说 SESSION 对 象 是 一 种 限 时 专 送 的 数 据 一 套 完 整 的 ASP 程 序 的 每 一 个 页 面 都 应 判 断 SESSION 是 否 超 时 如 果 超 时 则 应 进 行 一 定 的 处理 如 提 示 用 户 重 新 从 第 一 个 画 面 进 入 或 者 索 性 REDIRECT
另 外 一 个 类 似 的 对 象 是 APPLICATION 对 象 好 象 不 会 超 时 但 是APPLICATION 在 Web 启 动 的 时 候 就 存 在 了 对 所 有 浏 览 该 web 站 点 的 用 户 值 是一 样 的 直 到 Web 被 终 止 而 session 则 不 同 每 一 个 USER 都 有 各 自 的 SESSION session 对 象 产 生 于 用 户 与 web 站 点 建 立 对 话 的 开 始 直 到 超 时 结 束
Session 的 使 用 参 数 传 送 方 语 句
Session("yourPara") = yourVar 参 数 接 受 方 语 句yourVar = Session("yourPara")
需 |
要 |
注 意 的 是 |
||||
---|---|---|---|---|---|---|
如 否 是 对 如 否 是 数 |
果象果 组 |
传 送 的 是 对 象 ( IsObject ) 传 送 的 是 数 组 ( IsArray ) |
接 受 前 先 判 断 一 下 它 是 否 是 空 接 受 前 先 判 断 一 下 它 是 否 是 空 |
isNull isNull |
IsEmpty IsEmpty |
是 是 |
IE4 DHTML + ASP 实 现 滚 动 新 闻
经 常 在 一 些 站 点 看 到 有 这 样 的 东 东 一 个 方 框 里 面 的 内 容 通 常 是 新 闻标 题 滚 动 播 出 周 而 复 始 其 实 在 IE 4 上 显 示 这 样 的 功 能 是 异 常 简 单 的 事情 飞 鸟 就 做 了 一 个 不 敢 独 享 反 正 我 也 没 有 ASP 站 点 好 用 我 做INTRANET 扔 在 公 司 局 网 上 除 了 自 己 也 没 人 会 看 将 源 码 共 享 给 大 家
主 要 函 数 只 有 一 个
sub ShowNews (TitleStr,TitleLink,DateStr,left,top,NewsStr) 参 数 说 明
TitleStr 方 框 的 标 题
TitleLink 方 框 标 题 的 联 接 可 以 为 空 串
DateStr 如 果 是 新 闻 当 然 要 显 示 日 期 也 可 是 其 他 的 提 示 信 息
left,top 方 框 的 绝 对 坐 标
NewStr 实 际 显 示 的 信 息 及 其 联 接 是 个 两 维 数 组
<<<<< 调 用 范 例 >>>>>
<!-- #include file="news.inc" -->
<%
dim NewsStr(1,5)
NewsStr(0,0)="Microsoft Site Builder Networks" NewsStr(1,0)="http://www.microsoft.com/sitebuilder/"
NewsStr(0,1)=" 微 软 上 海 下 载 点 " NewsStr(1,1)="http://msdownload.online.sh.cn/"
NewsStr(0,2)=" 上 海 图 书 馆 书 海 漫 游 " NewsStr(1,2)="http://www.libnet.sh.cn/shmy/shmy.htm"
NewsStr(0,3)="搜索引擎 搜狐 " NewsStr(1,3)="http://www.sohoo.sh.cn"
NewsStr(0,4)="搜索引擎 Yeah " NewsStr(1,4)="http://www.yeah.net"
NewsStr(0,5)="搜索引擎 Yahoo 中文版 " NewsStr(1,5)="http://chinese.yahoo.com"
ShowNews "网址收集","","98-5-15",10,100,NewsStr
%>
看 news.inc 的 内 容
<% filename: news.inc written by Shen pengfei, 1998.5%><%
sub ShowNews(TitleStr,TitleLink,DateStr,left,top,NewsStr) %>
<script language="JScript">var idd=0;</script>
<div ID="TextBlock1" data-style="position:absolute;width:180;height:250;left:<%=left%>px;top:<%=top%>px;z- index:2;visibility:visible">
<div ID="shade" data-style="position:absolute;width:175;height:245;left:5px;top:5px;z- index:3;Background:#eeeeee;visibility:visible">
</div>
<div ID="shade2" data-style="position:absolute;width:175;height:245;left:0px;top:0px;z- index:4;Background:#000000;visibility:visible">
</div>
<div ID="shade3" data-style="position:absolute;width:173;height:218;left:1px;top:25px;z-in dex:5;Background:#ffffff;visibility:visible">
</div>
<div ID="title1" language="JScript" data-style="position:absolute;width:83;height:21;left:4px;top:3px;z- index:6;color:#ffffff;visibility:visible" onmouseover="this.style.color='#FF0000';this.style.cursor='hand'" onmouseout="this.style.color='#ffffff'" >
<%'onmousedown="idd=11" onmouseup="if (idd==11){ idd=0;window.navigate('')}"%>
<b><%=TitleStr%></b> </div>
<div ID="date1" data-style="position:absolute;width:73;height:21;left:104px;top:3px;z- index:6;color:Yellow;visibility:visible">
<%=DateStr%></div>
<div ID="title" data-style="position:absolute;width:173;height:200;left:4px;top:28px;z-index:6;color:#000000;font- size:14px;visibility:visible">
<marquee data-style="HEIGHT: 210px; WIDTH: 162px; text-align: left;left:1px;top:1px; font-weight: normal; margin- left: 5" id="news" bgColor="ffffff" scrollAmount="1" scrolldelay="100" behavior="loop" direction="up">
<font face="黑体"><% |
dim i for i =0 to Ubound(NewsStr,2) |
%> |
|
---|---|---|---|
<div |
ID="News<%=i%>" |
language="JScript" |
onmouseover="this.style.color='#FF0000';this.style.cursor='hand'" onmouseout="this.style.color='#000000';this.style.cursor='default'" onmousedown="idd=1"
onmouseup="if (idd==1){ idd=0;window.navigate('<%=NewsStr(1,i)%>')}">
<font color="red"> </font><%=NewsStr(0,i)%> </div><br><% next %>
</font></marquee> </div></div><% end sub
预 览 效 果
VBScript 特 有 的 两 个 函 数
VBScript 的 大 多 数 函 数 在 VB5 中 都 能 找 到 熟 悉 VB 的 朋 友 能 够 很 快 的 熟 悉和 掌 握 ASP 编 程 我 们 也 可 以 相 当 的 方 便 地 将 VB5 上 一 些 自 编 的 实 用 小 函 数移 植 到 ASP 上 但 是 不 知 大 家 知 道 不 知 道 VBScript 上 有 两 个 在 VB5 上 是 找 不 到的 也 许 还 有 更 多 并 且 这 两 个 函 数 还 是 十 分 实 用 的 飞 鸟 特 意 将 它 们 写出 来 与 大 家 一 起 分 享
— 个 是 Split
使 用 方 法 举 例strTest="one;two;three" arrResult=Split(strTest,";")
arrResult 将 是 一 个 三 个 元 素 的 数 组
arrResult(0)="one" arrResult(1)="two" arrResult(2)="three"
当 一 个 ASP 程 序 被 这 样 调 用 的 时 候
yourASP.asp?para=1,2,3
使 用 这 个 函 数 可 以 很 方 便 的 将 参 数 分 解 出 来
paraArr=Split(request("para"),",")
另 一 个 是 InstrRev
是 函 数 Instr 的 姊 妹 函 数 但 是 不 同 的 方 向 相 反使 用 方 法 举 例
file="c:\images\back.jpg" filename=Mid(file,InstrRev(file,"\")+1) filename 将 等 于 back.jpg
这 两 个 函 数 的 详 细 说 明 请 参 考 Visual InterDev 的 VBScript 文 档
关 于 ADO 的 简 单 介 绍
ADO 即 ActiveX Data Objects , 是 微 软 提 供 的 使 ASP 具 有 访 问 数 据 库 的 Components
熟 悉 VB 数 据 库 编 程 的 朋 友 会 发 现 ADO 与 RDO Remote Data Objects 有 某 种 类 似 的地 方 但 据 说 ADO 的 访 问 的 速 度 更 快 内 存 需 要 更 小
ADO 中 主 要 有 如 下 几 种 对 象 CONNECTION COMMAND RECORDSET ERROR PARAMETER PROPERTY FIELD 而 RECORDSET 对 象 是 ADO 访 问 数 据 的 主 要 界 面
RECORDSET 常 通 过 如 下 的 方 式 访 问 数 据
- 通 过 EXECUTE 方 法 访 问
On a Command object:
Set recordset = command.Execute _ (RecordsAffected, Parameters, Options)
command.Execute RecordsAffected, _ Parameters, Options
On a Connection object:
Set recordset = connection.Execute _ (CommandText, RecordsAffected, Options)
这 种 方 式 下 做 一 个 查 询 是 十 分 简 单 有 效 的 尤 其 是 用 connection 不
过 飞 鸟 曾 对 ACCESS 写 过 这 样 的 程 序
set rs=conn.execute("select * from employee")
结 果 发 现 rs.recordcount 等 于 -1 , 也 就 是 在 这 种 方 式 下 无 法 知 道 记 录 总 数 .
这 种 方 式 一 个 强 大 的 功 能 就 是 可 以 知 道 操 作 影 响 的 记 录 数例 如
dim recordsAffected set rs=conn.execute( _
"delete * from employee where sales<100", _ recordsAffected)
response.write cstr(recordsAffected) & _ " record(s) deleted"
- 通 过 open 方 法
recordset.Open Source, ActiveConnection, _ CursorType, LockType
这 种 方 法 下 你 必 须 先 调 用 SERVER.CREATEOBJECT() 产 生 一 个 RECORDSET
实 例
dim rs rs=server.createobject("adodb.recordset")
调 用 open 方 法 的 时 候 跟 前 面 一 样 也 可 使 用 COMMAND 或 不 用
先 来 说 说 不 用 COMMAND 对 象 的 情 况飞 鸟 比 较 喜 欢 这 种 用 法
下 面 是 做 查 询 记 录 的 例 子
dim sql dim rs
dim conn
on error resume next
set conn=server.createobject("adodb.connection") conn.open "employee","sa",""
sql="select * from employee where sales>="& _ cstr(minSales)
set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1
-
1 , 1 分 别 是 CursorType 和 LockType
-
请 参 考 ADO 的 说 明 书
-
如 果
以 这 种 方 式 打 开 RECORDSET ' recordcount 就 不 会 是 -1 了
do while not rs.eof
' here is some operate rs.movenext
loop rs.close conn.close
下 面 是 删 除 记 录 的 例 子
dim sql dim rs dim conn
on error resume next
set conn=server.createobject("adodb.connection") conn.open "employee","sa",""
sql="delete from employee where sales<=100" set rs=server.createobject("adodb.recordset") rs.open sql,conn,3,3
response.write "record(s) deleted" conn.close
注 意 此 时 由 于 rs 并 不 返 回 记 录 集 所 以 结 束 时 不 必 关 闭 RS 这 样 的 用 法
同 时 适 用 于 SQL 的 update insert into 语 句
再 来 讨 论 使 用 COMMAND 对 象 的 open 方 式使 用 之 前 先 要 建 立 COMMAND 对 象 的 实 例
dim cmdTemp dim dataconn
Set DataConn = Server.CreateObject _ ("ADODB.Connection")
dataconn.open "employee","sa",""
Set cmdTemp = Server.CreateObject _ ("ADODB.Command")
cmdTemp.CommandText = _
"SELECT * FROM employee WHERE employeeID=" & _ cstr(paraID)
cmdTemp.CommandType = 1
Set cmdTemp.ActiveConnection = dataConn
dim rs
set rs=server.createobject("adodb.recordset") rs.Open cmdTemp, , 1, 3
rs("salary") = rs("salary") + 200 rs("...")=....
......
rs.Update rs.close dataconn.close
这 种 用 法 让 我 想 起 以 前 VB 操 作 数 据 库 的 用 法 也 有 addnew delete 和 update ,
movefirst , movelast , movenext , moveprevious 只 是 不 须 写 edit
由 于 飞 鸟 水 平 有 限 只 能 对 ADO 进 行 简 单 介 绍 并 且 难 免 存 在 错 误 欢迎 指 正
一 个 页 面 的 多 个 提 交
有 没 有 抱 怨 过 HTML 的 FORM 只 能 提 交 到 一 个 地 方 有 没 有 找 到 解 决 的 办法 如 果 没 有 请 看 我 的 解 决 方 案 如 果 解 决 了 看 看 飞 鸟 的 办 法 是 否 与 你相 同
先 来 说 说 为 什 么 要 多 个 提 交 假 设 有 这 个 一 个 页 面 一 个 TEXTAREA 用来 编 辑 文 本 一 个 按 钮 “ 发 送 ” 将 编 辑 的 文 本 通 过 MAIL 发 送 出 去 一 个 按 钮 “ 保 存 ” 将 编 辑 的 文 本 保 存 起 来 以 后 再 发 这 样 就 有 了 两 个 提 交 的 目 的地 怎 么 办 呢
看 下 面 的 代 码
<form ACTION="sendMail.asp" METHOD="POST" NAME="frmMailEdit">
<p><input TYPE="submit" VALUE="发送"
NAME="cmdSend">
<input LANGUAGE="JavaScript" TYPE="button" VALUE="保存"
ONCLICK= _
"frmSaveMail.hideMail.value= frmMailEdit.txtMail.value frmSaveMail.submit()"
NAME="cmdSave">
</p>
<p><textarea ROWS="2" COLS="20" NAME="txtMail">
</textarea></p>
</form>
<form ACTION="saveMail.asp" METHOD="POST" NAME="frmSaveMail">
<input type="hidden" name="hideMail" value="(none)">
</form>
对 方 法 就 是 再 在 页 面 上 放 一 个 FORM 这 样 一 个 页 面 上 就 有 了 两 个 提 交的 出 口 其 中 的 一 个 FORM 是 主 FORM , 由 它 操 纵 其 他 的 FORM 当 需 要 其 他 的FORM 提 交 时 就 将 要 提 交 的 数 据 复 制 到 那 个 FORM 内 隐 藏 的 INPUT 中 再 调 用该 FORM 的 SUBMIT 方 法
IE4 DHTML + ASP 实 现 COOLBAR
在 IE4 DHTML 中 表 格 是 一 种 应 用 极 其 十 分 广 泛 的 东 西 人 们 用 它 来 做DHTML 的 菜 单 Tabbed Dialog Calender 几 乎 所 有 的 东 东 内 都 有 它 的 身 影 DHTM 和 ASP 结 合 起 来 我 们 会 发 现 做 出 的 东 西 将 更 易 维 护 更 易 使 用 和 管 理 这 里飞 鸟 使 用 表 格 将 实 现 一 个 动 态 的 工 具 条 外 观 与 OFFICE 97 的 工 具 条 近 似
<<<调用实例>>>
<!--#include file="coolbar.inc"-->
<%
dim paraArr(3,2)
'第一列 是 显示在按钮上的标题
'第二列 是 显示在按钮上的图象
- 第一列和第二列同时有的话
前者优先
'第三列 是 ToolTip '第四列 是 超联结
'行是 COOLBAR 上 的 按 钮 数 目
paraArr(0,0)="飞鸟之家"
paraArr(1,0)="" paraArr(2,0)="俺飞鸟的老巢"
paraArr(3,0)="http://flybird-home.yeah.net"
paraArr(0,1)="Joy Asp 论坛" paraArr(1,1)="" paraArr(2,1)= _
"提供 ASP 讨论的地方 但是生意不是十分的红火" paraArr(3,1)= _ "http://disc.server.com/discussion.cgi?id=20974" paraArr(0,2)="飞鸟留言本"
paraArr(1,2)=""
paraArr(2,2)="俺飞鸟的留言本 " paraArr(3,2)= _
"http://server.com/WebApps/guestbook.cgi?unique=6808870"
ShowCoolBar(paraArr)
%>
查 看 coolbar.inc
<% function ShowCoolBar(paraArr) on error resume next
dim tbNum
dim i tbNum=ubound(paraArr,2)
%>
<style>
.hightLightTab{
border-top:solid thin #E0E0E0; border-right:solid thin gray; border-left:solid thin #E0E0E0; border-bottom:solid thin gray;
/*font-family:Verdana; font-size:10pt; cursor:hand;
text-align:center;
font-weight:normal*/}
.Tab {
</style>
/*border-left:solid thin white; border-top:solid thin white; border-right:solid thin black;
border-bottom:solid thin black; */
/*font-weight:bold; text-align:center*/}
<script language="JavaScript">
function highLight(id){ document.all[id].className="hightLightTab"
}
function normalLight(id)
{
document.all[id].className="Tab"
}
function HitLinks(tolink)
{
window.location.href=tolink
}
</script>
<div align="center"><center>
<table align="center" border="2" frame="box" cellspacing="0" cellpadding="2" width="100%" bordercolorlight="#000000" bordercolordark="#FFFFFF" height="50">
<tr>
<font SIZE="2"><td
data-style="background:silver; padding-left:3" valign="middle" align="center"></font><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<%
for i = 0 to tbNum
%>
<td id="tb<%=i+1%>" class="tab" height="40" width="8%" language="javascript"
onmouseover="highLight('tb<%=i+1%>')"
onmouseout="normalLight('tb<%=i+1%>')" onclick="HitLinks('<%=paraArr(3,i)%>')" title="<%=paraArr(2,i)%>">
<%
if paraArr(0,i)<>"" then
%>
<p align="center"><font size=2><%=paraArr(0,i)%></font></p>
<%
else
%>
<center><img src="<%=paraArr(1,i)%>" width="16" height="15" alt="Undo.bmp (1318
bytes)"></center>
<%
end if
%>
</td>
<%
next
%>
</tr>
</table>
</td>
</tr>
</table>
</center></div>
<%
end function
%>
讨 论 SERVER.HTMLEncode()
在 ASP 里 面 有 一 个 固 有 的 对 象 叫 SERVER, 它 拥 有 两 个 相 似 的 函数 :HTMLEncode() 和 URLEncode()
URLEncode() 使 将 字 符 串 进 行 ESCAPE 编 码 , 例 如 空 格 转 化 为 %20, 而 大 小 写 的
26 个 字 母 是 不 转 化 的 , 中 文 就 要 转 化 为 两 个 , 形 如 %EF%CD(16 进 制 )
这 里 我 们 主 要 讨 论 另 一 个 HTMLEncode() 在 不 同 系 统 环 境 下 的 对 汉 字 处 理 的差 异 根 据 文 档 ,HTMLEncode() 将 字 符 串 进 行 这 样 的 转 化 <> 将 被 转 化 为 < 和 > 而 & 将 被 转 化 & 其 它 用 于 HTML TAG 的 符 号 也 进 行 类 似 的 转 化 当 我 们 需 要将 一 段 HTML 代 码 显 示 在 页 面 上 的 时 候 , 这 个 函 数 无 疑 是 最 好 的 选 择
我 曾 经 也 试 用 试 <pre> TAG 和 被 宣 称 已 过 时 的 <plaintext> TAG 但 是 IE3 和NETSCAPE 对 <pre> 毫 无 反 应 而 <plaintext> 在 NETSCAPE 上 表 现 极 为 糟 糕 , 没 法 结 束 , 即 使 用 </plaintext>, 结 果 满 屏 的 HTML 源 码
后 来 我 选 择 了 SERVER.HTMLEncode(), 只 是 在 中 文 系 统 加 PWS(WIN95/2.0) 和 IIS3 上有 副 作 用 , 它 将 好 好 的 汉 字 串 转 化 了 乱 码 , 究 其 原 因 它 将 汉 字 拆 成 了 两 个 字节 , 再 编 成 了 形 如 &123;&100; 的 样 子 , 用 NETSCAPE 还 能 看 但 IE 就 是 一 片 乱 码
为 此 , 我 只 好 另 想 办 法 , 在 中 文 系 统 加 PWS(WIN95/2.0) 和 IIS3 环 境 下 , 我 就 将英 文 字 母 ( 256) 转 化 为 &XXX;, 而 中 文 就 原 封 不 动 , 这 样 正 好 解 决 了 HTML TAG 转化 问 题 , 中 文 也 不 再 有 乱 码
sub ShowCode(Str)
'使用 showcode 函数是为了处理回车 转化为<BR>
dim l l=len(str) dim i
for i = 1 to l
if mid(str,i,1)<>chr(13) then if pwsonchsys then
dim ch ch=ascw(mid(str,i,1))
if ch<0 then ch=65536+ch if ch<256 then
response.write "&#"+cstr(ch)+";" else
response.write mid(str,i,1) end if
else
response.write mid(str,i,1) end if
else
response.write "<BR>"+chr(13)+chr(10)
end if next end sub
'调用范例
'如果在加 . 和
'环境下 pwsonchsys 为 true if pwsonchsys then
ShowCode(SourceCode) else
showCode(Server.HTMLEncode(SourceCode)) end if
也 许 有 朋 友 要 问 HTMLEncode 为 什 么 不 用 在 ShowCode 内 象 这 样
if ch<256 then
response.write "&#"+cstr(ch)+";" else
response.write Server.HTMLEncode(mid(str,i,1)) end if
每 个 字 符 都 调 用 效 率 太 低 了
注
在 VB5 和 VBSCRIPT 中 函 数 AscW 求 出 的 数 值 可 能 为 负 数 需 要 转 化 为 无 符号 数 才 是 Unicode 加 上 65536 就 是 了 NETSCAPE 对 Unicode 支 持 得 极 差 丰 显示 出 来 就 是 一 个 文 盲 啊
ASP Upload 的 实 现
ASP 的 文 件 上 传 功 能 需 要 ActiveX Component 来 实 现 微 软 有 个 东 东 好 象 叫PostAcceptor, 可 以 实 现 这 个 功 能 还 提 供 了 一 个 客 户 端 的 ACTIVEX 控 件 放 在HTML 页 面 上 这 样 可 以 拖 个 文 件 往 这 个 控 件 显 示 的 图 标 上 一 扔 文 件 就 上 传了 当 然 也 可 以 通 过 在 FORM 上 使 用 类 型 为 FILE 的 INPUT 输 入 文 件 路 径 或BROWSE FILE 提 交 上 传 但 是 使 用 好 象 还 是 烦 琐 了 一 点 我 认 为 当 初 我看 了 一 把 HELP 看 得 头 昏 眼 花 后 来 上 微 软 的 新 闻 组 正 好 见 有 人 抱 怨 微 软 东东 有 个 洋 鬼 子 推 荐 了 SA-FILEUP 我 便 D 了 个 SA-FILEUP 发 现 这 个 东 东 相 当 的不 错 功 能 异 常 的 强 只 是 D 的 是 演 示 版 难 说 不 知 道 什 么 时 候 就 不 能 用了 而 且 买 的 话 价 钱 贵 得 很 大 概 八 九 百 美 圆 吧 当 时 还 很 空 吃 饱 了 没 事就 花 了 两 天 时 间 用 VB5 仿 照 SA-FILEUP 的 样 子 编 了 一 个 当 然 功 能 很 弱
缺 点
— 次 只 能 传 一 个 文 件 一 般 情 况 下 足 够 了 不 能 附 加 上 传 文 件 的 说 明
未 对 上 传 文 件 的 大 小 进 行 限 制 这 个 功 能 增 加 起 来 很 不 难 你 自 己 加
8
在 E 文 下 取 含 中 文 的 原 始 文 件 名 可 能 取 出 乱 码优 点
十 分 好 用 在 ASP 里 调 用 十 分 简 便
保 存 在 服 务 器 上 的 文 件 名 可 以 由 程 序 指 定 这 样 可 以 通 过 数 据 库 对 上 传
的 信 息 进 行 管 理
可 以 指 定 多 种 文 件 后 缀 例 如 上 传 图 片 可 以 指 定 后 缀 为 JPG 或 GIF
飞 鸟 的 FREE 东 东 一 文 不 值
- HTML 文 件 的 写 法
<form enctype="multipart/form-data" method="POST" action="Upload.asp" name="frmUpload">
<p>请上传图片类型的文件
<p>上传文件 <input type="file" name="file" size="20"></p>
<p><input type="submit" value="上传" name="B1">
</p>
</form>
- ASP 程 序 实 例
<%
'
' upload.asp flybird 1998 '
set FileUp=server.createobject("FileUp.UpLoad") NewFileName = Mid(fileup.UserFilename, _
InstrRev(Fileup.UserFilename, "\") + 1) '取得原始文件名 好判别文件的后缀
if fileup.FileFound( _
server.mappath("Files/"+NewFileName))_
=False then
'判断文件是否已有 避免覆盖 若允许覆盖
'则可省却
if fileup.CheckFileType(newfilename, _ "jpg;gif")=true then
'判断文件是否是图片文件
fileup.SaveAs server.mappath("Files/"+ _ NewFileName)
if fileup.TotalBytes<>0 then response.write "文件"&newfilename& _ " 上 传 成 功 总 共 " & _ cstr(Fileup.TotalBytes)&"Bytes"
else
response.write _
"对不起 上传失败 写了 0 bytes."
end if else
response.write _
"对不起 请上传图片文件 JPG/GIF" end if
else
response.write _
"对不起 该文件已经存在 不准覆盖"
end if
set fileup=nothing
%>
怎 么 样 程 序 很 简 单 吧
- Fileup Component 的 编 写
进 入 关 键 性 的 正 题
开 发 环 境 中 文 WINDOWS NT 4 + VB5 + WINDOWS NT 4 OPTION PACK 如 果 你 想 在
win95 下 使 用 请 在 win95 下 编 译 如 果 你 安 装 了 OPTION PACK 的 ASP Components SDK Samples 请 去 研 究 研 究 参 考 地 址 \InetPub\iissamples\sdk\components\vb
请 按 照 下 列 步 骤 进 行
<1> 运 行 VB5 新 建 一 个 Project 类 型 为 activex dll
<2> 菜 单 Project -> reference , 加 入 下 列 选 项
Visual basic for application
visual basic runtime objects and procedure visual basic objects and prodecures
ole automation
microsoft transaction server type library
microsoft active server pages object library 放 到 别 的 机 器 上 使 用 也 需 要 这 些库 的 支 持 你 可 以 制 作 安 装 盘
<3> 菜 单 Project -> add class exist -> 加 入 upload.cls 该 文 件 在 下 面
<4> 将 project 属 性 内 的 NAME 改 为 fileup ,upload module 的 instancing: 6 - globalmutiluse
<5> 菜 单 file -> build fileup.dll
<6> 进 行 命 令 行 键 入 regsvr32 fileup.dll 注 册 该 dll regsvr32.exe 在 winnt 目 录 下 可 以
找 到
原 理 简 述
文 件 上 传 时 浏 览 器 向 服 务 器 发 送 的 数 据 是 2 进 制 数 据 ASP 的 Request 对 象可 以 用 Request.TotalBytes 知 道 其 大 小 并 且 用 Request.BinaryRead() 可 以 读 出 其 2 进 制 的内 容 但 无 法 写 入 文 件 fileup.dll 可 以 操 作 ASP 的 request response 对 象 同 时 可 以进 行 文 件 操 作 速 度 也 快 . 唯 一 的 障 碍 是 我 们 不 知 道 发 来 数 据 的 格 式 文 件名 在 那 里 文 件 内 容 在 什 么 位 置 我 起 初 也 不 知 道 我 把 它 们 写 到 一 个 文件 然 后 用 VC 以 binary 方 式 打 开 它 分 析 其 结 构 数 据 各 个 部 分 之 间 有 Boundary边 界 分 开 每 个 部 分 结 束 时 总 有 0D 0A 回 车 换 行
- Boundary 值 得 注 意 的 是
除 了 文 件 本 身 的 2 进 制 数 据 其 它 的 部 分 比 如 原 始 文 件 名 称 必 须 转 化 为UNICODE 才 能 使 用 知 道 哪 儿 有 详 细 资 料 就 好 了 我 可 以 在 功 能 上 做 得 很 象SA-FILEUP
查 看 UPLOAD.CLS 的 源 码
VERSION 1.0 CLASS BEGIN
MultiUse = -1 'True END
Attribute VB_Name = "Upload"
Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False Attribute VB_Exposed = True Option Explicit
Dim ConType As String ' as Content Type
Dim ConDisposition As String ' as Content Disposition *** Dim iEmpty As Boolean ' as isEmpty ***
Dim sMimeVersion As String ' as MimeVersion *** Dim iTotalBytes As Long ' as TotalBytes
Dim sUserFileName As String ' as UserFileName Dim BinData As Variant
Dim iFoundErr As Boolean ' as FoundErr Dim sErrMsg As String ' as ErrMsg Dim sFileName As String
Dim startTime As Date Dim endTime As Date
Dim ConDisHeadStr As Variant Dim SepStr As Variant
Dim sBoundary As String Dim iPos As Long
'==============================================
'属性 Type Access 说明
'FoundErr boolean read only 'ErrMsg string read only 'ContentType string read 'TotalBytes long-integer read 'UserFileName string read 'Method 方法
'SaveAs fName fName 是带路径的文件名
'==============================================
Private Sub Class_Initialize() startTime = Now endTime = Now iTotalBytes = 0
iEmpty = False iFoundErr = False MakeStr GetFileStream
If iFoundErr = True Then iFoundErr = False
Err.Raise vbObjectError + 27, "fileup.Upload", ErrMsg End If
End Sub
Public Property Get UsedTime() As String
UsedTime = CStr(CDbl(endTime - startTime) * 24 * 3600) + "秒" End Property
Public Property Get FoundErr() FoundErr = iFoundErr
End Property
Public Property Get ErrMsg() ErrMsg = sErrMsg
End Property
Public Property Get ContentType() ContentType = ConType
End Property
Public Property Get TotalBytes() TotalBytes = iTotalBytes
End Property
Public Property Get UserFileName() UserFileName = sUserFileName
End Property
Public Sub SaveAs(fName As String)
If Trim(fName) = "" Then iFoundErr = True
sErrMsg = "没有指定文件名"
Else
sFileName = fName SaveFile
End If
If iFoundErr = True Then iFoundErr = False
Err.Raise vbObjectError + 27, "fileup.Upload", ErrMsg End If
endTime = Now End Sub
Private Sub SaveFile() Dim fName
Dim Buffer() As Byte Dim charWrite As Byte Dim i, l
Dim iPos2
If iFoundErr = True Then Exit Sub
fName = sFileName
iPos2 = InStrB(iPos, BinData, ChrB(13) + ChrB(10) + sBoundary)
If iPos <> 0 Then
If Dir(fName) <> "" Then Kill fName
Open fName For Binary Access Write Lock Read Write As #1 ReDim Buffer(iPos2 - iPos)
Buffer = MidB(BinData, iPos, iPos2 - iPos) iTotalBytes = iPos2 - iPos
If iTotalBytes = 0 Then iFoundErr = True sErrMsg = "字节数为零" Close #1: Exit Sub
Else
Put #1, 1, Buffer
End If Close #1
Else
iFoundErr = True
ErrMsg = "无法获得数据" End If
Exit Sub End Sub
Private Sub MakeStr()
''''"C o n t e n t - D i s p o s i t i o n :"
ConDisHeadStr = ChrB(Asc("C")) + ChrB(Asc("o")) + ChrB(Asc("n")) + ChrB(Asc("t")) + ChrB(Asc("e")) +
ChrB(Asc("n")) + ChrB(Asc("t")) + ChrB(Asc("-")) + ChrB(Asc("D")) + ChrB(Asc("i")) + ChrB(Asc("s")) +
ChrB(Asc("p")) + ChrB(Asc("o")) + ChrB(Asc("s")) + ChrB(Asc("i")) + ChrB(Asc("t")) + ChrB(Asc("i")) + ChrB(Asc("o")) + ChrB(Asc("n")) + ChrB(Asc(":"))
SepStr = ChrB(Asc("f")) + ChrB(Asc("i")) _
+ ChrB(Asc("l")) + ChrB(Asc("e")) _
+ ChrB(Asc("n")) + ChrB(Asc("a")) _
+ ChrB(Asc("m")) + ChrB(Asc("e")) _
+ ChrB(Asc("="))
End Sub
Private Sub GetFileStream() On Error Resume Next Dim lSize As Long Dim Buffer
Dim objResponse As Response Dim objRequest As Request
Dim objContext As ObjectContext
Set objContext = GetObjectContext()
Set objResponse = objContext("Response")
Set objRequest = objContext("Request") lSize = objRequest.TotalBytes
BinData = objRequest.BinaryRead(lSize) iPos = InStrB(BinData, ConDisHeadStr)
If iPos = 0 Then iFoundErr = True
sErrMsg = "Content Disposition Error" Exit Sub
Else
sBoundary = LeftB(BinData, iPos - 3)
End If
iPos = InStrB(BinData, SepStr)
If iPos <> 0 Then
iPos = iPos + LenB(SepStr) Buffer = MidB(BinData, iPos, 1)
If AscB(Buffer) = 34 Then iPos = iPos + 2
iPos = InStrB(iPos, BinData, ChrB(34))
If iPos = 0 Then iFoundErr = True
sErrMsg = Chr(34) + "不成对" '''''''''''''''''
Exit Sub End If
Buffer = LeftB(BinData, iPos - 1) sUserFileName=ToGB(Buffer)
If Trim(sUserFileName) = "" Then iFoundErr = True
sErrMsg = "UserFileName not found" ''''''''''''''''' Exit Sub
End If
iPos = InStrB(iPos, BinData, ChrB(34))
If iPos = 0 Then iFoundErr = True
sErrMsg = Chr(34) + " not found" Exit Sub
End If
iPos = iPos + 1
iPos = InStrB(iPos, BinData, ChrB(Asc(":")))
If iPos = 0 Then iFoundErr = True
sErrMsg = ": not found" ''''''''''''''''' Exit Sub
End If
iPos = InStrB(iPos + 1, BinData, ChrB(13) + ChrB(10))
If iPos = 0 Then iFoundErr = True
sErrMsg = "0D 0A 找不到"
Exit Sub End If
Buffer = LeftB(BinData, iPos - 1) ConType=ConvertToWideChar(Buffer) iPos = iPos + 4
Else
iFoundErr = True
sErrMsg = "filename position error" End If
Else
iFoundErr = True
sErrMsg = "filename could not found" End If
End Sub
Private Function ToGB(ByVal strFrom As String) Dim i
Dim l Dim strTo
l = LenB(strFrom) i = 1
Do While i <= l
If AscB(MidB(strFrom, i, 1)) <= 127 Then
strTo = strTo + ChrW(AscB(MidB(strFrom, i, 1))) Else
If i + 1 <= l Then
If AscB(MidB(strFrom, i + 1, 1)) > 127 Then Dim ch, cl As Long
ch = AscB(MidB(strFrom, i, 1))
cl = AscB(MidB(strFrom, i + 1, 1)) strTo = strTo + Chr(ch * 256 + cl)
i = i + 1 Else
strTo = strTo + ChrW(AscB(MidB(strFrom, i, 1))) End If
Else
strTo = strTo + ChrW(AscB(MidB(strFrom, i, 1))) End If
End If
i = i + 1 Loop
ToGB = strTo End Function
Private Function ConvertToWideChar(ByVal strFrom As String) Dim i
Dim l Dim strTo
l = LenB(strFrom) i = 1
Do While i <= l
If AscB(MidB(strFrom, i, 1)) <= 127 Then
strTo = strTo + ChrW(AscB(MidB(strFrom, i, 1))) Else
If i + 1 <= l Then
If AscB(MidB(strFrom, i + 1, 1)) > 127 Then Dim ch, cl As Long
ch = AscB(MidB(strFrom, i, 1))
cl = AscB(MidB(strFrom, i + 1, 1)) strTo = strTo + Chr(ch * 256 + cl)
i = i + 1 Else
strTo = strTo + ChrW(AscB(MidB(strFrom, i, 1)))
End If Else
strTo = strTo + ChrW(AscB(MidB(strFrom, i, 1))) End If
End If
i = i + 1 Loop
ConvertToWideChar = strTo End Function
' '函数 FileFound
'功能 查找文件是否存在
'参数 file 要查找的文件 path,如 c:\autoexec.bat ' 本函数是为文件上传功能开发的
- 文件上传时
需要判断其是否已经存在,以免覆盖 ' Function FileFound(file)
Dim iFound Dim f
iFound = False f = Dir(file, 0) If f = "" Then
FileFound = False Else
FileFound = True End If
'E:\Inetpub\wwwroot\UpLoadTest\Files\beauty.jpg End Function
'函数 CheckFileType
'功能 检查文件类型
'参数 file 文件名 可包含文件路径 eg:"C;\My document\myweb.doc" ' tag 检查的类型 eg:"txt;bmp;doc"
Function CheckFileType(ByVal file, ByVal tag) Dim filetype()
Dim i Dim pos i = 0
If tag = "" Then ReDim filetype(1) i = 1
filetype(0) = "" End If
Do While tag <> "" pos = InStr(tag, ";")
If pos = 0 And tag <> "" Then i = i + 1
ReDim Preserve filetype(i) filetype(i - 1) = UCase(tag) tag = ""
Else
i = i + 1
ReDim Preserve filetype(i)
filetype(i - 1) = UCase(Left(tag, pos - 1)) tag = Right(tag, Len(tag)
- pos)
End If Loop
If i = 0 Then CheckFileType = False: Exit Function Dim j
Dim found found = False
file = UCase(file)
If InStr(file, ".") = 0 Then file = ""
Do While InStr(file, ".") <> 0 pos = InStr(file, ".")
file = Right(file, Len(file) - pos) Loop
For j = 0 To i - 1
Next
If file = filetype(j) Then found = True: Exit For
End If
CheckFileType = found End Function
优 化 ASP 程 序
ASP 编 程 应 该 是 比 较 容 易 上 手 运 用 frontpage VI 等 工 具 可 以 十 分 方 便 地构 键 WEB 页 面 而 VBScript/JavaScript 等 脚 本 语 言 也 很 容 易 上 手 当 掌 握 了 ASP 编 程之 后 也 许 你 比 较 关 心 的 是 程 序 的 效 率 问 题 即 怎 样 使 你 的 程 序 更 加 迅 速 地执 行 而 少 占 用 服 务 器 的 CPU 和 内 存 开 销 这 一 点 很 重 要 如 果 有 很 多 人 访 问你 的 网 站 这 种 因 数 必 须 被 考 虑 否 则 系 统 崩 溃 可 不 是 好 玩 的
这 里 我 们 的 讨 论 以 VBScript 讨 论 为 主
- 避 免
使 用 VBScript 的 动 态 数 组
VBScript 的 动 态 数 组 是 使 用 在 无 法 确 定 数 据 多 少 场 合 之 下 的 不 过 遗 憾 的是 动 态 分 配 的 时 候 速 度 慢 占 用 系 统 资 源 多
- 避 免
写 程 序 进 行 排 序
当 对 一 个 数 组 进 行 排 序 的 时 候 如 果 数 组 元 素 很 多 程 序 将 花 费 许 多 时间 来 完 成 这 项 工 作
- 合 理 处 理 大 量 的 字 符 串 操 作
尽 量 使 用 系 统 的 函 数 避 免 使 用 自 己 编 的 脚 本 代 码 脚 本 执 行 较 慢
- 优 化
数 据 库 的 操 作
假 如 你 使 用 大 型 的 数 据 库 比 如 MS SQL Server 6.5 或 Oracle 8, 应 合 理 结 合 WEB 服 务 器 和 数 据 库 服 务 器 的 的 处 理 使 用 存 储 过 程 而 不 是 进 行 大 量 的 SQL 查询 以 减 少 网 络 流 量 减 少 返 回 的 结 果 集 ResultSet , 由 数 据 库 服 务 器 处 理 要比 包 数 据 返 回 web 服 务 器 进 行 处 理 高 效 得 多
- 使 用 ASP Components
调 用 ASP 部 件 处 理 复 杂 的 运 算 文 件 读 写 大 容 量 的 字 符 串 处 理
如 何 确 定 ASP 程 序 的 执 行 时 间
<%
dim t1,t2 t1=now()
' your asp code place here ' .......
t2=now()
response.write " 执 行 用 了 " & _ cstr(cdbl((t2-t1)*24*60*60)) & " 秒 "
%>
如 何 你 的 程 序 很 短 使 用 上 面 的 方 法 没 有 任 何 的 意 义 显 示 结 果 等 于
0 但 如 果 在 做 数 据 库 查 询 的 时 候 了 解 这 种 情 报 是 十 分 必 要 的
使 用 MS Posting Accepter 的 心 得
MS Posting Accepter 的 优 点可 以 上 传 多 个 文 件
可 以 指 定 上 传 的 目 录 该 目 录 要 可 写
可 以 附 加 一 些 信 息 例 如 可 输 入 文 件 的 说 明
MS Posting Accepter 存 在 的 问 题 及 其 解 决
- 文 件 改 名 问 题
MS Posting Accepter 上 传 的 文 件 以 原 来 的 文 件 名 保 存 到 目 的 地 如 果 你 希 望 以程 序 生 成 的 名 字 保 存 可 以 这 么 做
先 上 传 到 一 个 临 时 的 目 录 下 然 后 copy 到 目 的 目 录 下 copy 可 以 改 名 copy 功能 可 以 用 filesystemobject 实 现
- 文 件 覆 盖 问 题
MS Posting Accepter 上 传 文 件 只 会 简 单 覆 盖 先 上 传 到 一 个 临 时 的 目 录 下 再用 查 找 目 的 目 录 的 同 名 文 件 用 filesystemobject 实 现
- 文 件 大 小 限 制 问 题
同 上 面 先 上 传 到 一 个 临 时 的 目 录 下 判 断 其 大 小 用 filesystemobject 实 现
- 附 加 中 文 信 息 问 题
MS Posting Accepter 会 把 附 加 的 中 文 信 息 变 成 不 可 显 示 的 乱 码 客 户 端 submit
前 先 进 行 编 码 服 务 器 端 再 解 码 比 较 麻 烦
使 用 CSS 统 一 WEB 页 面 的 界 面 风 格
飞 鸟 在 编 写 asp wwwboard 4 的 时 候 开 始 使 用 CSS 统 一 各 个 页 面 的 界 面 风格 在 不 同 的 页 面 上 显 示 相 同 颜 色 的 背 景 相 同 大 小 的 文 字 相 同 的 input 风格 虽 然 我 的 应 用 还 是 相 当 初 级 的 但 是 整 个 程 序 的 风 格 随 之 焕 然 一 新 并且 以 后 可 能 很 方 便 地 变 换 其 风 格 正 好 有 朋 友 问 我 css 的 问 题 那 就 顺 便 写 一文 以 壮 大 主 页 内 容
asp wwwboard 4 所 使 用 的 CSS 文 件 forum.css 全 文 如 下
-
/*
在 css 里面可以写一些注释 注释的写法正如你看到的那样是标准 C 注释的写法
*/ body
background: #Ffffef;
/*设定背景色 在 IE4 下如果您同时还使用了背景图片图片将不被显示 而 NN4 显示背景图片 CSS 无效 所以如果你要使用图片 就不要使用 body 的背景色
*/
font-size: 75%;
/*通常宋体显示的时候 总是让人觉得字的边缘有点参次模糊的感觉 加了上面这句 局面马上改观
*/
font-family: 宋体;
/*
设定字体名称
*/
}
/*CSS 可以设定 html tag 的风格如果这么写
TAG {...}
则对所有未使用 class 的 TAG 都起作用如果这么写
TAG.classname {...}
则需要在引用的时候注名 class <TAG class="className" ...>
*/ p{
font-size:9pt;
/*
将字体的大小设定为 9 个 point
你也可以用 px(pixel)指定字体的大小
但是使用的 pt 的一个好处就是在不同分辨率下 字体大小是一致的
在实际使用的时候我发现 9pt 和 11pt
比较好看
*/
}
li{
}
font-size:9pt;
input.smallInput
{
font-size:9pt; background-color: white; color:rgb(0,0,128) ;
}
textarea.smallarea
{
font-size:9pt; background-color: white; color: rgb(0,0,128) ;
}
select.smallSel
{
font-size:9pt;
background-color: white;/* rgb(210,233,255);*/ color: rgb(0,0,128) ;
}
input.buttonface
{
/*
使用这种风格的按钮背景色为黄色但在 nn4 中无效 当然也不会出错调用的时候应这么写
<input type='button' class='buttonface' >
也适用于 submit reset 按钮
*/
font-size:9pt;
background-color: rgb(255,204,51);
/*
rgb 配色方式
也可以这么写 #FFCC33
十六进制
FF=255 CC=204 33=51
*/
color: rgb(0,0,128) ;
}
-
如 何 掌 握 CSS 技 术
学 习 CSS 需 要 你 对 HTML TAG 有 一 定 的 了 解 如 果 你 有 Visual Studio 98 在 MSDN
的 盘 上 可 以 找 到 dhtml reference 内 有 IE 完 整 的 CSS 说 明
网 上 有 一 些 比 较 美 观 的 站 点 大 都 是 使 用 CSS 的 可 以 借 鉴 借 鉴
远 程 维 护 数 据 库
如 果 你 有 一 个 主 页 支 持 ASP 技 术 服 务 器 远 在 他 乡 就 象 我 一 样 的 话 你 一 定 也 会 遇 上 与 我 一 样 的 问 题 捣 腾 了 一 个 使 用 ACCESS 数 据 库 的 ASP 程序 用 了 一 段 时 间 之 后 觉 得 有 必 要 改 进 一 下 数 据 库 的 结 构 加 个 表 或 者 几个 字 段 也 就 是 有 一 个 数 据 库 维 护 的 问 题 你 会 用 什 么 样 的 方 法 呢
俺 早 期 的 做 法
凭 着 公 司 专 线 的 优 势 不 用 花 自 己 的 钱 把 数 据 库 ftp 传 回 来 改 完 了再 ftp 上 去 但 后 来 数 据 库 使 用 次 数 多 了 文 件 也 渐 渐 大 起 来 且 onlinechina 本 来速 度 就 不 是 很 快 ftp 起 来 不 免 有 点 慢
俺 后 来 的 办 法
是 写 一 个 asp 程 序 用 程 序 维 护 数 据 库
— 个 例 子 是 俺 为 论 坛 程 序 增 加 一 个 精 华 区 的 功 能 所 以 写 一 个 ASP 程序 FTP 上 去 运 行 一 把 就 完 成 了 功 能
<%@ LANGUAGE="VBSCRIPT" %>
<%option explicit%>
<!--#include file="conn.inc"-->
<%
response.buffer=false
'
' this file create "essence" table structure ' on error resume next
dim sql
reponse.write "create 'essence' table structure...<br>"
sql="create table essence( id counter CONSTRAINT id PRIMARY" _ " KEY,announceid int, boardid int, username varchar(50) ," _
" useremail varchar(255) ,url varchar(255) , urlTitle " _ "varchar(255) ,urlPic varchar(255) ,Topic varchar(255) ," _ "Body memo ,dateAndTime varchar(50) , hits int,length int)" conn.execute sql
response.write "Update OK"
%>
这 种 方 法 的 优 点 是 很 明 显 的 比 较 快 但 是 要 求 你 对 sql 语 句 十 分 的 熟悉 当 然 也 可 能 带 来 不 可 恢 复 的 恶 果 最 好 先 在 本 机 先 调 试 通 过 确 信 操 作的 正 确 性 再 上 传 程 序
拒 绝 不 友 好 者 的 访 问
在 我 们 建 设 网 页 的 过 程 中 常 常 会 遭 遇 一 些 不 速 之 客 在 留 言 本 或 讨 论 组上 乱 涂 乱 写 贴 些 攻 击 性 的 javascript 代 码 虽 然 我 们 的 技 术 已 经 能 够 抵 挡 这 些攻 击 但 老 实 说 看 到 这 些 兄 弟 的 劣 迹 真 让 人 不 快 也 许 我 们 可 以 采 取 一 些措 施 将 这 些 人 拒 之 门 外
记 录 访 问 者 的 IP
使 用 Request.ServerVariables("REMOTE_ADDR") 可 获 得 浏 览 你 网 页 的 人 的 IP 将 信 息 记 录下 来
建 立 不 友 好 者 的 IP 列 表
你 可 以 将 列 表 保 存 在 数 据 库 中 或 写 进 text 文 件
在 你 ASP 中 检 验 访 问 者 的 IP
如 果 是 列 表 中 的 则 禁 止 访 问 大 M 他 亦 可
应 该 将 一 些 常 用 的 Proxy Server 的 IP 也 放 进 列 表
从 而 防 止 对 方 绕 道 而 进 当 然 这 种 方 法 对 使 用 动 态 IP 的 人 无 效
飞 鸟 按 当 然 飞 鸟 之 家 不 会 采 用 上 述 技 术 飞 鸟 之 家 向 每 一 个 向 往 学 习
ASP 技 术 的 朋 友 敞 开 俺 只 是 向 大 家 介 绍 技 术 上 的 可 行 性
防 止 连 续 提 交
在 我 们 的 留 言 本 或 讨 论 组 上 常 见 有 人 留 下 一 些 相 同 的 内 容 有 点 类 似 于 " 结 巴 " 原 因 是 网 路 速 度 慢 点 击 提 交 按 钮 后 看 到 没 有 反 应 就 再 点 一下 多 次 提 交 相 同 的 内 容 结 果 就 结 巴 了
那 么 有 没 有 办 法 解 决 呢
俺 有 办 法 在 客 户 端 想 一 点 办 法 用 一 个 变 量 标 志 是 否 提 交 过 的 状 态
As follows:
<script language=javascript> var bSubmit=false
function chkSubmit(){
if (bSubmit==false)
{
bSubmit=true; return true;
}
else
}
return false;
</script>
再在 form 上加上
<form name=frmname method=post action=yourASP.asp onsubmit="return chkSubmit()">
当 一 个 页 面 提 交 之 后 而 后 续 页 面 还 没 有 调 进 来 的 时 候 这 个 页 面 还 是
活 动 的 脚 本 仍 然 能 执 行 form 还 能 提 交
运 用 上 面 的 程 序 就 可 以 防 止 多 次 提 交 的 发 生
关 于 口 令 加 密
在 |
ASP 应 用 中 一 个 敏 感 的 话 题 是 防 止 系 统 的 口 令 被 人 窃 取 |
如 |
果 | 口 | 令 | 被 | ||
---|---|---|---|---|---|---|---|---|
人 |
得 | 到 |
了 就 会 让 你 的 系 统 处 于 一 种 危 险 的 境 地 中 我 们 必 须 采 |
取 |
一 |
定 | 的 | 保 |
护 |
措 | 施 | ||||||
我 |
的 BBS 遭 遇 的 最 初 黑 客 是 露 茜 露 茜 发 来 一 条 icq 的 message |
问 |
我 | 版 | 主 | 管 | ||
理 帖 |
画 子 |
面 |
显 示 在 上 面 那 个 frame 还 是 下 面 的 frame 我 说 下 面 露 茜 进 然 后 MAIL 骂 我 太 不 注 意 安 全 性 了 |
去 |
改 |
了 | 一 | 个 |
后 |
来 露 茜 搞 了 个 加 密 算 法 发 给 了 我 并 铮 铮 教 导 我 用 它 |
可 |
是 | 我 | 是 | |||
个 |
懒 | 人 |
— 般 写 完 了 一 个 程 序 我 就 不 大 愿 意 去 改 程 序 特 别 是 |
要 |
涉 |
及 | 改 | 动 |
算 |
法 |
这 |
所 以 直 到 现 在 都 没 有 改 :) 个 算 法 很 不 错 破 解 的 机 会 几 乎 是 0 对 同 一 个 字 符 串 在 |
不 |
同 | 的 | 机 | 器 |
上 |
加 | 密 |
结 果 是 完 全 不 同 的 如 果 你 的 系 统 密 码 串 被 人 得 到 但 这 |
个 |
串 |
的 | 原 | 文 |
还 |
是 | 没 |
法 破 解 的 |
|||||
贡 |
献 出 来 给 大 家 瞧 瞧 ( 也 给 露 茜 的 东 东 爆 爆 光 ) |
function encrypt(prestring) Rem 对口令进行加密Dim texts
Dim seed Dim i,length
prestring = trim(preString)
length = len(preString) seed = length Randomize(length) texts = ""
for i = 1 to length
seed = int(95*rnd(-asc(mid(preString,i,1))- _ seed*asc(right (prestring,1)))+32)
texts = texts & chr(seed) & chr(int(95*rnd(-seed)+ _ 32))
next
encrypt = texts end function
找 几 个 字 符 串 加 密 看 一 下 是 不 是 每 次 结 果 都 一 样
response.write encrypt("abc")
注 意 不 要 试 图 加 密 汉 字 字 符 串 每 次 的 结 果 可 能 不 同
你 可 以 将 加 过 密 的 口 令 存 进 数 据 库 以 后 口 令 校 验 就 是 将 输 入 的 串 加密 然 后 再 跟 数 据 库 里 的 内 容 比 较 是 否 相 等 即 使 数 据 库 里 的 内 容 被 人 取得 对 方 也 无 法 破 解
ASP FAQ ( 国 外 站 点 翻 译)
ASP 发送 E-MAIL
如 果 你 希 望 用 ASP 发 送 E-MAIL 你 需 要 安 装 一 个 A S P 部 件 有 几 种 第 三 方厂 商 的 部 件 你 可 以 使 用 但 是 在 IIS4 下 你 可 以 使 用 CDONTS
虽 然 名 字 奇 怪 它 是 很 容 易 使 用 的 并 且 性 能 良 好 如 果 你 希 望 使 用 它请 跟 随 下 面 步 骤
- 检 查
你 是 否 安 装 了 SMTP 服 务 OPTION PACK 缺 省 安 装 时 是 包 括 SMTP 服 务
的
SMTP 服 务 安 装 后 在 你 的 system32 目 录 下 会 有 一 个 文 件 叫 CDONTS.DLL
- 你 可
以 用 下 面 的 简 单 脚 本 通 过 A S P 发 送 E-MAIL
<%
Dim MailObject
Set MailObject = Server.CreateObject("CDONTS.NewMail")
MailObject.Send "stelede@ozemail.com.au","stelede@ozemail.com.au","My subject","My text"
%>
是 不 是 很 简 单
发 送 附 件
CDONTS 的 一 个 常 用 特 性 是 用 来 在 E-MAIL 中 发 送 附 件 代 码 也 不 难 写
<%
Dim MailObject
Set MailObject = Server.CreateObject("CDONTS.NewMail")
att_file="c:\attachments\StandardPolicy.txt" f_name="Policy.txt"
MailObject.From="stelede@ozemail.com.au" MailObject.To="j_smith@zentus.com"
MailObject.Subject="Subject Text Here" MailObject.Body="Body Text Here" MailObject.AttachFile att_file,f_name
MailObject.Send
%>
第 三 方 厂 商 部 件
如 果 你 对 CDONTS 不 满 意 下 面 的 地 址 清 单 是 你 可 以 找 到 的 第 三 方 厂 商 部件 大 多 数 你 需 要 花 钱 购 买
Blat - http://gepasi.dbs.aber.ac.uk/softw/Blat.html
Try Looking through: http://www.15seconds.com/
Sessions 消 失 了
session 很 象 临 时 COOKIE 只 是 信 息 保 存 在 服 务 器 上 客 户 上 保 存 的 是
SessionID 所 以 有 很 多 的 原 因 来 解 释 你 的 session 变 量 为 什 么 会 消 失 使 用 者 的 浏 览 器 不 接 受 cookie session 依 赖 于 cookie 才 能 跟 踪 用 户
session 在 一 段 时 间 后 过 期 了 通 常 是 20 分 钟 后 失 效 如 果 你 希 望 更 改 它你 可 以 使 用 Microsoft Management Console(Web directory -> Properties -> Virtual directory -> Application settings -> Configuration -> App Options -> Session timeout) 这 可 以 改 变 在 那 个 web 上 使 用 的 所 有session 的 超 时 时 间 你 也 可 以 在 A S P 脚 本 中 设 定 这 么 写
Session.Timeout=60 ' 设 定 超 时 时 间 为 60 分 钟
上 传 文 件 到 服 务 器
Microsoft 创 造 了 一 个 免 费 的 部 件 叫 MS Posting Acceptor 需 要 MS posting acceptor 请 去http://www.microsoft.com/windows/software/webpost/post_accept.htm
探 讨 ASP 的 中 文 处 理 问 题
flybird
你 使 用 的 WEB Server 是 什 么 版 本 的 那 么 ASP 的 版 本 呢 如 果 你 使 用 的 是Microsoft 的 Personal Web Server 安 装 于 PWIN95 或 是 Internat Information Server 3.0 安 装 于PWINNT 4.0 + SP3 安 装 了 Visual Studio 97 内 Visual InterDev 1.0 附 带 的 ASP 那 么 你 可 能 就 会遇 上 这 样 的 问 题 理 论 上 Request("Chinese") 应 该 等 于 “ 中 国 人 可 时 你 得 到 的 结 果可 能 是 这 样 的 “ 中 国 人 d j , 后 面 跟 了 3 个 毫 不 相 干 的 字 母 这 样 的 结 果 当 然 不 是你 要 的
让 飞 鸟 来 给 你 分 析 一 下 原 因 吧 如 果 你 熟 悉 VB5.0 那 么 你 一 定 知 道 在 中文 系 统 下 len("中国人") 等 于 3 VB5.0 将 中 文 字 符 当 作 Unicode AscW("中") 的 值 就 是 “中 的 Unicode 码 可 能 为 负 数 再 + 65536 变 成 正 数 即 是 ASP 里 的 VB Script 也 这么 处 理 那 么 多 余 的 乱 码 是 这 么 出 现 的 呢 浏 览 器 会 将 中 文 编 成 2 个 字 节 再提 交 到 WEB 服 务 器 这 样 服 务 器 得 到 的 字 符 长 度 便 是 6 但 是 实 际 上 “中国人的 长 度 是 3 乱 码 便 来 充 数
幸 运 的 是 飞 鸟 现 在 安 装 了 Windows NT 4.0 Option Pack 西 文 版 , 它 里 面 带 的
IIS4.0 和 新 版 本 的 ASP 就 不 会 出 现 这 样 的 问 题
如 果 你 使 用 的 是 恐 龙 时 代 的 IIS3.0 或 PWS , 使 用 这 样 一 个 函 数 或 许 能 行声 明 对 该 函 数 不 当 使 用 造 成 的 后 果 飞 鸟 概 不 负 责
<%Function HTMLCharacter(ByVal str) strHTML = ""
nLen = Len(str) j = 0
i = 0
k = 1
Do While (i < nLen) strC = Mid(str, k, 1)
If (Asc(strC) < 0) Or (Asc(strC) > 256) Then j = j + 1
i = i + 1 End If
i = i + 1 k = k + 1 Loop
nLen = nLen - j For i = 1 To nLen
strC = Mid(str, i, 1)
If Asc(strC) >= 128 Then strHTML=strHTML+"&#"+CStr(Asc(strC))+";"
Else
strHTML = strHTML + strC
End If
Next
HTMLCharacter = strHTML End Function%>
调 用 方 法 HTMLCharacter(Request("Chinese")) , 它 的 值 就 只 能 是 “ 中 国人 请 不 要 用
于 非 Request 对 象 的 字 符 串
后 记 本 文 几 天 前 刊 出 后 网 友 wangql 发 来 MAIL 指 出 Request 出 现 多 余 字符 是 因 中 文 NT + 西 文 IIS3.0 如 果 使 用 西 文 NT + 西 文 IIS3.0 就 不 会 出 现 这 种 问题 网 友 wangql 认 为 IIS4.0 也 是 西 文 NT + 西 文 IIS4.0 的 好 飞 鸟 有 点 赞 同 XXX 的 观点 但 是 没 法 换 掉 现 在 的 操 作 系 统 需 要 RMB 的 支 持 如 果 不 是 D 版 的 话 所 以 没 法 尝 试 飞 鸟 一 直 使 用 中 文 的 NT 对 西 文 NT 不 了 解 如 果 西 文 下len("中国人")=6 的 话 就 不 会 出 现 本 文 开 头 所 诉 的 情 况 了
飞 鸟 将 文 章 更 改 后 重 新 刊 出 欢 迎 大 家 在 Joy ASP 内 讨 论 或 直 接 给 飞 鸟 发
MAIL Tons Thanks To 网 友 wangql 和 其 他 所 有 关 心 飞 鸟 之 家 的 朋 友
如 有 不 同 意 见 请 写 妹 儿 给 飞 鸟 欢 迎 前 来 讨 论 ASP
请教如何用 Asp 打开一个文本文件 然后在上面添加文本
露茜 MM 的旧贴子
读取一个文本文件并写出 Sun Aug 2 06:34:07 1998
飞鸟注 textStream 有关写的 METHOD Write STRING
WriteLine STRING WriteBlankLines LINES
这是一个完整的程序
html
head
http-equiv="Content-Type" content="text/html; charset=gb2312"
title /title /head
body
<% LANGUAGE = VBScript %>
<%
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim filename
filename = "test.txt" '缺省相对路径是 c:winnt
Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFile(filename)
Set readf = f.OpenAsTextStream(ForReading,TristateFalse)
'第一个参数可选 输入/输出模式 是下列三个常数之一
- ForReading=1
只读 ForWriting=2 可读写或 ForAppending=3 追加
'第二个参数也为可选 三个 Tristate 值之一
- 指出以何种格式打开文件
忽略此参数 则文件以 ASCII '格式打开 TristateUseDefault=-2 以系统默认格式打开文件'TristateTrue=-1 以 Unicode 格式打开文件或 TristateFalse=0 '以 ASCII 格式打开文件
'也可用 OpenTextFile 方法打开文件
s = readf.ReadLine
Do While readf.AtEndOfLine <> True s = readf.ReadLine
Response.write s & "" '逐行读文件并写出
Loop
readf.close
%>
</body>
</html>
VBScript 常 见 问 题
常量如何使用? Const Max = 200 dim a1(Max)
为何不行?
应该这样用 veryhard Tue Sep 1 01:58:43 1998 Const Max = 200
dim a1() ReDim a1(max)
入门: 如何格式化输出字符串如何格式化输出字符串?
就想 C 中的 sprintf 一样, 可控制浮点数的长度等, 写入一字符串? 如:
f1 = 0.5
如何转换到一字符串, 使字符串的值为: 0.50 甚至是 00.50?
有几个函数可以达到这种功能
FormatCurrency Function FormatDateTime Function FormatNumber Function FormatPercent Function Hex Function
入门问题: 如何严格 VBScript 语法检查? 如变量未声明不得使用等? 跟 vb 类似.....
@ LANGUAGE="VBSCRIPT" %
% option explicit %
在 asp 中如何接收 textarea 控件中的回车
把收到的作为一个字符串 露茜 Sun Aug 30 03:56:34 1998
然后检查 chr(13) Back To Top
SP FAQ II
FAQ 列 表VBScript 数据库处理
关于飞鸟 :-)
VBScript
为何我在 asp 程序内使用 msgbox 程序出错说没有权限
由于 asp 是服务器运行的 如果可以在服务器显示一个对话框 那么你只好等有人按了确定之后 你的程序才能继续执行 而一般服务器不会有人守着 所以微软不得不禁止这个函数 并胡乱告诉你没有权限 但是 ASP 和客户端脚本结合倒可以显示一个对话框
as follows:
<%
yourVar="测试对话框"
%>
<script language='javascript'> alert("<%=yourVar%>")
</script>
我的 asp 程序在中文 NT Server 上如何才能获得字符串的字节数
在中文系统下 vb 和 vbscript 程序 len("中文 abc")=5 而不是 7 要获得正确获得正确的字节数 必须自己写一个函数 as follows: function strLength(str)
dim WINNT_CHINESE WINNT_CHINESE=(len("飞鸟")=2)
if WINNT_CHINESE then
dim l,t,c dim i l=len(str) t=l
for i=1 to l
c=asc(mid(str,i,1))
if c<0 then c=c+65536
rem asc 对中文字符求出来的值可能为负数rem 加上 65536 就可求出它的无符号数值rem -1 在机器内是用补码表示的 0xffff, rem 其无符号值为 65535,65535=-1+65536 rem 其他负数依次类推
if c>255 then t=t+1
end if next strLength=t
else
strLength=len(str) end if
end function ASP 程序的调试
首先需要服务器做一定的设置 enable app script debug,
调试的工具可以使用 ms script debugger 或 visual interdev 6
(飞鸟按 我的 vi 调试总不爽 按 F5 老说 与服务器联系不上)
更为普通实用的古老方法是去掉 on error resume next 语句 如果有的话 在出错的地方之前输出变量的值 然后分析原因
ASP 程序写了个死循环 会不会造成服务器死机崩溃
一般不会 死循环执行一段时间后 会因为 script timeout 而终止执行当然多来几次 很可能也会当掉
Back To Top
数据库处理
ASP 中如何查询日期类型的数据
sql 语句查询日期视数据库不同有不同的使用方法
ACCESS
"SELECT * FROM yourTable where dateField=#1998/12/10#",
日期须加井号
SQL SERVER:
"SELECT * FROM yourTable where dataField='july 10,1998' "
日期是作为字符串使用的
如果日期格式使用的是 yy/mm/dd 或 yyyy/mm/dd 之类格式其次序应根据服务器的设定而定
如何操作大容量的字符串
写 sql 语句无法操作大容量的字符串 如 sql server 的 text 类 型 access 的 memo 类型或 oracle 的 long 类型的字段 由于 sql 语句本身长度的限制 无法写入超长的字符串 但可以使用 command 写入例如
dim dataconn
Set DataConn = Server.CreateObject("ADODB.Connection") dataconn.open "yourDSN","yourName","yourPass"
Set cmdTemp = Server.CreateObject("ADODB.Command") Set InsertCursor = Server.CreateObject("ADODB.Recordset") cmdTemp.CommandText = _
"SELECT *, UserName FROM yourField WHERE (UserName IS NULL)" cmdTemp.CommandType = 1
Set cmdTemp.ActiveConnection = DataConn InsertCursor.Open cmdTemp, , 1, 3 InsertCursor.AddNew InsertCursor("yourMemo") =strMemo InsertCursor.Update
InsertCursor.close dataConn.close
如何不通过数据源名 DSN 访问 ACCESS 数据库
设定一个数据源名 然后在 ASP 中通过数据源名访问 无疑是最方便的访问方式 但在某些特殊的场合必须绕过数据源直接访问数据库 比如飞鸟之家的程序 因为服务器远在海外 无法设置数据源 相信很多个人主页也会遇到我这种问题
解决办法十分简单
<%
dim conn dim connstr
connstr="DBQ="+server.mappath("db/board.mdb")+ _ ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" + _ "DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;" + _ "MaxBufferSize=512;MaxScanRows=8;PageTimeout=5;" + _
" SafeTransactions=0;Threads=3;UserCommitSync=Yes;" if isobject(session("bbsConn")) then
set conn=session("bbsConn") else
set conn=server.createobject("ADODB.CONNECTION") conn.open connstr
set session("bbsConn")=conn end if
%>
这样通过写一个 odbc 串 就能达到我们的目的
需要注意的是 server.mappath()内不能使用诸如"../db/mymdb.mdb"的路径 如果要访问上层目录中数据库文件 就必须从根目录一直写下来
如 /myweb/myprg/db/mydb.mdb,另外需要注意的是你的 web 中可能不止一个使用数据库的程序 那么 connection 一定要使用不同的 session 名称
为何我的程序不能访问 access 97 的数据库文件
通常是因为服务器不支持访问 access 97 的数据库文件 一般是 odbc 的驱动程序太老了 也可能你不小心将数据库文件的属性弄成 read-only,结果无法插入新记录 或者 update.
ASP FAQ III
FAQ 列 表ASP 常见问题数据库处理
飞鸟 Joy ASP 和其他
ASP 常见问题
在 ASP 中执行 Server 端命令行的方法... 请看 joy asp 论坛 ID:2431 的帖子
按固定格式保存为 Word 文档是如何实现的
On Error Resume Next Dim wApp
Set wApp = CreateObject("Word.Application") If Err.number <> 0 Then
Alert "没法保存为 Word 文件,请正确安装 Word97"
else
wApp.visible = True wApp.Documents.add wApp.Selection.TypeParagraph wApp.Selection.Font.Bold = True wApp.Selection.TypeText "test"
....
asp 脚本和客户端脚本都能使用
飞鸟 你是如何实现定时刷新的 ASP 有 Timer 可用吗
<meta http-equiv="Refresh" content="1000">
请问"<!-- -->" 与"<% %>"的区别是什么?
在"<% %>"之间我们写 asp 脚本 使用 vbscript or javascript
而通常<!-- -->间内容不被浏览器解释和显示 可以用做 html 的注释但在某些特殊场合有特殊的用场 比如 SSI(Service Side Include),
在 asp 中用到了一个#include,你可以看精华区中对 inc 文件的介绍还有 script 里也有用的 目的是不让不支持 javascript 的浏览器显示原代码
例如
<script language=javascript>
<!--
alert("hello");
//-->
</script>
wlr 于 12/27/98 7:02:42 PM 加贴在 Joy ASP
小弟如今写个小 WEB 程序 错误如下 不知原因响应对象 错误 'ASP 0156 : 80004005'
标题错
/deepcx/cgi-bin/chkLogon.asp, 行 19
HTTP 标题已经写入到 客户浏览器 任何 HTTP 标题的修改必须在写入页内容之前
19 行的内容为 response.redirect "deepcx.asp" 环境为 NT4.0(Chinese Version)+SP3+IIS4.0 wlr 98.12.27
我心飞扬 于 12/27/98 9:32:32 PM 加贴在 Joy ASP
在你的文件开始<@ Language=...>后写:
Response.Buffer = True
在结尾写:
Response.Flush
请解释一下 a.asp?id=1 的详细用法
- 产生 a.asp?id=1 的调用
可以通过使用 a href="a.asp?id=1" XXXX /a 鼠标点击形成调用也可以通过 form 提交 注意 form 的 method 是 get 而不是 post
<form action="a.asp" method=get>
<input name=id value="i">
<input type=submit>
</form>
- 获取调用的参数dim id
id=request.querystring("id") ' 或 id=request("id") '................
- 存在的问题
querystring 调用存在中文处理问题
当有人使用西文系统的浏览器,比如 E 文 nt+ie4,调用 a.asp?name=中文asp 取 querystring 只怕只能取出不可恢复的乱码
原因是英文系统下 中文被 escape 编码了
sub 和 function 的区别
sub 是过程,function 是函数
过程和函数的区别在于 过程无须返回值
调用 sub:
call yourSub(yourPara) 或 yourSub youPara 调用 function
dim ret ret=yourFunction(yourPara)
获得
Request.ServerVariables("REMOTE_ADDR")
在 unix 主机上怎么运行 asp
一招鲜 http://www.chilisoft.com/ 上有
asp for solaris/rs6000/390 - kw Back To Top
数据库处理
sql 语句插入的数据中含有单引号怎么办
sql 中 insert into yourTable(f1,f2) values(100,'abc')
字符串数据是用单引号包在外面的 如果插入的数据中包含单引号 就需要处理 你可以将单引号替换成两个单引号 在 sql 中连续两个单引号就表示一个单引号字符 例如
insert into yourTable(f1,f2) values(100,'ab''c')表示插入新记录 f2 字段为 ab'c
使用函数 replace 可以实现这个功能
replace(yourStr,"'","''")
把 Form 中获得的日期放入 SQL 语句中
你可以用函数 cdate()将数据转化为日期办法不好
sql="select * from yourtable where f1>'" & _ cstr(cdate(request("yourDate")))&"'"
因为客户端和服务器端的时间格式可能不同 所以最好的办法是在客户
端提交前 先将时间分解为年 月 日 然后在 ASP 脚本中按服务器的格式合并
access 和 sql server 的区别 仅仅从 asp 编程上的区别
sql server 可以使用存储过程 access 没有 access 2000 会支持 sql server 7 的数据库引擎,也可以使用存储过程
在 sql 语句做查询时 其语句有少许区别
日期格式的区别 (看飞鸟之家->asp 导航->faq II)
统配符 sql server 扩展了 ansi sql :
在 sql server 的 t-sql 中 a[abc]c 表示 aac 或 abc 或 acc sql server 有很多内置函数
我要求一个数据库的记录的数量时可用 COUNT(*),但是我如果要求其中不包括重复的记录应该怎么写呢?
select count(distinct field) from table - 露 茜如何检查 SQL server 中某个字段是否为空
firechun 于 12/15/98 8:21:53 PM 加贴在 Joy ASP
用 for...next 将字段内容填入 TABLE 中 如果字段为空的话 表 格 样式不好看 我用 ISNULL函数检查字段是否为空 好象不起作用 有没有其它方法
其实用 SQL 语句也可以
沙恭达罗(飞鸟按 这个名字是露茜的另外一个名字) 于 12/16/98 12:26:26 AM 加贴在 Joy ASP
象这样 select isnull(字段名,' ') from tablename 也可以
Back To Top
飞鸟 Joy ASP 和其他飞鸟为什么不给我回信
-
我很多回信都给弹回来啦
我们公司的专线是该死的中国经济信息网 经常不通 我试过 163.net 263.net, 990.net 的 SMTP 发还是有很多发不了
-
可能我真的漏了
鞠躬致歉 我定了不少的垃圾邮件(比如索易) 可能不小心误删了你的信
-
有时忙的时候
顾不了看 就...对不起啦
-
还有几次我出差去了
信也没有回
-
有的朋友把整个程序都打包发给我
我一般就不会看 我看到大段别人写的程序就头晕 :(
不过 还有 JOY ASP 论坛 你可以在上面加贴 如果我回复不了还有很多朋友可以答复你
有朋友抱怨说 JOY ASP 速度慢
实际上 上午 8:00-10:00 的时候速度还可以 中午和下午一般都 很慢 晚上 6 00 以后就很快了 如果你掌握好时间的话 就没什么问题了 有一次我亲自在午夜时分去看帖子 结果发现速度奇 快 不过为保证睡眠 别那么晚去
我想将以前的帖子全部下载 能打包吗
下载讨论组的 mdb 摘要
http://www.onlinechina.net/friend/flybird/bbs/download/download.mdb
如果你有 asp wwwboard4 的运行环境 可以将 download.mdb 放入你的目录下 并改名为 board.mdb,就可以很方便的看帖子了 飞鸟争取每周更新一下这个文件 更新后 我会在论坛上通知大家
飞鸟能给我你聊天室最终版本的程序吗
Sorry,我不打算公开这个程序了 主要是感觉这个程序没写好 速度较慢 功能也不强也 没有时间和精力去改进它了 就让它成为历史 8 如果有朋友写了类似的代码并能提供的话 就好啦
飞鸟你的主页支持 ASP onlinechina 提供免费主页吗
onlinechina 不提供免费主页 我的主页是他们的 webmaster 送我的空间 认识几个朋友就是好啊
哪里有支持 ASP 个人空间申请http://ftp.maoming.gd.cn/ph-3.asp 茂名信息港