Pra*_*ant 7 vbscript asp-classic
我有以下表格,
<form action="contact_us.asp" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input name="firstname" type="text" id="firstname" size="30" />
<input name="lastname" type="text" id="lastname" size="30" />
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
但是当我试图在我的ASP文件contact_us.asp中获取这些post变量的值时,它返回空白.代码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<%
Dim FirstName, LastName, Email, Message
FirstName = request.form("firstname")
LastName = request.form("lastname")
response.write(FirstName & "OK")
%>
Run Code Online (Sandbox Code Playgroud)
它只对我回归"好".Message变量中什么都没有?
请帮帮我,告诉我这里有什么问题?
bob*_*nce 21
经典ASP不支持multipart/form-data.即使对于ASP历史悠久的语言来说,这是一个令人惊讶的基本缺陷,但是你要做些什么呢,转向ASP.NET?(是吗?哦.那就不用了.)
如果你没有进行文件上传,最简单的就是坚持默认enctype(即application/x-www-form-urlencoded).唯一的优点multipart/form-data是您可以将文件上传到其中.(从理论上讲,它还有一个优势,你可以明确地指定字符编码.但是没有浏览器实际上这样做.)
如果确实需要multipart/form-data在Classic ASP中处理,则需要自己解析传入的请求体,将其拆分为字段和值.或者更确切地说,使用现有的库来执行此操作*.
该库通常会提供单独的界面来读取上载的文件和其他表单值.这完全取代了Classic ASP Request.Form界面的使用.您可以在哪里找到它取决于您选择的库.这意味着,如果您希望拥有一个可以同时响应的表单,则enctype必须检查类型并使用两个不同接口中的一个.
*:有负载.为 例子.我并不支持这些中的任何一个......它们都没有按照标准正确地解析多部分,并且两者似乎对文件名安全性有点松懈(从不在用户提交的文件名下存储文件!安全灾难!).但这似乎与ASP上传脚本的课程相提并论.至少,与许多人不同,他们不是要钱.