關於「驗證碼的製作」的一些補充

2022-04-20 09:33:27 字數 3194 閱讀 3104

上次寫了點關於驗證碼製作的**,算是學習了drawing中的一些東西,心裡很快活,也樂意為大夥兒做些善事,於是便萌發了把驗證碼封裝成簡單的控制項發布出去的念頭——起初是用ashx(一般處理程式,俗稱httphander)的做法,ok。在webform和mvc兩種情況下毫無問題——**很簡單,假設把ashx放在程式根目錄,那麼你就在頁面中對應弄上乙個img即可:

<

img

src="/image.req"

/>

這樣生成img標籤自動也會請求這個handler,生成(不要忘記配置handler就可以了)。

後來多方請教,直到遇到了大神imran_ku07之後我才恍然大悟(看到

x這篇類似的問題)——原來當你寫"/image.req"的時候,預設路由就會按照「controller/action/defaultoptionalvalue」去匹配:這樣的話,controller就變成了「image.req」,自然沒有這個controller,然後自然報錯(無法出來)。

解決辦法就是讓這個路徑不要通過預設的route方式解析,使用ignoreroute方式排除這個路徑(粗體):

[c#]

public

class

.axd/

");routes.ignoreroute("

.req/

");routes.maproute(

"default

", //

路由名稱"//

", //

帶有引數的 url

new //

引數預設值

); }

protected

void

}

[vb.net]

public

class

inherits

public

shared

sub registerroutes(routes as

routecollection)

routes.ignoreroute(

".axd/

")routes.ignoreroute("

.req/")

'

路由名稱

'帶有引數的 url

'引數預設值

routes.maproute("

default

", "

//", new

with

)

end sub

protected

sub arearegistration.registerallareas()

registerroutes(routetable.routes)

end sub

end class

這樣一來,果然在asp mvc中也可以咯!神啦!

「福無雙至,禍不單行」——下午某時有個中軟的程式設計師找我詢問關於如何遮蔽mvc外掛程式的事情(它的專案根目錄有plugin資料夾,然後裡邊有大量其它重要檔案,現在不想要別人訪問)。我想了以下,給了兩個解決方案:

1)在根目錄web.config中配置如下(相對於根目錄的子目錄——plugin中後面子資料夾和檔案均無法訪問)

2)拷貝乙個web.config檔案到plugin資料夾中,然後這樣配置(表示當前資料夾中所有子資料夾和檔案均無法訪問)

他的問題是解決了,我又冒出新問題了——既然mvc可以通過:「http://localhost/資料夾名/檔案」的形式直接訪問檔案,那麼它為什麼不會把「資料夾名」解析成controller,「檔案」解析成action呢?我猜想如下:

1)任何網頁程式預設「潛規則」解析是根據位址列輸入的虛擬路徑尋找對應的檔案(傳統asp.net web也不例外),因此mvc也有此潛規則——如果位址列輸入的虛擬路徑恰好可以對映找到真實的檔案,那麼直接返回結果,就不會在route了。

2)如果找不到:

2.1)嘗試route(按照預設或者其它定義規則:http://localhost///defaultoptionalparameter)進行解析。

2.2)如果解析成功,那麼返回action中對應的view,解析失敗,丟擲異常。

3)如果某個請求位址(比如image.req純粹是乙個ashx請求,真實檔案路徑均不存在),直接使用route規則匹配肯定錯誤,此時你就應該告知系統「這是例外」(用ignoreroute即可)。

附加說明:

php驗證碼的製作

登入註冊時需要驗證碼,有點干擾和線干擾。效果如圖所示,每次重新整理所顯示文字及干擾點,干擾位置隨機改變 session start image imagecreatetruecolor 100,30 建立100 30的 bgcolor imagecolorallocate image,255,255...

PHP驗證碼的製作

if isset session 隨機生成驗證碼函式 param m 驗證碼位數 預設值為4 param type 驗證碼型別 0 數學 1 數字 小寫字母 2 數字 大小寫字母 function getcode m 4,type 0 return c 1.獲取驗證碼字元 num 4 str get...

關於工行驗證碼識別的一些問題

1.關於亦思驗證碼識別系統 是用於識別的系統性軟體,其用途廣泛,適用於各類驗證碼識別,本地識別,車牌號碼識別,漢字文字識別等領域,擁有識別庫體積小,識別速度快,準確率高,操作簡便,呼叫方便,高效率製作等特點。自發布以來,就受到很多使用者好評,被國內各大知名軟體 相繼收錄。ps 好像官方倒閉黃了吧。但...