欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ASP.Net 前臺登陸注冊和登陸人次的統計簡單實現

程序员文章站 2022-05-24 09:10:41
...

C#学习笔记(一):ASP.Net中基本对象和数据库操作

通过学习ASP.Net实现前一篇文章中程序的“前台”

对ASP.Net中几个基本对象使用的小结(即学即更)

ASP.Net 几个基本对象学习笔记

Response:在客户端发送的请求,服务端用一个响应对象来处理该请求,并将响应数据
发送到客户端.
结束之后销毁该对象;
最常用的方法是重定向到一个url
Response.Redirect(“url”);

Request: 获取该页的System.Web.HttpRequest对象
客户端向服务器发送请求。

目前使用到了 Request.Cookies

Session:对话,默认生命周期是20分钟
这个印象比较深,可以实现页级的数据传输
在一级页面创建对话,通过Global对Session_Start()进行设置,
在二级页面接收数据.
生命周期可以对Session.Timeout赋值来设置默认单位为分钟
Session有一个特点是可以储存任意类型的数据,需要使用时需要强制转换
对话的销毁 Session.Abandon();销毁一个对话

Application:
用来保存公共信息,比如网站登录人次统计

两个重要的方法:(1)Application.lock():锁定Web应用程序状态促进同步访问
(2) Application.Unlock():取消对Web应用程序状态的锁定以促进同步访问
统计人次的例子中需要结合新会话启动的方法结合使用,考虑到Application下方法返回类型
需要强制类型转换.

Session和Application 都涉及到Web窗体程序的Global事件
参看Global的事件有哪些,用到再现学
推荐这篇文章:
还有这篇,差不多吧都

  • 小结cookies的基本用法:

  • 一、创建Cookies
    HttpCookie cookie = new HttpCookie(“Login”);
    //生成名为 cookie 的HTTPCookie 对象其主键为Login,
    //也就是说我们之后要用Login作为索引来进行操作
    cookie.Values.Add(“Loginname”,string )
    //添加你需要的第一个子键,这里例子是登陆名
    cookie.Values.Add(“Loginpwd”,string )
    //第二个子键,更多的话可以按这个格式添加
    //如果只有一个子键则调用cookie.Value.Add()方法
    //string 在这个重载方法中是指cookie子键的值,可类比之前
    //数据库知识,子键看做字段,值概念一样.
    cookie.Expires = DateTime.Now.AddHours(2);
    //这里是设置cookies生命周期,在这里设置为事件发生算起保留2个小时
    //具体设置多少根据具体需求,DateTime.Now提供了多种方法供选择,
    //此外还有不同的设置时间的方法,移步其他博主博客。
    Response.Cookies.Add(cookie)
    //提交Cookies,按Response对象的基本作用,这里是客户端响应服务器请求
    //数据传到浏览器在本地写下Cookies文件.
    一般地,创建一个Cookies,我们创建一些子键并赋值,来记录数据,同时设
    置cookies的生命周期,最后通过response方法提交数据

  • 二.销毁Cookies:
    在这里我并不需要cookies来帮助我们记住一些信息,所以我们要做的是
    事件结束后cookies立即销毁,
    Httpcookie cookie = Request.Cookies[“AutoLogin”];
    //客户端向服务器发送请求查找[“AutoLogin”]为索引的Cookies
    if(cookie!=null)//存在的话我们将生命周期设为-1,也就是立即销毁,并更新
    cookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(cookie);//更新cookie

  • 三.使用cookies
    当我们需要使用cookies中的数据来实现“自动登录”功能的时候
    HttpCookie cookie = Request.Cookies[“AutoLogin”]
    if(!cookie=null)
    {
    //将你所需要的数据从cookie的子键中拿出来
    //例如: this.loginname.Text=Cookie[“Loginname”].ToString();
    }

数据库的链接访问实现登陆注册和登录人次统计等功能.

  • 对上一次Funsql增加的方法:便于实现注册时检查用户名是否存在
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySql.Data.MySqlClient;
using System.Data;

