Asp-Classic
ASP:request.form 沒有返回值?
我有以下表格,
<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 中處理,您將需要自己解析傳入的請求正文,將其拆分為欄位和值。或者更確切地說,更典型的是,使用現有的庫來完成它*。該庫通常會提供單獨的介面來讀取上傳的文件和其他表單值。這完全取代了經典 ASP
Request.Form界面的使用。您可以在哪裡找到它取決於您選擇的庫。這確實意味著,如果您想要一個可以enctype同等響應的表單,您必須檢查類型並使用兩個不同介面之一。*:有負載。例如 。_ 我不認可其中任何一個……它們實際上都沒有按照標準正確解析多部分,並且兩者似乎都對文件名安全性有點鬆懈(永遠不要將文件儲存在使用者送出的文件名下!安全災難!)。但這似乎是 ASP 上傳腳本課程的標準。至少,不像許多人,他們不會為他們要錢。