一些Asp技巧和實用解決方案

來源:互聯網
上載者:User
技巧|解決 隨機數:
  <%randomize%>
  <%=(int(rnd()*n)+1)%>
  查詢資料時得到的記錄關鍵字用紅色顯示:
  <% =replace(RS("欄位X"),searchname,"<font color=#FF0000>" & searchname & "</font>") %>
  通過asp的手段來檢查來訪者是否用了代理
  <% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
  response.write "<font color=#FF0000>您通過了Proxy 伺服器,"& _
  "真實的IP為"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
  end if
  %>
  判斷上一頁的來源
  request.servervariables("HTTP_REFERER")
  JavaScript: document.referrer
  清除緩衝,重新載入頁面
  <%response.expires = 0
  response.expiresabsolute = now() - 1
  response.addHeader "pragma","no-cache"
  response.addHeader "cache-control","private"
  Response.cachecontrol = "no-cache"
  %>
  在下拉式功能表中顯示年和月
  <select name="select">
  <%
  Dim M_Year
  Dim M_Month
  Dim M_MonthJ
  Dim M_TheMonth
  Dim M_YM
  For M_Year = 2000 To Year(Date)
  M_Month = 12
  If M_Year = Year(Date) Then
  M_Month = Month(Date)
  End If
  For M_MonthJ=1 To M_Month
  If M_MonthJ < 10 Then
  M_TheMonth = "0" & M_MonthJ
  Else
  M_TheMonth = M_MonthJ
  End If
  M_YM = M_Year& "-" & M_TheMonth %>
  <option value="<%= M_YM %>"><%= M_YM %></option>
  <%
  Next
  Next %>
  </select>
  檢索並刪除資料庫裡的重複記錄
  conn.execute("delete from table where id not in (select distinct from table)")

   在做一個線上交流的網站時,有個問題很令我頭疼,就是關於即時統計線上使用者的問題,客戶要求:統計當前線上人數、遊客人數、會員人數、線上使用者列表,包括遊客、會員和管理員(如果是遊客,則自動產生遊客的ID,如果是會員,則顯示會員姓名)。因為它要求有即時性,則首先我將用global.asa解決的想法pass掉。
  問題的關鍵是如何判斷使用者已經離開,和當使用者離開時如何執行一個檔案或一個函數。
  經過和網上一些朋友的探討,終於解決了這個問題。
  解決的原理為:編寫一個通用頁面,所謂的通用頁面,就是應用裡的每個頁面都包含這個頁面,例如:header.ASP,在這個頁面裡,用XMLHTTP寫一段代碼,這段代碼的作用是每隔10秒或20秒就向伺服器發送一個請求,目的是更新目前使用者的線上時間並刪除線上時間超過一定時間的使用者,使資料庫中的線上使用者記錄保持一定的即時性。
  主要實現方法為:
  建立一資料庫,欄位名稱分別為:id(字元),name(字元),user(數字)tt(日期),admin(許可權代碼,0-普通使用者,1-管理員)
  表名:online
  header.asp ↓
  ============================================================
  <%
  ... ...
  if session("s_in")<>1 and session("s_name")="" then ’如果使用者是第一次登陸
  rs.open "select * from online",conn,3,3
  rs.addnew
  rs("id")=session.sessionID
  rs("name")="遊客" & session.sessionID
  rs("user")=0 ’0表示使用者未登陸,是遊客身份
  rs("tt")=now
  rs.update
  rs.close
  session("s_in")=1 ’設定使用者的資料已經存入資料庫,表示已經線上
  end if
  if session("s_name")<>"" then ’如果使用者已經通過登入框登入
  rs.open "select * from online where id=’" & session.sessionID & "’",conn,3,3
  rs("name")=session("s_name")
  rs("admin")=session("s_admin") ’將使用者的姓名更新為會員名稱
  rs("user")=1 ’表示使用者已經登陸,是會員身份
  rs("tt")=now ’將當前系統時間設定為使用者的登陸時間
  rs.update
  rs.close
  end if
  ... ...
  %>
  ... ...
  <head>
  ... ...
  <script language=JavaScript>
  function Test()
  {
  var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
  xmlhttp.open("POST","onceonline.asp",false); // 向onceonline.asp發送更新要求
  xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
  xmlhttp.send();
  }
  setInterval("Test();",10); // 10秒鐘發送一次更新要求
  </script>
  ... ...
  </head>
  ... ...
  ==========================================================
  onceonline.asp
  <%
  rs.open "select tt from online where id=’" & session.sessionID & "’",conn,3,3
  rs("tt")=now() ’更新當前線上使用者的線上時間
  rs.update
  rs.close
  rs.open "delete from online where datediff(’s’,tt,now())>60",conn,3,1 ’刪除逾時使用者
  %>
  ==============================================================
  這樣,基本保證了資料庫中使用者列表的即時性,誤差取決於更新時間和刪除時間的差值大小和伺服器的處理速度,建議不要將刪除逾時使用者的時間間隔取的過於小,那樣有可能會導致線上用



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.