namespace WebApplication1
{
    public class Funsql
    {
        //查询
        public DataTable ExecuteQuery(string sqlstr)
        {
            //这个就是命令行执行
            string url = "server = localhost;port=3306;database = student;user=root;password=159753abcDEF";
            MySqlCommand cmd;
            //这个是用来建立数据库连接的类    
            MySqlConnection con;
            //包含sql语句执行的结果,并提供一个方法从结果中阅读一行
            MySqlDataAdapter msda;
            //建立虚拟表
            DataTable dt = new DataTable();
            //上面两个配合使用,先建立连接后通过执行sqlstr语句
            //得到msda数据,然后这个数据填充在虚拟表dt中,最终返回数据
            con = new MySqlConnection(url);
            con.Open();//接通数据库
            cmd = new MySqlCommand(sqlstr, con);//执行查询语句,sqlstr从点击中来
            cmd.CommandType = CommandType.Text;//用文本形式解释命令行字符串;
            msda = new MySqlDataAdapter(cmd);//SELECT命令作为数据更新参数
            msda.Fill(dt);
            con.Close();//关闭链接
            /**/
            return dt;
        }
        //增删改
        public int ExecuteUpdate(string sqlstr)
        {

            string url = "server = localhost;port=3306;database = student;user=root;password=159753abcDEF";



            MySqlConnection con = new MySqlConnection(url);
            con.Open();//接通数据库
            MySqlCommand cmd = new MySqlCommand(sqlstr, con);//cmd命令在这里得到相应命令
                                                             // cmd.CommandType = CommandType.Text;//用文本形式解释命令行字符串;
            int exeresult = 0;
            exeresult = cmd.ExecuteNonQuery();//直接对数据库中数据动手

            return exeresult;
            //返回的是处理数据个数
        }

  
        //注册查找用户名是否存在于 表中
        public int ExecuteCheck(string sever, string port ,string database,string user,string pwd,string sqlcheck,string srhtab)
        {
            string url = "server = "+sever+";port ="+port+";database ="+database+";user ="+user+"; password ="+pwd+";";
            MySqlConnection con = new MySqlConnection(url);
            con.Open();
            MySqlCommand cmd = new MySqlCommand(sqlcheck, con);
            MySqlDataAdapter check = new MySqlDataAdapter(cmd);
            DataSet checkset = new DataSet();
            int n = check.Fill(checkset, srhtab);
            con.Close();
            return n;//返回的值不为零说明存在和查找条件相符的数据
        }
        
        

    }
}
  • 注冊
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using MySql.Data.MySqlClient;
using System.Data;
namespace WebApplication1
{
    public partial class First : System.Web.UI.Page
    {
 
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnlogin_Click(object sender, EventArgs e)
        {
            string id = this.txtuid.Text; string pwd = this.txtpwd.Text;
            string repwd = this.txtrpwd.Text;
            string sqlin= "insert into student.user(userid,userpwd) values ('" + id + "','" + pwd + "');";
            string selcheck = "select userid from student.user where userid='" +  id + "';";//用来检查用户名是否存在
            string url = "server = localhost;port=3306;database = student;user=root;password=159753abcDEF";
            Funsql Dog = new Funsql();
 
                
                 
                    MySqlConnection con = new MySqlConnection(url);
                    con.Open();
                    MySqlCommand cmd = new MySqlCommand(selcheck, con);
                    MySqlDataAdapter check = new MySqlDataAdapter(cmd);
                    DataSet setcheck = new DataSet();
                    int n = check.Fill(setcheck, "user");
            if (n != 0)//找到相同的用户名
            {
                this.txtuid.Text = "";
                Response.Write("用户名已被使用");
            }
            else
            {
                Dog.ExecuteUpdate(sqlin);//将用户信息保存在数据库
                                         //跳转进入登陆页面
                con.Close();//断开连接了嗷
                Thread.Sleep(3000);//等待3秒
                Response.Redirect("Login.aspx");
                
            }

        }
        //取消的话返回登陆界面
        protected void brncl_Click(object sender, EventArgs e)
        {
            Response.Redirect("Login.aspx");
        }
    }
}
  • 登陸
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;
using System.Data;

namespace WebApplication1
{
    public partial class Login : System.Web.UI.Page
    {
        //为了解决密码不能被COOKIE赋值,将登陆实际需要的
        protected void Page_Load(object sender, EventArgs e)
        {
               //判断是否是首次进入页面,然后获取cookie 实现自动登陆
            if(!IsPostBack)
            {
                //请求获取索引为自动登录COOKIE中的信息
                HttpCookie cookie = Request.Cookies["AutoLogin"];
                if (cookie != null)
                {
                    this.loginuid.Text = cookie["Loginname"].ToString();
                    this.loginpwd.Text = cookie["Loginpwd"].ToString();
                   //这种赋值是不行的,因为password型或许没有set方法
                }
            }
        }
        
        protected void Button1_Click(object sender, EventArgs e)
        {
             
            
            string userid = this.loginuid.Text;
            string userpwd = this.loginpwd.Text;
            string sqlcheck = "Select * from student.user where userid='" + userid + "' and userpwd='" + userpwd + "';";
            string url = "server = localhost;port=3306;database = student;user=root;password=159753abcDEF";
            MySqlConnection con = new MySqlConnection(url);
            con.Open();
            MySqlCommand cmd = new MySqlCommand(sqlcheck,con);
            MySqlDataAdapter srh = new MySqlDataAdapter(cmd);
            DataSet srhcheck = new DataSet();
            int n = srh.Fill(srhcheck, "user");
            if(n!=0)
            {
                //登陆成功 
                
                this.lab2.Text = "登陆成功辣!正在跳转...";
                //
                //利用Session将用户信息发送
                Session["User"] =userid;//创建了对话
                Response.Redirect("Main.aspx");         
            }
            else
            {
                //登陆失败
                this.lab2.Text = "用户名或密码错误,请重试";
                this.loginuid.Text = "";
                this.loginpwd.Text = "";
            }
            
        }
        //注册页面跳转
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            Response.Redirect("First.aspx");
        }

        protected   void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            if(CheckBox1.Checked)
            {
                //写入cookies 在两小时内会有效
                //利用Cookie请求浏览器保存用户信息
                HttpCookie cookie = new HttpCookie("AutoLogin");
                cookie.Values.Add("Loginname", loginuid.Text);
                cookie.Values.Add("Loginpwd", loginpwd.Text);
                cookie.Expires = DateTime.Now.AddHours(2);
                Response.Cookies.Add(cookie);
            }
            else//如果不记住的话cookie立即销毁
            {
                //Request是向服务器请求索引COOKIS
                HttpCookie cookie = Request.Cookies["AutoLogin"];
                //如果找到了
                if(cookie!=null)
                {
                    cookie.Expires = DateTime.Now.AddDays(-1);//立即销毁
                    Response.Cookies.Add(cookie);//实际上重新修改了信息

                }
            }
        }
    }
}
  • Global:關於Session設置和Application統計網站 人次
void Session_Start(object sender, EventArgs e)
        {
            //新会话的启动
            Session.Timeout = 1;//生命周期设置为1分钟        
            Application.Lock();
            Application["count"] = (int)Application["count"] + 1;//新会话启动后计数
            Application.UnLock();
            
        }

接著做吧,主功能挺簡單。接著去學習網站美化吧。嚶嚶嚶