2005-11-09

一隻嚴重的小bug

我從沒想過我竟然會犯這樣的錯,
一個很嚴重的錯誤!!

先看一下下面的程式片斷吧!

function filter(byval strinput)
dim strTmp
strTmp = replace(strinput,"'","")
strTmp = replace(strinput," ","")
return strTmp
end function
這段程式只有很簡單的兩個動作,清除單引號與清除空白.
主要是用來防止SQL Injection的!!
但是在這段程式中有隻小bug在裡面,
你可以找的出來嗎??而且知道會造成什麼問題嗎??

2005-11-04

ASP與ASP.net的mod問題

今天再將一個asp的encode的函數轉成asp.net,
程式上除了AscB在vb.net中是沒有的外,
其實的複製貼上都沒有什麼語法的錯誤,
但是,執行的結果卻一直有問題!
後來才發現,原來是mod的問題.

例如下面這個運算式
((115.6963012) mod 256)
在ASP中的結果是 116 (四捨五入取整數),
但是在ASP.Net中卻是115.6963012
所以導致將運算的結果在乘以8 之後,就產生了整數位的誤差...
因此在取char時也就跟著錯誤了...
不過,不知道這算不算是ASP的問題還是ASP.Net的問題...

2005-11-02

數值轉字串,不足的位數補零

之前寫ASP的時候,
為了讓日期的格式看起來是
2005/04/02
而不是
2005/4/2

所以寫了一個FillZero的函數來處理,

Function FillZero(intValue, intLen)
If Len(intValue) < intLen Then
FillZero = String(intLen - Len(intValue), "0") & intValue
Else
FillZero = Left(CStr(intValue), intLen)
End If
End Function

後來在寫ASP.Net時也是需要這樣的轉換,
所以就直接將FillZero的函數改成vb.net的,
雖然這樣也是可以用,不過後來發現了更簡單的方法...
就是直接用ToString的功能...
只要直接在ToString後面加參數,如ToString("00")
就可以達到補足位數的動作了!
有興趣的可以試試下面這段程式...

for i as integer = 1 to 100
response.write(i.tostring("000"))
next


Google以後可以查祖譜嗎?

今天看到一篇INDISE的文章 : 比爾蓋茲和賈伯斯,他們的孩子都是 14 歲才能用手機 想說比爾蓋茲不是有點年紀了嗎? 他的小孩應該也都不小了. 他們14歲時應該還沒有甚麼智慧手機吧… 說不定還是在BB call的年代. 所以就好奇的用google查一下有沒...