顯示具有 ASP 標籤的文章。 顯示所有文章
顯示具有 ASP 標籤的文章。 顯示所有文章

2016年9月10日 星期六

ASP 網頁程式使用aspSmartUpload元件部署於 IIS 8.5
(Windows Server 2012 R2)注意事項

一般來說,將ASP部署到 IIS 8.5 的預設環境並沒有問題,但若程式中有使用外部元件,例如 aspSmartUpload,有些設定就必須調整。
由於 ASP 是古早的系統,外部元件通常不會再更新版本,可能依舊停留在 32bit 模式,所以應用集區(Application Pool)要「啟用32位元應用程式」:
1. 切換到應用程式集區資料夾
2. 從集區清單中選擇用於 ASP 應用程式的集區
3. 使用右邊「動作」內之「進階設定」
4. 將「啟用32位元應用程式」設為 True。

另有關註冊aspSmartUpload方式:
請在 C: 的根目錄建立 aspSmartUplaod 資料夾,並將 aspSmartUpload.dll 及 aspSmartUploadUtil.dll 複製到此資料夾中;同時也複製到 C:\Windows\Sysem32 及C:\Windows\SysWOW64。(不要將資料夾置於 C:\Windows 之下,否則元件可註冊成功,但執行時,可能會無法產生物件)
註冊 aspSmartUpload中的aspSmartUpload.dll,開啟命令提示字元
C:\Users\user>cd C:\aspSmartUplaod\
C:\aspSmartUplaod>C:\windows\SysWOW64\regsvr32 aspSmartUpload.dl
 
除了aspSmartUpload.dll的註冊外,還要注意開啟儲存檔案的目錄及上傳過程中暫存區的寫入權限!

2013年7月15日 星期一

ADODB 的 Command.parameters 的吊詭!

程式存取資料庫建議使用 Prepare 方式來傳遞參數,所以一般會將查詢敘述寫成:
dim sql as string = "Insert myTable(fName1 ,fName2 ,fName3) values(?, ?, ?)"
三個 ? 對應到三個要傳遞進來的參數,所以會用下列方法來準備參數

Dim cmd As New ADODB.Command
cmd.CommandText = sql
With cmd
       .Parameters.Append(cmd.CreateParameter("fName1", ADODB.DataTypeEnum.adVarChar, , 50))
       .Parameters.Append(cmd.CreateParameter("fName2", ADODB.DataTypeEnum.adVarChar, , 50))
       .Parameters.Append(cmd.CreateParameter("fName3", ADODB.DataTypeEnum.adVarChar, , 50))
       .Parameters("fName1").value= "value1"
       .Parameters("fName2").value= "value2"
       .Parameters("fName3").value= "value3"
End With
cmd.Execute()

上面的程式看起來似乎沒有什麼問題,可是執行時卻會出現,因為參數的個數不相符。

可是將
dim sql as string = "Insert myTable(fName1 ,fName2 ,fName3) values(?, ?, ?)"
換成
dim sql as string = "Insert myTable(fName1 ,fName2 ,fName3) values(@fName1, @fName2, @fName3)"
就沒有問題了!

從上面的實驗得知,當參數位置使用「?」時,系統會自動為它建立一組 parameter,
可是用「@fname1」方式時卻不會!

故如果用「?」來準備參數,必要時需利用 .parameters.delete(index) 方法先將系統預留的參數區清除!

2011年6月29日 星期三

將ASP網頁改成支援 UTF-8 (Unicode)

將ASP網頁程式(預設為Big5)修改支援 UTF-8 步驟:
一、在網頁最前頭加入 「<%@ CodePage=65001 %>」
二、在 ASP 程式最前面中加入
<%
Response.Charset="utf-8"
Session.Codepage=65001 '如果 big5 ,就改成 950
:
:

三、在網頁的 之間加入
<meta equiv="Content-Type" content="text/html; charset=utf-8">


四、資料庫欄位改成 nvarchar 或 nchar

五、 update 或 Insert時,在字串前加入 N,例如: N'羣峯堃'


雖是如此,但為了解決 XSS的問題,都會在輸出前使用 server.htmlencode()函數來編碼,這時就出現大問題了:

畫面顯示正常,可是查看原始碼卻顯示內碼 羣峯-->羣峯