利用ASP實現三個強大功能

來源:互聯網
上載者:User

為Web網站添加拼字檢查功能

  許多開發人員都提出“如何對使用者輸入的內容進行拼字檢查”的問題,這篇文章正好提供了一個有用的方法,討論如何使用XDE拼字檢查組件,它既可以當作拼字檢查器,同時也可以做完一個字典。 關於這個組件的一個好訊息是:它能夠在伺服器端使用,或者做為一個Java Applet。但是有一點,這些方便之處不是免費的,它要花費大約100美元。然而,該組件提供了一個30天免費使用評估版本,所以在真正決定購買前,你可以仔細進行測試,認真考慮是否滿足需要。

  首先,訪問http://mirrordns.com/download/網站,輸入一些資訊(名字、電子郵件,等等),下載並安裝這個組件。下一步,從可供下載的XDE眾多組件中選擇 “Quick Spell Check Full Install”項目進行下載。下載完畢後,進行安裝。在安裝程式結束前,出現一個註冊登記菜單,這時,簡單地選擇預設選擇“Evaluation Period”。

  注意,現在的程式還是BETA版本。如果你不希望發生潛在的錯誤,我建議等第一個正式版本出來後再下載進行實驗。我已經發現了現有版本的一些錯誤。你要記住:這是一個BETA版本,不要在正式網站上應用。

  接著,準備註冊登記組件。現在決定一下你是否想要包含Word 97的字典和詞典功能,如果需要,請先在Web伺服器上安裝Word 97或者Word 2000,然後參照http://mirrordns.com/spellchecker/server_installation.htm 的說明執行一套特殊的命令。如果不想使用整個Word 97的字典,就象註冊其他組件一樣接著進行:

  拷貝DLL檔案SpellCheckServer.dll到Windows的System或者System32目錄

  使用regsvr32註冊組件:regsvr32 spellcheckserver.dll

  現在安裝完組件,可以在ASP代碼中使用了。為了建立使用拼字檢查對象的樣本,僅僅簡單的編寫下面的代碼:

Set objSpellCheck = Server.CreateObject("SpellCheck.ClsChecker")

  如我前面提到的,這個組件提供了拼字檢查和詞典的功能。首先,來看看如何返回給定單詞的一系列同義字。這要使用到LookupSynonym方法,該方法需要一個參數,就是需要尋找同義字的單詞。執行後,拼字檢查對象收集相關的單詞到集合對象SynonymWords。 執行下面的代碼,將返回“Quick”單詞的所有同義字:

< %

Dim objSpellChecker, iLoop

’Create an instance of the SpellChecker

Set objSpellCheck = Server.CreateObject("SpellCheck.ClsChecker")

objSpellChecker.UseMSWord = False ’We’re not using MSWord

objSpellChecker.LookupSynonym "Quick" ’Lookup the synonym for "quick"

’Loop through the returned words:

Response.Write "The following synonyms for ’Quick’ exist: "

For iLoop = 1 To objSpellChecker.SynonymWords("Quick").SuggestedWords.Count

Response.Write objSpellChecker.SynonymWords("Quick").SuggestedWords(iLoop).word

Response.Write " "

Next

%>

  在伺服器端執行拼字檢查對於代碼結構是非常緊湊的,但以我只見,要發揮強大的功能,必須依賴Java applet形式的拼字檢查。以下將重點討論如何應用這種方式,關於在伺服器端使用組件的方法,請參見http://mirrordns.com/spellchecker/ 。

  為了使用Java applet,需要將安裝目錄下的.class檔案拷貝到一個web可訪問目錄。比如,這裡將檔案移動到/spellcheck目錄下。然後,建立一個表單,包含一個文字框或者文本域,其中是要進行拼字檢查的內容。

< HTML>

< BODY>

< FORM NAME="frmSpellCheckExample">

< textarea name="JavaTextArea" rows="8" cols="50">< P>

< INPUT TYPE="button" value="Start Spell Check" onclick="SpellCheck();">

  接著,使用APPLET標記來引用Java applet:

< applet codebase ="/spellcheck/" code="SpellCheck.class"

height="1" name="spellcheck" width="1"

ALT="Applet not displayed">

< param name="foreground" value="FFFFFF">

