Asp-Classic

ASP:request.form 沒有返回值?

  • June 14, 2021

我有以下表格,

<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>

但是當我試圖在我的 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")

%>

它只向我返回“OK”。消息變數中什麼都沒有?

請幫助我並告訴我這裡有什麼問題?

經典 ASP 不提供對使用“multipart/form-data”的內置支持。即使對於 ASP 古老的語言來說,這也是一個令人驚訝的基本缺陷,但是您將如何解決它,遷移到 ASP.NET?(是嗎?哦。那沒關係。)

如果您不進行文件上傳,最簡單的方法就是堅持使用預設值enctype(即application/x-www-form-urlencoded)。唯一的優點multipart/form-data是您可以將文件上傳放入其中。(理論上,它還有一個優點是您可以明確地指定字元編碼。但實際上沒有瀏覽器這樣做。)

如果您確實需要multipart/form-data在 Classic ASP 中處理,您將需要自己解析傳入的請求正文,將其拆分為欄位和值。或者更確切地說,更典型的是,使用現有的庫來完成它*。

該庫通常會提供單獨的介面來讀取上傳的文件和其他表單值。這完全取代了經典 ASPRequest.Form界面的使用。您可以在哪裡找到它取決於您選擇的庫。這確實意味著,如果您想要一個可以enctype同等響應的表單,您必須檢查類型並使用兩個不同介面之一。

*:有負載。例如_ 我不認可其中任何一個……它們實際上都沒有按照標準正確解析多部分,並且兩者似乎都對文件名安全性有點鬆懈(永遠不要將文件儲存在使用者送出的文件名下!安全災難!)。但這似乎是 ASP 上傳腳本課程的標準。至少,不像許多人,他們不會為他們要錢。

引用自:https://stackoverflow.com/questions/3649799