目录

  1. ASP 表单简介
  2. 创建 HTML 表单
  3. 获取用户输入
  4. 处理 GET 和 POST 请求
  5. 表单输入验证
  6. 避免 SQL 注入攻击
  7. 上传文件
  8. 总结
  9. 参考资料

1. ASP 表单简介

ASP(Active Server Pages)支持处理用户输入数据的表单。典型的 ASP 表单涉及以下几个步骤:

  1. 创建 HTML 表单,允许用户输入数据。
  2. 提交数据到 ASP 服务器(使用 GET 或 POST 方法)。
  3. ASP 处理用户输入,例如存储到数据库或执行其他操作。

2. 创建 HTML 表单

在 HTML 中,我们可以使用 <form> 标签创建一个表单,用户可以输入数据并提交到 ASP 服务器处理。

示例:简单的 HTML 表单

<form action="process.asp" method="post">
    用户名: <input type="text" name="username"><br>
    邮箱: <input type="email" name="email"><br>
    <input type="submit" value="提交">
</form>

  • action="process.asp":指定处理数据的 ASP 文件。
  • method="post":指定数据提交方式(POST 适用于敏感数据)。

3. 获取用户输入

ASP 允许通过 Request 对象获取用户输入。

  • 使用 Request.Form("字段名") 获取 POST 提交的数据。
  • 使用 Request.QueryString("字段名") 获取 GET 提交的数据。

示例:在 process.asp 处理表单数据

<%
Dim username, email
username = Request.Form("username")
email = Request.Form("email")

Response.Write "欢迎, " & username & "!<br>"
Response.Write "你的邮箱是: " & email
%>

示例输出:

欢迎, Alice!
你的邮箱是: alice@example.com


4. 处理 GET 和 POST 请求

4.1 使用 GET 方式提交表单

  • 适用于不敏感数据(查询参数等)。
  • 提交的数据会显示在 URL 中,例如:http://example.com/process.asp?username=Alice&email=alice@example.com
  • 示例:使用 GET 方式获取数据
<%
Dim username, email
username = Request.QueryString("username")
email = Request.QueryString("email")

Response.Write "GET 请求 - 用户名:" & username & "<br>"
Response.Write "GET 请求 - 邮箱:" & email
%>

4.2 使用 POST 方式提交表单

  • 适用于敏感数据(密码、个人信息等)。
  • 数据不会显示在 URL 中,更加安全。
  • 示例:使用 POST 方式获取数据
<%
Dim username, email
username = Request.Form("username")
email = Request.Form("email")

Response.Write "POST 请求 - 用户名:" & username & "<br>"
Response.Write "POST 请求 - 邮箱:" & email
%>


5. 表单输入验证

为了确保用户输入的正确性和安全性,可以在提交前进行客户端验证(JavaScript)和服务器端验证(ASP)。

5.1 服务器端验证(防止恶意提交)

<%
Dim username, email
username = Trim(Request.Form("username"))
email = Trim(Request.Form("email"))

If username = "" Or email = "" Then
    Response.Write "错误:用户名和邮箱不能为空!"
ElseIf InStr(email, "@") = 0 Then
    Response.Write "错误:邮箱格式不正确!"
Else
    Response.Write "提交成功!"
End If
%>

5.2 客户端验证(提高用户体验)

<form action="process.asp" method="post" onsubmit="return validateForm()">
    用户名: <input type="text" id="username" name="username"><br>
    邮箱: <input type="email" id="email" name="email"><br>
    <input type="submit" value="提交">
</form>

<script>
function validateForm() {
    var username = document.getElementById("username").value;
    var email = document.getElementById("email").value;

    if (username == "" || email == "") {
        alert("用户名和邮箱不能为空!");
        return false;
    }
    return true;
}
</script>


6. 避免 SQL 注入攻击

如果将用户输入存入数据库,需要防止SQL 注入攻击。可以使用 Replace() 过滤特殊字符:

Function SanitizeInput(str)
    SanitizeInput = Replace(str, "'", "''") ' 防止 SQL 注入
End Function

Dim username, email
username = SanitizeInput(Request.Form("username"))
email = SanitizeInput(Request.Form("email"))

sql = "INSERT INTO users (username, email) VALUES ('" & username & "', '" & email & "')"


7. 上传文件

ASP 允许使用 Scripting.FileSystemObject 或 Persits.Upload 组件处理文件上传。

示例:上传文件

<form action="upload.asp" method="post" enctype="multipart/form-data">
    选择文件: <input type="file" name="file"><br>
    <input type="submit" value="上传">
</form>

ASP 处理上传(需要第三方组件,如 ASPUpload)

Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save "C:\uploads"

Response.Write "文件上传成功:" & Upload.Files("file").Path


8. 总结

  • ASP 可使用 HTML <form> 处理用户输入
  • 使用 Request.Form("字段名") 处理 POST 数据,使用 Request.QueryString("字段名") 处理 GET 数据。
  • 推荐使用 POST 提交敏感数据,因为 GET 会暴露数据在 URL 中。
  • 必须进行服务器端验证,避免恶意提交(如 SQL 注入)。
  • 可使用 Scripting.FileSystemObject 或 Persits.Upload 处理文件上传

9. 参考资料

  1. W3Schools – ASP Forms
  2. Microsoft ASP 文档
  3. ASP SQL 安全指南