FP98: Sample JavaScript for Tracking Site Visits via Cookies

ID: Q194461


The information in this article applies to:


SUMMARY

This article provides a sample JavaScript that keeps a record of how many times a given browser has visited a HyperText Markup Language (HTML) document using a cookie to record visits.


MORE INFORMATION

WARNING: ANY USE BY YOU OF THE CODE PROVIDED IN THIS ARTICLE IS AT YOUR OWN RISK. Microsoft provides this code "as is" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.

Cookies are special files that a web server can use to store data on a client browser, such as Microsoft Internet Explorer. By using a cookie, you can track how often a particular visitor comes to your site compared with the total number of visits. A disadvantage is that if the client deletes the cookie by clearing out the browser's cache, the hit count will reset to zero.

You can record the number of visits with a cookie by using the following sample JavaScript. To enter this script, switch to HTML view in Frontpage Editor and type this script after the </TITLE> tag:


   <SCRIPT LANGUAGE="JavaScript">
   <!--

   var caution = false

   // name - name of the cookie
   // value - value of the cookie
   // [expires] - expiration date of the cookie
   // (defaults to end of current session)
   // [path] - path for which the cookie is valid
   // (defaults to path of calling document)
   // [domain] - domain for which the cookie is valid
   // (defaults to domain of calling document)
   // [secure] - Boolean value indicating if
   // the cookie transmission requires a secure transmission
   // * an argument defaults when it is assigned null as a placeholder
   // * a null placeholder is not required for trailing omitted arguments
   function setCookie(name, value, expires, path, domain, secure) {
      var curCookie = name + "=" + escape(value) +
         ((expires) ? "; expires=" + expires.toGMTString() : "") +
         ((path) ? "; path=" + path : "") +
         ((domain) ? "; domain=" + domain : "") +
         ((secure) ? "; secure" : "")
      if (!caution || (name + "=" + escape(value)).length <= 4000)
         document.cookie = curCookie
      else
         if (confirm("Cookie exceeds 4KB and will be cut!"))
            document.cookie = curCookie
   }

   // name - name of the cookie
   // * return string containing value
   // of specified cookie or null if cookie
   // does not exist
   function getCookie(name) {
      var prefix = name + "="
      var cookieStartIndex = document.cookie.indexOf(prefix)
      if (cookieStartIndex == -1)
         return null
      var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex +
         prefix.length)
      if (cookieEndIndex == -1)
         cookieEndIndex = document.cookie.length
      return unescape(document.cookie.substring(cookieStartIndex +
         prefix.length,
   cookieEndIndex))
   }

   // name - name of the cookie
   // [path] - path of the cookie
   // (must be same as path used to create cookie)
   // [domain] - domain of the cookie
   // (must be same as domain used to create cookie)
   // * path and domain default if assigned
   // null or omitted if no explicit argument proceeds
   function deleteCookie(name, path, domain) {
      if (getCookie(name)) {
         document.cookie = name + "=" +
         ((path) ? "; path=" + path : "") +
         ((domain) ? "; domain=" + domain : "") +
         "; expires=Thu, 01-Jan-70 00:00:01 GMT"
      }
   }

   // date - any instance of the Date object
   // * you should hand all instances of the
   // Date object to this function for "repairs"
   // * this function is taken from
   // Chapter 14, "Time and Date in JavaScript", in
   // "Learn Advanced JavaScript Programming"
   function fixDate(date) {
      var base = new Date(0)
      var skew = base.getTime()
      if (skew > 0)
         date.setTime(date.getTime() - skew)
   }

   var now = new Date()
   fixDate(now)
   now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000)
   var visits = getCookie("counter")
   if (!visits)
      visits = 1
   else
      visits = parseInt(visits) + 1
   setCookie("counter", visits, now)
   document.write("You have been here " + visits + " time(s).")

   // -->
   </SCRIPT> 
When you are finished entering the script, save your page and then preview it in a Web browser to check functionality.

This script has been tested with Microsoft Internet Explorer versions 3.02 and 4.01 and Netscape Navigator version 4.05.


REFERENCES

Yehuda Shiran, Tomar Shiran, Tomer Shiran. "Learn Advanced JavaScript Programming, " Chapter 14. Time and Date in JavaScript, Plano, TX: Wordware Publishing.

Additional query words: 98 Jscript Java


Keywords          : fpedit fpscript 
Version           : WINDOWS:
Platform          : WINDOWS 
Issue type        : kbhowto 

Last Reviewed: July 28, 1999