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


    这里只做简单演示过程,请根据您的实际情况作适当修改!

    另外我的博客只做自己参考查询方便用,请各位大神不要没事喷我,知道您的技术高,我是新手正在努力学习当中,谢谢!!!!

    下面开始吧:

    首先写一个简单的前台代码:

    <%@ 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>");
    
                        }
                    }
                }          
    
        }
    }
  • 相关阅读:
    Pyinstaller打包多个py文件
    Oracle 数据库基础教程之用户管理
    Navicat连接Oracle报错ORA-28547
    Oracle 激活用户及重置密码
    coding公钥配置教程
    关于联想笔记本小新自动关机解决方法
    PIP镜像像源
    Bugku——Web——web基础$_POST
    Bugku——Web——web基础$_GET
    Bugku——Web——计算器
  • 原文地址:https://www.cnblogs.com/52net/p/2529346.html
Copyright © 2020-2023  润新知