< param name="background" value="008080">

< param name="label" value="This string was passed from the HTML host.">

注意:在APPLET標記中的codebase參數指向.class檔案所在的目錄。

最後,在用戶端使用一段JavaScript代碼來組裝applet參數:

< script language="JavaScript">

function SpellCheck() {

document.spellcheck.ptexttocheck =

document.frmSpellCheckExample.JavaTextArea.value;

document.spellcheck.doDlg();

if (document.spellcheck.fixedtext!="") {

document.frmSpellCheckExample.JavaTextArea.value =

document.spellcheck.fixedtext;

}

}

  這就完成了!如果想更多地瞭解如何使用該組件和Java Applet,一定來下面的地方看看:http://mirrordns.com/spellchecker/。

 

在Web上動態建立條碼

  這篇文章討論的是如何根據資料庫的欄位在web上動態地建立條碼的問題,這在如下的情況下非常有用:使用者輸入資訊到系統中,然後顯示一個總結頁面“這就是你所輸入的”,這個頁面可以被列印,並在日後可以用條碼進行跟蹤。

  實現這個功能的關鍵在於如何將數值比如“ABC”翻譯為條碼。這裡我們使用“代碼39”,關於它的詳細情況,請參閱有關定義。我想將產生的條碼顯示在web頁面上,這樣使用者就能列印包含條碼的這個頁面,然後,再在圖形系統的處理中使用它。許多使用者都在系統中安裝了“代碼39”字型,所以我就能夠在頁面中改變它,但是我不想依賴它們。我想在頁面中建立,並且獨立於瀏覽器和電腦。

  我的解決方案是:為Code39中每一個支援的字元建立GIF圖形檔案。我使用Microsoft Paint軟體建立Code39字型大小的文字框,然後為每一個字元建立一個圖形。接著,使用Microsoft Image Composer將它們轉換為GIF格式。最後,使用掃描軟體檢查這些字元,看看是否能正確地解釋。下面,你將看到A、B、C以及星號(*)的條碼:

Code for A

Code for B

Code for C

Code for Asterisk

  然後,為了在ASP頁面中描繪資料庫中數值的條碼,僅僅簡單地遍曆BarCodeText變數字串中的每一個字元,然後建立< IMG SRC=http://www.dvbbs.net/tech/asp/“...” >標記以替換字元為相應條碼圖形檔案。這非常簡單,不需要在用戶端安裝字型檔。相關代碼如下:

’Code 39 barcodes require an asterisk as the start and stop characters

Response.write "< IMG SRC="http://www.dvbbs.net/tech/asp/"asterisk.gif"" WIDTH=""30"" HEIGHT=""36"">"

For x = 1 to Len(Trim(rst("BarCodeText")))

Response.Write "< IMG SRC=http://www.dvbbs.net/tech/asp/"http://www.dvbbs.net/tech/asp/"http://www.dvbbs.net/tech/asp/" & mid(rst("BarCodeText"),x,1) & _

".gif"" WIDTH=""30"" HEIGHT=""36"">"

Next

’Code 39 barcodes require an asterisk as the start and stop characters

Response.write "< IMG SRC="http://www.dvbbs.net/tech/asp/"asterisk.gif"" WIDTH=""30"" HEIGHT=""36"">"

  如果在記錄集目前記錄中BarCodeText的數值是“ABC”,那麼執行上述代碼後,HTML的結果是:

< IMG SRC="http://www.dvbbs.net/tech/asp/asterisk.gif" WIDTH="30" HEIGHT="36">

< IMG SRC="http://www.dvbbs.net/tech/asp/A.gif" WIDTH="30" HEIGHT="36">

< IMG SRC="http://www.dvbbs.net/tech/asp/B.gif" WIDTH="30" HEIGHT="36">

< IMG SRC="http://www.dvbbs.net/tech/asp/C.gif" WIDTH="30" HEIGHT="36">

< IMG SRC="http://www.dvbbs.net/tech/asp/asterisk.gif" WIDTH="30" HEIGHT="36">

然後,將顯示如形:

