This is a very basic article describing that tracing an IPAddress and getting the number of clicks for a particular control. This gives the basic idea for counting the unique clicks for a control or for a page using XML.
This article contains only two pages. One is aspx and another one is XML file.
Problem Description: I have an image control in my page. I need to display the number of clicks for particular user system. This means for the first time when I click on the control, it should display like "no of clicks is 1" and for the second time onwards the value will vary.
Technologies: C#.Net, VISUAL STUDIO 2008
Pages: noofclicks.aspx, noofclicks.aspx.cs, count.xml
Code for noofclicks.aspx:
<form id="form1" runat="server">
<div>
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/middle.jpg" onclick="ImageButton1_Click" />
</div>
</form>
Code behind for noofclicks.aspx page
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Xml;
using System.Net;
using System.Data;
public partial class noofclicks : System.Web.UI.Page
{
XmlDocument doc = new XmlDocument();
int i;
DataSet ds;
int j;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
//retrieve ip address
string host = System.Net.Dns.GetHostName();
string hostname = Dns.GetHostEntry(host).HostName;
IPHostEntry ipEntry = Dns.GetHostEntry(host);
IPAddress[] addr = ipEntry.AddressList;
//xml
doc.Load(Server.MapPath("~/count.xml"));
XmlNodeList list = doc.SelectNodes("//NewDataset/section");
foreach (XmlNode node in list)
{
//checking whether the ip address is there or not
if (addr[0].ToString() == node.ChildNodes[1].InnerText)
{
i = Convert.ToInt32(node.ChildNodes[0].InnerText);
i += 1;
node.ChildNodes[0].InnerText = i.ToString();
doc.Save(Server.MapPath("~/count.xml"));
j = 1;
}
else
{
j = 0;
}
}
if (j == 0)
{
ds = new DataSet();
ds.ReadXml(Server.MapPath("~/count.xml"));
DataRow row = ds.Tables[0].NewRow();
row["count"] = "1";
row["ip"] = addr[0].ToString();
ds.Tables[0].Rows.Add(row);
ds.WriteXml(Server.MapPath("~/count.xml"));
Response.Write(" no of clicks for this image from ur ip address " + i + 1);
}
else
Response.Write(" no of clicks for this image from ur ip address " + i);
}
}
count.xml File
<?xml version="1.0" standalone="yes"?>
<NewDataset>
<section>
<count>21</count>
<ip>192.169.1.100</ip>
</section>
<section>
<count>1</count>
<ip>192.170.1.100</ip>
</section>
<section>
<count>7</count>
<ip>192.171.1.100</ip>
</section>
<section>
<count>10</count>
<ip>192.166.1.104</ip>
</section>
<section>
<count>13</count>
<ip>192.158.1.100</ip>
</section>
<section>
<count>17</count>
<ip>192.168.1.105</ip>
</section>
<section>
<count>17</count>
<ip>192.168.1.100</ip>
</section>
</NewDataset>
This gives only a basic idea....
Enjoy the day buddies...!