有一天我突發奇想,如果我每到一個網站,那裡都能立刻調出我需要看的信息,那豈非美妙得很。接下來我想更深入地考慮這個問題,坐到椅子上拿一支鉛筆,卻不知道自己寫什麼。如此一來,我還是得著手對付程式碼它們。
??我的朋友開了一個小型站點,原本是我設計的。這是一個檢驗我想法的好平台。所以我寫出程式碼,上傳了文件。真叫人興奮,程式工作起來煞是圓滿,同時也證明我的想法的確不錯。
??以前看過一些網路使用者傾向報告,其中有一個規律給我印像很深。說是大多數用戶如果在三次點擊內無法找到自己需要的內容,就會立刻離開該網站。我的程式碼就可以針對這個問題,保險用戶只要點一次滑鼠就找到目標。在我的例子裡,假設有個使用者上了Yahoo,檢索關鍵字為Fireplace Accessories(飛行器材配件)。在給定的結果裡,他來到我朋友的站點,將會看到"你正在搜尋Fireplace Accessories"等字樣的畫面。接著他會依照網站上的提示,直接到想要去的頁面。
??你要作的第一步,是在global.asa檔案中建立一個初始變量,放置在你的Sub Session_onStart()程式中。
??Sub Session_onStart()
?? Referer = Trim(Request.ServerVariables("HTTP_REFERER"))
?? If Referer = "" Then
?? Referer = "None"
?? End If
?? Session("Referer") = Referer
??End Sub
??接著我們來著手看看如何完成程式的主要功能。
??因為url經過了編碼,所以首先要把來訪者主機的指向資料還原成對我們有用的東西。建立一個ASP頁面,叫它decode.asp,是我們程式的主幹。第一個功能是要將編碼過的指向頭解碼。程序有點長,而且很直接,沒有什麼轉彎抹角,如果你嫌麻煩,不如到www.popunet.com的"網蟲進修班"上面找到本文,用"拷貝/粘貼"大法吧。
??原始碼
第二件要做的事情是:從URL頭資訊裡分離出查詢部分--這才是我們需要的。
'從指向URL中分離查詢欄位。
?Function isProduct(pStr)
?? If pStr <> "" And lCase(pStr) <> "none" Then
?? '向後搜尋字段
?? temp = inStrRev(pStr, "/")
?? '得到目錄分離的位置
?? tempStr = Right(pStr, temp)
?? '得到有關資料長度
?? temp2 = Len(pStr)
?? '得到查詢資料行
?? pStr = Mid(pStr, temp, temp2)
?? '設定回傳功能的值
?? isProduct = pStr
??Else
?? isProduct = ""
??End If
?End Function
??接著是要確立查找的明確標準。為達到這個目的,建立兩個靜態空間"指?找出指向資料
?? Function Finder(byRef prodList, byVal refList)
??'模糊查詢
??refList = lCase(refList)
??' 透過指標循環查找匹配字段
??For i = 0 To uBound(prodList) - 1
??If inStr(refList, lCase(prodList(i, 0))) Then
??'找到匹配
??tHolder = tHolder & "Are You looking For " _
??& "" _
??& prodList(i, 0) & "
??"
??End If
??'第二次循環
??Next
??'返回結果
??Finder = tHolderEnd Function
??透過一個inclue,把我們做好的decode.asp放到需要此功能的任何頁面,大功告成啦。
具體如下:
'如果指向頭不為空,調出此函數If lCase(Session("Referer")) <> "none" OR Session("Referer") <> "" Then' 解析指向資料Response.Write vbCrLf & "
??" _ & Finder(pArray, URLDecode(isProduct(Session("Referer")))) _ & "
??" & vbCrLf
??End If