Server Time:
Sunday May 11 2008 08:15 PM  
Your Time:
  
HostMySite.Com is sponsoring this tutorial, please visit their site today!
This tutorial is sponsored by HostMySite.Com - ColdFusion Hosting

Databaseless hit counter with visitor information
by: Jeff Sheppard
Email this tutorial to a friend Display Printer Friendly Format
[Download in PDF Format] [Download in FlashPaper Format]

Databaseless hit counter with visitor information

You will need to create four files:
  hit_counter.txt,
  visitor_log.txt,
  hit_counter.cfm,
  log_viewer.cfm

And download the zipfile of the images from here:
IMAGES

First create a folder on your site and name it hit_counter.
Example:
http://www.yoursite.com/hit_counter

Then copy all of the files you created into this folder.

Then create a folder inside that called images.
Example:
http://www.yoursite.com/hit_counter/images

Extract the images from the zip files into this folder


So now you should have hit_counter.txt, visitor_log.txt, hit_counter.cfm, log_viewer.cfm in the hit_counter folder and image_0.jpg thru image_9.jpg in the images folder.

NOTE: the page hit_counter.txt must have only a "0" on it (or any number you want your counter to begin with)


Now in the hit_counter.cfm enter the following code:

<!-----retreive number--------->
<cffile action="read" file="D:\webserver\joeyswvbest.com\www\test\hit_counter.txt" variable="hit_count">
<!-------end retreive------->
<!------add one to the hit count------->

<cfset hit_count = NumberFormat(hit_count, "0000000") + 1>
<!--------end add one to the hit count------->
<!--------loop thru and assign image names according the number------->

<cfloop index="i" from="1" to="7">
   <cfset "image_#i#" = MID(NumberFormat(hit_count, "0000000"),i,1)>
</cfloop>

<!--------end loop thru and assign image names according the number------->
<!-------display counter-------->

<table border="1" cellpadding="0" cellspacing="0">
<cfoutput>
<tr><td nowrap>
<img src="http://www.yoursite.com/hit_counter/images/image_#image_1#.jpg">
<img src="http://www.yoursite.com/hit_counter/images/image_#image_2#.jpg">
<img src="http://www. yoursite.com/hit_counter/images/image_#image_3#.jpg">
<img src="http://www. yoursite.com/hit_counter/images/image_#image_4#.jpg">
<img src="http://www. yoursite.com/hit_counter/images/image_#image_5#.jpg">
<img src="http://www. yoursite.com/hit_counter/images/image_#image_6#.jpg">
<img src="http://www. yoursite.com/hit_counter/images/image_#image_7#.jpg">

</td></tr>
</cfoutput>
</table>
<!-------end display counter-------->
<!------write the updated hit count to the text file------->

<cffile action="write" file="D:\webserver\joeyswvbest.com\www\test\hit_counter.txt" output="#NumberFormat(hit_count, "0000000000")#" addnewline="no">
<!------end write the updated hit count to the text file------->
<!-------reteive visitor information------>

<CFSET address = cgi.remote_addr>
<CFSET host = cgi.remote_host>
<CFSET referer = cgi.http_referer>
<CFSET agent = cgi.http_user_agent>
<CFSET page = cgi.script_name>
<CFIF NOT Len(host)>
    <CFSET host = "unknown">
</CFIF>
<CFIF NOT LEN(referer)>
    <CFSET referer = "unknown">
</CFIF>

<!-------end reteive visitor information------>
<!-------write visitor information to file------>

<cffile action="append"
file="D:\webserver\joeyswvbest.com\www\test\visitor_log.txt"
output="#address#, #host#, #referer#, #agent#, #page#, #CreateodbcDateTime(Now())#"
addnewline="yes">

<!-------end write visitor information to file------>

This code will retrieve the last hit number add 1 to it and display it on your webpage, plus write it back to the hit_count.txt file.


Now add this code to the log_viewer.cfm to retrieve and view the log file the previous code wrote:

<!--------reteive log file information--------->
<cffile action="read"
file="D:\webserver\joeyswvbest.com\www\test\visitor_log.txt" variable="visitor_log">

<!--------end reteive log file information--------->
<!-------separate each vistors record---------->

