asp.net根据计算机MAC地址限定每台机子只能领取一次账号

所属分类: 网络编程 / ASP.NET 阅读数: 1795
收藏 0 赞 0 分享
下面开始吧:
首先写一个简单的前台代码:
复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div style="text-align: left">
<strong><span style="font-size: 14pt">欢迎光临爱智旮旯的博客!</span><br />
</strong><span style="font-size: 10pt; color: #ff0000">注:每台计算机只可以领取一个帐号<br />
</span>
<asp:Button ID="getNamePass" runat="server" OnClick="getNamePass_Click" Text="领取帐号密码" />&nbsp;<br />
<asp:Label ID="labName" runat="server"></asp:Label><br />
<asp:Label ID="labPass" runat="server"></asp:Label><br />
</div>
</form>
</body>
</html>

再来写一个后台代码,备注已经说的比较清楚,这里不多说了!
复制代码 代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
using System.Diagnostics;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
labName.Text = labPass.Text = "";
}
protected void getNamePass_Click(object sender, EventArgs e)
{
//获取客户端的IP地址
string IP = Request.UserHostAddress;
//创建字符串变量
string dirResults = "";
//创建ProcessStartInfo对象表示启动进程时使用的一组值
ProcessStartInfo psi = new ProcessStartInfo();
//创建Process对象使您能够启动和停止本地系统进程
Process proc = new Process();
//设置要启动的应用程序或文档
psi.FileName = "nbtstat";
//设置不从Process.StandardInput流中读取输入
psi.RedirectStandardInput = false;
//设置要输出写入 Process.StandardOutput流
psi.RedirectStandardOutput = true;
//设置启动的应用程序中的一组命令参数
psi.Arguments = "-A " + IP;
//设置从可执行文件创建进程
psi.UseShellExecute = false;
//设置启动进程
proc = Process.Start(psi);
//获取StandardOutput输出流
dirResults = proc.StandardOutput.ReadToEnd();
//设置Process 组件无限期地等待关联进程退出
proc.WaitForExit();
//替换掉StandardOutput输出流中的"/r,/n,/t"
dirResults = dirResults.Replace("\r", "").Replace("\n", "").Replace("\t", "");
//设置正则表达式
Regex reg = new Regex("MAC[ ]{0,}Address[ ]{0,}=[ ]{0,}(?<key>((.)*?))MAC", RegexOptions.IgnoreCase | RegexOptions.Compiled);
//向获取的StandardOutput输出流添加"MAC"字符串
dirResults = dirResults + "MAC";
//获取Cookie
HttpCookie oldCookie = Request.Cookies["netCard"];
//获取正则表达式中的匹配项
Match mc = reg.Match(dirResults);
//获取网卡号去除掉“-”符合
string networkCard = mc.Groups["key"].Value.Replace("-", "");
//判断Cookie是否为空
if (oldCookie == null)
{
//判断是否符合正则表达式的要求
if (mc.Success)
{
//显示帐号
labName.Text = "您的帐号为:" + networkCard;
//显示密码
labPass.Text = "您的密码为:1234";
//创建Cookie对象
HttpCookie newCookie = new HttpCookie("netCard");
//设置Cookie的有效时间
newCookie.Expires = DateTime.MaxValue;
//添加Cookie中的值
newCookie.Values.Add("numberCard", networkCard);
//将Cookie添加到Cookie集合中
Response.Cookies.Add(newCookie);
}
else
{
RegisterStartupScript("", "<script>alert( '您没有联网!');</script>");
}
}
else
{
//获取Cookie中的网卡号
string numberCard = oldCookie.Values["numberCard"];
//判断Cookie中的网卡号是否和获取到的网卡号一致
if (numberCard.Trim() == networkCard.Trim())
{
RegisterStartupScript("", "<script>alert('很抱歉!您的计算机已领取过帐号。')</script>");
}
else
{
//判断是否符合正则表达式的要求
if (mc.Success)
{
//显示帐号
labName.Text = "您的帐号为:" + networkCard;
//显示密码
labPass.Text = "您的密码为:1234";
//修改Cookie中的值
oldCookie.Values.Set("numberCard", networkCard);
//将Cookie添加到Cookie集合中
Response.Cookies.Add(oldCookie);
}
else
{
RegisterStartupScript("", "<script>alert( '您没有联网!');</script>");
}
}
}
}
}
更多精彩内容其他人还在看

.NET Core源码解析配置文件及依赖注入

这篇文章我们设计了一些复杂的概念,因为要对ASP.NET Core的启动及运行原理、配置文件的加载过程进行分析,依赖注入,控制反转等概念的讲解等
收藏 0 赞 0 分享

.NET Corek中Git的常用命令及实战演练

这篇文章将通过故事的形式从Git的历史谈起,并讲述Git的强大之处。然后通过实战演练教你如何在Github以及码云上托管我们的代码并进行代码的版本控制
收藏 0 赞 0 分享

Asp.Net Core WebAPI使用Swagger时API隐藏和分组详解

这篇文章主要给大家介绍了关于Asp.Net Core WebAPI使用Swagger时API隐藏和分组的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Asp.Net Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

如何利用FluentMigrator实现数据库迁移

这篇文章主要给大家介绍了关于如何利用FluentMigrator实现数据库迁移的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

ASP.NET Core利用Jaeger实现分布式追踪详解

这篇文章主要给大家介绍了关于ASP.NET Core利用Jaeger实现分布式追踪的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

浅谈从ASP.NET Core2.2到3.0你可能会遇到这些问题

这篇文章主要介绍了ASP.NET Core2.2到3.0可能会遇到的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解.net core webapi 前后端开发分离后的配置和部署

这篇文章主要介绍了.net core webapi 前后端开发分离后的配置和部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁

这篇文章主要介绍了ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

.net 4.5部署到docker容器的完整步骤

这篇文章主要给大家介绍了关于.net 4.5部署到docker容器的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用.net4.5具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

.net core并发下线程安全问题详解

这篇文章主要给大家介绍了关于.net core并发下线程安全问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多