今天写了一个最简单的 计数器,实现的功能很简单,可以记录总访问数及今日访问数。代码如下:

复制   保存
// ********************************************************
// 网页计数器控件
// Designed by Faib Studio.
// Copyright 2007
// Email faib920@126.com or QQ 55570729
// ********************************************************

using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.Design;
using System.Web.UI.WebControls;
using System.Drawing.Design;
using System.IO;
using System.Text;
namespace FaibClass.WebControls
{
[ToolboxData("<{0}:Counter runat=server></{0}:Counter>")]
public class Counter : Label
{
        #region 私有变量
        private string m_FileName = "";
private string m_ImageUrl = "";
private int m_Length = 5;
private int m_TotalCount, m_TodayCount;
private bool m_OnlyIcon = false;
        #endregion

public Counter()
{
}
        #region 属性
        [Browsable(false)]
public override string Text
{
get { return base.Text; }
set { base.Text = value; }
}
[Category("Appearance"),
Description("保存计数的文本文件路径。"),
Editor(typeof(UrlEditor), typeof(UITypeEditor))]
public string FileName
{
get { return m_FileName; }
set { m_FileName = value; }
}
[Category("Appearance"),
Description("使用图象来显示计数,数字使用通配符?代替。"),
Editor(typeof(ImageUrlEditor), typeof(UITypeEditor))]
public string ImageUrl
{
get { return m_ImageUrl; }
set { m_ImageUrl = value; }
}
[Category("Appearance"),
Description("显示计数的默认长度。"),
DefaultValue(5)]
public int Length
{
get { return m_Length; }
set { m_Length = value; }
}
[Category("Appearance"),
Description("是否只在界面上显示一个图标。"),
DefaultValue(false)]
public bool OnlyIcon
{
get { return m_OnlyIcon; }
set { m_OnlyIcon = value; }
}
//总访问量
        [Browsable(false)]
public int TotalCount
{
get { return m_TotalCount; }
set { m_TotalCount = value; }
}
//今日访问量
        [Browsable(false)]
public int TodayCount
{
get { return m_TodayCount; }
set { m_TodayCount = value; }
}

#endregion
        #region 公共方法
        protected override void OnLoad(EventArgs e)
{
int counter = 0, todaycounter = 0;
DateTime today = DateTime.MinValue;
StringBuilder builder = new StringBuilder();
if (Util.IsDesignMode(Page))//是否设计模式
            {
Random rad = new Random();
if (m_ImageUrl.Length == 0)
{
if (m_OnlyIcon)
{
builder.Append("<img src=/"" + m_ImageUrl + "/" align=absmiddle>");
}
else
{
for (int i = 0; i < m_Length; i++)
{
builder.Append(rad.Next(9).ToString());
}
}
}
else
{
if (m_OnlyIcon)
{
builder.Append("<img src=/"" + m_ImageUrl + "/" align=absmiddle>");
}
else
{
for (int i = 0; i < m_Length; i++)
{
builder.Append("<img src=/"" + m_ImageUrl.Replace("?", rad.Next(9).ToString()) + "/" align=absmiddle>");
}
}
}
}
else
{
bool blnExists = File.Exists(Page.Server.MapPath(m_FileName));
if (blnExists)//读出访问量
                {
StreamReader str = File.OpenText(Page.Server.MapPath(m_FileName));
try
{
counter = int.Parse(str.ReadLine());
todaycounter = int.Parse(str.ReadLine());
today = DateTime.Parse(str.ReadLine());
}
catch
{
throw new Exception("文件内容为空,请将文件删除");
}
finally
{
str.Close();
}
}
if (Page.Session["__Counter"] == null)
{
counter++;
todaycounter++;
if (today != DateTime.Today)
{
today = DateTime.Today;
}
}
string s = counter.ToString();
Attributes.Add("title", "总计: " + s + ", 今日: " + todaycounter.ToString());
if (m_OnlyIcon)
{
builder.Append("<img src=/"" + m_ImageUrl + "/" align=absmiddle>");
}
else
{
if (s.Length < m_Length)
{
if (m_ImageUrl.Length == 0)
{
for (int i = 0; i < m_Length - s.Length; i++)
{
builder.Append("0");
}
}
else
{
for (int i = 0; i < m_Length - s.Length; i++)
{
builder.Append("<img src=/"" + m_ImageUrl.Replace("?", "0") + "/" align=absmiddle>");
}
}
}
if (m_ImageUrl.Length == 0)
{
builder.Append(s);
}
else
{
for (int i = 0; i < s.Length; i++)
{
builder.Append("<img src=/"" + m_ImageUrl.Replace("?", s.Substring(i, 1)) + "/" align=absmiddle>");
}
}
}
//将新的访问量写入文件
                if (Page.Session["__Counter"] == null)
{
StreamWriter stw = new StreamWriter(Page.Server.MapPath(m_FileName));
stw.WriteLine(counter.ToString());//写入总计
                    stw.WriteLine(todaycounter.ToString());//写入日期
                    stw.WriteLine(today.ToShortDateString());//写入今日访问量
                    stw.Close();
Page.Session["__Counter"] = 1;//标识
                }
}
Text = builder.ToString();
m_TotalCount = counter;
m_TodayCount = todaycounter;
base.OnLoad(e);
}
        #endregion
    }
}