<cfset file_array = ArrayNew(1)>
<cfloop index="rc" list="#visitor_log#" delimiters=",#chr(10)#">
   <cfset rc = ArrayAppend(file_array, rc)>
</cfloop>

<!-------end separate each vistors record---------->
<!-----set variables to display each entry inside each record------->

<cfset a = 1>
<cfset b = 2>
<cfset c = 3>
<cfset d = 4>
<cfset e = 5>
<cfset f = 6>

<!-----end set variables to display each entry inside each record------->
<!----------get total record and divide by 6 (6 being 6 entries in each record)---->

<cfset loop_end = arrayLen(file_array)/6>
<!----------end get total record and divide by 6 (6 being 6 entries in each record)---->
<!------loop thru each record and show entries------>

<cfloop index="i" from="1" to="#loop_end#">
<cfoutput>

<strong>Visitor Number: #i#</strong><br>
address: #file_array[a]#<br>
Host: #file_array[b]#
<br>
referer: #file_array[c]#
<br>
Agent: #file_array[d]#
<br>
Page: #file_array[e]#
<br>
Time: #file_array[f]#
<br>
</cfoutput>
<cfset a = a + 6>
<cfset b = b + 6>
<cfset c = c + 6>
<cfset d = d + 6>
<cfset e = e + 6>
<cfset f = f + 6>

</cfloop>
<!------end loop thru each record and show entries------>


Date added: Thu. January 15, 2004
Posted by: Jeff Sheppard | Views: 18338 | Tested Platforms: CFMX | Difficulty: Intermediate
Categories Listed: Other

HostMySite.Com is sponsoring this tutorial, please visit their site today!
This tutorial is sponsored by HostMySite.Com - ColdFusion Hosting

Please rate this tutorial:
5 Stars 4 Stars 3 Stars 2 Stars 1 Stars
Comments on this tutorial
Read previous comments on this particular tutorial
Databaseless hit counter with visitor information
Dear Friend,
The code given with the heading"Databaseless hit counter with visitor information" is not at all working. Please check the codes and try to make sure this is working properly. Before uploading the codes pls make sure all the codes included in the file.

Regards

Sajan
Posted by: Sajan Jose
Posted on: 07/06/2004 06:41 AM
Databaseless hit counter with visitor information
Dear Sajan,
It works great to me.. flawless..However,You may need to edit certain portion to work with your server thou..

Regards,
Bagero
Posted by: bagero
Posted on: 07/16/2004 11:52 AM
Dear Sajan
The code works fine, just replace all of the

D:\webserver\joeyswvbest.com\www\test
With the correct information from your server.

THanks
Posted by: Jeff Sheppard
Posted on: 10/16/2004 11:23 PM
comma
Hi all,
for a user on MacOS and Safari browser the client variable "CGI.http_user_agent" is like "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; pt-pt) AppleWebKit/125.5 (KHTML, like Gecko) Safari/125.9".

This have a comma inside and creates a problem when the script reads visitor_log.txt as the comma is used as delimeter between the various cgi client variables (it happens that the script reads the value of cgi.script_name as a date).

I resolved using <CFSET agent = Replace(cgi.http_user_agent, "," ,"" ,"All")> in substitution of the original cfset declaration.
Posted by: Giovanni
Posted on: 10/25/2004 08:10 PM

Thanks for your comments!!! I have never used a MAC or Safari and I really appreciate the help you provided!!!


Thanks,
Jeff
Posted by: Jeff Sheppard
Posted on: 10/26/2004 09:37 AM
Post a new comment on this tutorial
post a new comment on this particular tutorial
Your Name:
Your Email:
Comment Title:
Comments:
Key Phrase:
 
Skyscrapper Banner Advertisement
ProWorkFlow.Com

You are 1 of 743 active sessions! | Privacy | Company
Copyright © 2002 EasyCFM.Com, LLC. (Easy ColdFusion Tutorials) All Rights Reserved
All other trademarks and copyrights are the property of their respective holders.
ColdFusion Hosting ColdFusion Hosting
ADD TO:
Blink
Del.icio.us
Digg
Furl
Google
Simpy
Spurl
Y! MyWeb