マスターページを持つ Web サイトを作成しています。訪問者数を記録するヒットカウンターを作成したいのですが、コードを見つけてマスターページに入れました。コードは次のとおりです: マークアップ コード:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="counter.ascx.cs" Inherits="counter" %>
<asp:Label ID="lblCounter" runat="server"></asp:Label>
コード ビハインド - C#:
protected void Page_Load(object sender, EventArgs e)
{
this.countMe();
DataSet tmpDs = new DataSet();
tmpDs.ReadXml(Server.MapPath("~/counter.xml"));
lblCounter.Text = tmpDs.Tables[0].Rows[0]["hits"].ToString();
}
private void countMe()
{
DataSet tmpDs = new DataSet();
tmpDs.ReadXml(Server.MapPath("~/counter.xml"));
int hits = Int32.Parse(tmpDs.Tables[0].Rows[0]["hits"].ToString());
hits += 1;
tmpDs.Tables[0].Rows[0]["hits"] = hits.ToString();
tmpDs.WriteXml(Server.MapPath("~/counter.xml"));
}
コードを機能させるためのルート ディレクトリ内の xml ファイル。XML ファイルは次のとおりです。
<?xml version="1.0" encoding="utf-8" ?>
<counter>
<count>
<hits>0</hits>
</count>
</counter>
しかし、私のウェブサイト内のすべてのページは、アクセスするたびにカウンターをトリガーします。このコードを修正して、1 人の訪問者によって 1 回だけカウンターがトリガーされるようにしてください。
コードをインデックス ページのみに配置することにしましたが、インデックスを開くたびに (インデックス ページにとどまっている場合でも) 更新するたびにカウンターがトリガーされます。