一个简单的网页计数器相关推荐

  1. application实现一个简单的网页计数器

    该篇文章首发于我的个人博客:http://cherryblog.site/ 使用github+coding+hexo搭建的静态博客,更多文章请移步至我的个人博客 application(应用对象):存 ...

  2. 使用Application设计一个简单的网页计数器程序

    Application 1.当Web服务器启动时,Web服务器会自动创建一个Application对象.Application对象一旦创建,它将一直存在,直到Web服务器关闭. 2.Applicati ...

  3. php mysql简单网页_PHP和MySQL实现简单的网页计数器

    网站统计数据为网站所有者提供关于网站运行情况和访问人数的重要信息.点击计数器计数并显示有多少人访问一个网页. 计数器的代码根据所使用的编程语言和希望计数器收集的信息量而变化.如果您像许多网站所有者一样 ...

  4. github密码格式_如何使用GitHub构建一个简单的网页 (不用框架版本)

    1.申请GitHub账号 进入GitHub官网,点击右上角的Sign up进行注册, 注册很简单,只要填写好用户名,邮箱,密码就行(已注册的用户名,邮箱不能再进行注册) 下面有一个你是人类的验证(照着 ...

  5. python3一个简单的网页抓取

    python3一个简单的网页抓取 都是学PYTHON.怎么学都是学,按照基础学也好,按照例子增加印象也好,反正都是学 import urllib import urllib.requestdata={ ...

  6. 如何用Html+css3写一个简单的网页

    !DOCTYPE html>                                */我这次利用一门前端开发语言Html开发一个简单的网页/* <html> <hea ...

  7. 一个简单的网页抓取工具

    前两天遇到一个妹子,她说不会从拉网页,我想用node做个网页抓取工具是何尝的简单,于是装x之路开始了. 其实想法很简单,由网址得到html,由html解析css,js,image等,分别下载就行了, ...

  8. 使用html 语言建立一个简单的网页,如何用记事本建立简单的网页(1).doc

    第九章 网页制作 实验一 用记事本建立简单的HTML文件 [实验目的] 学会用HTML语言建立一个简单的网页. [实验内容] 建立一个网页,布局自定,包括自我介绍.图片.自己的电子信箱地址等,要求在标 ...

  9. 教你快速制作一个简单的网页

    像下面这样一个简单的网页怎么制作呢? 通过这篇文章,可以让你基本掌握一个HTML的结构和常用标签的使用 需要用到的常用标签 <b> 加粗</b> ~~~~~~~~~~~~~~~ ...

最新文章

  1. 看日本电影再也不怕看不懂了,6行Python代码轻松实现音频转文字
  2. 逻辑模型三要素-数据结构
  3. mysql数据库表删了重建error_数据库内核月报 - 2015 / 09-MySQL · 捉虫动态 · 建表过程中crash造成重建表失败-阿里云开发者社区...
  4. 如何从Silverlight 代码调用Javascript 函数
  5. linux week3
  6. 【One by One系列】IdentityServer4(四)授权码流程
  7. linux 跟踪内存,用strace跟踪malloc内存分配
  8. python环境快速安装opencv 离线版安装
  9. Python中68个内置函数的总结
  10. “丑东西”,正在成为一门生意
  11. 没有一个产品,竟捞金200亿!2021年最大胆设想,已沦为圈钱工具
  12. 神秘使者到Java帝国传道协程,竟被轰了出去
  13. 基于相位一致性的边缘检测
  14. 分析CVPR 2019论文关键词,我看到了计算机视觉的最新趋势 | 附代码
  15. 树莓派python 简介_树莓派与python语言概述
  16. 华中农业大学和南京农业大学计算机,科学网—2015年国内几所农业大学的国家基金排名及评述 - 朱猛进的博文...
  17. 【转载】Linux下用dd命令扇区读写SD卡
  18. 我的csdn的第三课的总结———淮师杨建波
  19. Riverbed SteelHead 9.5.0
  20. python自学爬虫要多久_自学python爬虫需要多久

热门文章

  1. java学生成绩分析系统spring源码
  2. MUSBMHDRC USB 2.0 编程指南解读4
  3. python期中考试试卷分析_初一期中考试试卷分析
  4. vi/vim常用快捷键
  5. 中冠百年|工薪阶层家庭投资理财的禁忌有哪些
  6. DestinationRule实现Istio集群高级配置
  7. 多时间序列数据MK突变检验突变点提取
  8. Modbus-RTU协议
  9. 调制解调器(Modem)
  10. 2005年度《超级女声》冠军李宇春登上美国《时代周刊》而后的评论?