現在,將該頁面列印後,就可以被條碼掃描器所跟蹤了。

  有2點關於條碼的注意事項:不是所有的條碼都能支援所有的字元集。Code39是很好而且很簡單的一種。它具備可變長度,支援所有的大寫字元、數字、星號以及7個特殊字元。對於每個字元,它使用風格一致的5線(2寬3窄)4空(指間隙,1寬3窄)形式。另外的字元集支援更多的,使用不同的解碼方案。確認對每個字元都建立了GIF圖形檔案,同時,你可以修改圖形的寬度和高度屬性,從而在頁面上顯示稍大的或者稍小的條碼。

  另外,如果遇到特殊的字元,上面的遍曆迴圈代碼將不會工作,因為,不能將GIF檔案命名為+.gif。這時,就要編寫一個接受字元Ascii數值的函數,然後使用CASE語句返回等價於檔案名稱的字串。如果資料庫欄位的數值是整型或者僅僅包含字元或者數字,上面的遍曆代碼就已經很好了!

  以上介紹的方法不是很複雜,但是在某些方面卻是很簡單,而且很好用。

 

如何隱藏頁面以防被搜尋

  在網路上為我們導航的搜尋引擎使用一些小程式 --- 例如我們所知道的’robots’、’bots’、 ’crawlers’和’spiders’ --- 來對頁面進行索引。然而,當開發一個網站,尤其是使用ASP進行開發時,做到防止頁面被索引卻是非常有用的。 當這些搜尋引擎正在回顧它們對所建立的web 頁面進行動態索引的方案時,例如ASP頁面,本文將協助你學習一些重要的技巧來避免robots 跟蹤那些你不情願被它們索引的頁面。

這為什麼與你有關?

  比方說現在你訪問了XYZ公司的Web 網站,用你所熟悉的搜尋引擎對’XYZ Corp.’ 進行搜尋。如果你發現你的管理頁面也在相關的連結資料表中的話就會有點擔心了。如果你有一個電子商務網站,你會不願意在使用者結束前面的頁面之前,得到這個網站的定單部分最後一頁的url 。不僅僅是網管人員不希望發生的。對於使用者來說,有些頁面不能正常運行也是煩惱的事,或者是因為他們沒有適當的許可權,或者因為他們沒有按照設定的順序訪問頁面。這樣也不利於你的網站的聲譽。這與那些商業搜尋引擎的經營者自身也有關係。因為他們想要提供準確的連結來改善服務。

  那麼,如何防止這些程式對你的網站的某些頁面進行索引呢?有兩種方法可供選擇,一是在根目錄下包含一個名為robots.txt 的檔案,或者是使用< META > 標記。

包含一個robots.txt 檔案

  早在1994年,一個自動郵件發送列表就聯合提出了一個防止robots 拖拽網站的協定。但是這並不是一個正式的標準,它不能提供執行的保證,但是卻為許多robot 作者所使用。

  建立一個robots.txt 檔案非常簡單,它表明網管人員所希望的robot 行為標準。注意檔案名稱必須用小寫字母,而且必須放在網站的根資料夾中,例如http://xyzcorp/robots.txt ,這樣一個檔案就能帶出整個網站的全部細節。
一個robots.txt 檔案中有什嗎?

  每個robots.txt 檔案包含一條或多條記錄。一條記錄由robot 的使用者代理程式字串組成,即你願意遵循的指示和應用於它的指示。不用擔心你需要知道在web中漫遊的所有robot的使用者代理程式字串,因為你可以用萬用字元* 來應用所有的robots。以下是一個記錄的例子:

User-agent: *

Disallow: /XYZfinances.asp

Disallow: /admin

Disallow: /news/update.asp

  除了使用者代理程式字串/萬用字元,只需要包含一個disallow 命令。這一個簡單的例子就顯示了你將會需要的全部可能性。它表明沒有使用者代理程式字串能夠進入 XYZfinances.asp ,用這一行表示:

Disallow: /XYZfinances.asp

  或者說使用者代理程式字串不能進入管理檔案夾及其下面的所有檔案夾:

Disallow: /admin

  或者是新聞檔案夾中的update.asp檔案,如果新聞檔案夾中所有其它內容都可以被索引的話。

  在一條記錄中你願意包含多少使用者代理程式字串的名字都可以。同樣在任何一個robots.txt 檔案中,你願意包含多少條記錄都可以(只要用一個或多個空行分隔開這些記錄就可以)。

  每一條單獨的記錄都可以為一個或多個robots提供不同的指示。但是為那些沒有用使用者代理程式字串所命名的引擎增加一個萬用字元規則是明智的。最流行的選擇是維護用一條記錄和一個代表使用者代理程式字串的萬用字元所表示一個方案。一個有196個使用者代理程式的清單可參考

http://info.webcrawler.com/mak/projects/robots/robots.html。

  普遍認為,robots應該忽略大小寫和版本號碼。要記住這是大多數商業搜尋引擎的robots作者們的意見,因為你不想用那些沒用的頁面來使使用者感到苦惱。但是,雖然在命令列中你可以不必考慮大小寫,但是必須保證在鍵入URL時是準確無誤的。雖然Windows NT 對檔案名稱和路徑名的大小寫無所謂,但並不是所有的平台都如此。

  你希望包含進去的其它東西就只有注釋了,這些使用UNIX bourne shell 協定,如用#符號表示在hash 符號前面空白,和一行中可以被忽略的剩餘部分。如果一行中只包含一個注釋的話,它就可以完全被忽略,雖然它在記錄之間的作用與空行並不相同。
現在來看看兩個最終的例子。

例1

# Don’t come to this site

User-agent: *

Disallow: / # Disallows anything

例2

# robots.txt for XYZcorp

# webmaster: John Doe contact JohnD@xyzcorp.com

User-agent: * # Applies to all robots except next record

Disallow: /store/order/ # No robot should visit any URL starting with

/store/order/

Disallow: /admin/ # Disallow any pages in the admin folder

Disallow: /world_domination.asp # Disallow world_domination.asp

好,這就是有關robot.txt檔案的全部內容。

下面介紹如何使用 < META >標記 。

使用一個< META > robot 標記

  同樣,你還是不能保證一個robot 會完全遵守< META >標記中的指示,但是對商業搜尋引擎來說還是十分有效。< META >標記必須包含在一個檔案的< HEAD > 部分。他們工作的原理是告訴robot 是否可以對其中有這個標記的頁面進行索引,是否可以跟隨頁面上或其下的檔案夾中的任何連結。

同樣,文法非常簡單。第一個例子是:

< META NAME="robots" CONTENT="noindex" >

  這行代碼告訴 robot不要索引這一頁。

下一個例子:

< META NAME="robots" CONTENT="nofollow" >

  允許robot索引這一頁,但是規定它不能夠跟隨這一頁上的任何連結。如果你想將二者都禁止,可以使用:

< META NAME="robots" CONTENT="noindex, nofollow" >

  這表示不要索引這一頁,也不要跟隨這頁上的任何連結。但是,還有一個更簡單的方法:

< META NAME="robots" CONTENT="none" >

  還是表示不要索引這一頁,或跟隨這頁上的任何連結。

  不幸的是,如果你有一個名為admin.asp的檔案與 update.asp相連結,在admin.asp中使用< META >

  標記來防止robot 對admin.asp 或 update.asp 進行索引,卻忘記在另一個與update.asp 相連結的

  頁面中也做同樣的處理,那麼robot 還是可以通過這個漏掉< META > 標記的第二頁而到達update.asp。

  另外,你還可以使用值索引。但由於它們被忽略時是預設值,因此這是沒有必要的,而且這樣做沒有意義。

  如果你使用的是IIS,那麼應該總是使用定製的 HTTP 標頭檔來執行< META > 標記方法。從理論上講,一個robot 對以這種方式建立的< META > 標記的反應應該是完全一樣的,看起來是這樣:

< META HTTP-EQUIV="robots" CONTENT="noindex" >

  從理論上講,現在我們就可以對所有的檔案夾或檔案夾中的檔案或虛擬路徑使用IIS建立的定製標頭檔。但是到目前為止,這種方法的測試並不成功。這些方法都不能完全保證將你的頁面藏起來。確實,如果有人故意寫一個robot 去找到你的私用頁面的話,他們反而成了指向作者想要保護的頁面的指標。但是,對於防止商業網站索引頁面來說,這些方法還是奏效的,也只有在這方面是有意義的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.