综合应用下载图片(一)
2010-11-29 18:48
295 查看
登录页面Login.aspx:
A:前台布局代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="ASP.Net中级.Login" %>
<!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>
<table>
<tr>
<td>
<asp:Label ID="UserNameLab" AssociatedControlID="UserName" runat="server" Text="Label">用户名:</asp:Label>
</td>
<td>
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="PasswordLab" AssociatedControlID="Password" runat="server" Text="Label">密码:</asp:Label>
</td>
<td>
<asp:TextBox ID="Password" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td>
<img id="img1" alt="CheckCode" src="CheckCode.ashx" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<a href ="#" onclick="img1.src='CheckCode.ashx?aa='+Math.random()">
看不清楚,点这里重新获取验证码</a>
</td>
</tr>
<tr>
<td>
<asp:Label ID="CheckCodeLab" AssociatedControlID="CheckCode" runat="server" Text="Label">验证码:</asp:Label>
</td>
<td>
<asp:TextBox ID="CheckCode" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="Button1" runat="server" Text="登录" OnClick="Button1_Click" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Label ID="ErrorMsgLab" runat="server" BackColor="Red" Visible="False"></asp:Label>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
B:后台处理代码
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ASP.Net中级.DAL.DownLoadPicTableAdapters;
namespace ASP.Net中级
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
T_UsersTableAdapter adapter = new T_UsersTableAdapter();
var data = adapter.GetDataByUserName(UserName.Text);
if (data.Count <= 0)
{
ErrorMsgLab.Text = "用户名不存在";
ErrorMsgLab.Visible = true;
}
else
{
var user = data.Single();// 返回唯一一条数据,如果数据为0或者多条,则抛出异常,防程序错误于未然。
if (!user.IsLastErrorTimeNull() && !user.IsErrorTimesNull())
{
double span = (DateTime.Now - user.LastErrorTime).TotalMinutes;//计算当前时间和上次错误时间之间的总分数。
if (user.ErrorTimes > 5 && span <= 30)
{
ErrorMsgLab.Text = "错误次数过多,您的帐号被冻结30分钟";
ErrorMsgLab.Visible = true;
return;
}
}
string code = Convert.ToString(Session["code"]);
if (user.Password == Password.Text)
{
if (code == CheckCode.Text)
{
Session["是否登录"] = true;
Session["登录用户Id"] = user.Id;
adapter.ResetErrorTimesById(user .Id);
Response.Redirect("DownLoadPic.htm");//将用户重定向到下载页面
}
else
{
ErrorMsgLab.Text = "验证码错误";
ErrorMsgLab.Visible = true;
}
}
else
{
adapter.IncErrorTimesById(user.Id);//注意数据库值为空的处理,使用IsNULL()函数。
ErrorMsgLab.Text = "密码错误!";//增加防暴力破解,重复错误5次,就锁定账户半个小时(错误次数和上次错误的时间)。
ErrorMsgLab.Visible = true;
}
}
}
}
}
A:前台布局代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="ASP.Net中级.Login" %>
<!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>
<table>
<tr>
<td>
<asp:Label ID="UserNameLab" AssociatedControlID="UserName" runat="server" Text="Label">用户名:</asp:Label>
</td>
<td>
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="PasswordLab" AssociatedControlID="Password" runat="server" Text="Label">密码:</asp:Label>
</td>
<td>
<asp:TextBox ID="Password" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td>
<img id="img1" alt="CheckCode" src="CheckCode.ashx" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<a href ="#" onclick="img1.src='CheckCode.ashx?aa='+Math.random()">
看不清楚,点这里重新获取验证码</a>
</td>
</tr>
<tr>
<td>
<asp:Label ID="CheckCodeLab" AssociatedControlID="CheckCode" runat="server" Text="Label">验证码:</asp:Label>
</td>
<td>
<asp:TextBox ID="CheckCode" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="Button1" runat="server" Text="登录" OnClick="Button1_Click" />
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Label ID="ErrorMsgLab" runat="server" BackColor="Red" Visible="False"></asp:Label>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
B:后台处理代码
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ASP.Net中级.DAL.DownLoadPicTableAdapters;
namespace ASP.Net中级
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
T_UsersTableAdapter adapter = new T_UsersTableAdapter();
var data = adapter.GetDataByUserName(UserName.Text);
if (data.Count <= 0)
{
ErrorMsgLab.Text = "用户名不存在";
ErrorMsgLab.Visible = true;
}
else
{
var user = data.Single();// 返回唯一一条数据,如果数据为0或者多条,则抛出异常,防程序错误于未然。
if (!user.IsLastErrorTimeNull() && !user.IsErrorTimesNull())
{
double span = (DateTime.Now - user.LastErrorTime).TotalMinutes;//计算当前时间和上次错误时间之间的总分数。
if (user.ErrorTimes > 5 && span <= 30)
{
ErrorMsgLab.Text = "错误次数过多,您的帐号被冻结30分钟";
ErrorMsgLab.Visible = true;
return;
}
}
string code = Convert.ToString(Session["code"]);
if (user.Password == Password.Text)
{
if (code == CheckCode.Text)
{
Session["是否登录"] = true;
Session["登录用户Id"] = user.Id;
adapter.ResetErrorTimesById(user .Id);
Response.Redirect("DownLoadPic.htm");//将用户重定向到下载页面
}
else
{
ErrorMsgLab.Text = "验证码错误";
ErrorMsgLab.Visible = true;
}
}
else
{
adapter.IncErrorTimesById(user.Id);//注意数据库值为空的处理,使用IsNULL()函数。
ErrorMsgLab.Text = "密码错误!";//增加防暴力破解,重复错误5次,就锁定账户半个小时(错误次数和上次错误的时间)。
ErrorMsgLab.Visible = true;
}
}
}
}
}
相关文章推荐
- 综合应用下载图片(二)
- 综合应用下载图片(三)
- 综合应用下载图片(四)
- WP8__从windowsphone app store 中根据app id获取应用的相关信息(下载网址及图片id等)
- xmpp之防止应用升级时下载的文件(语音/图片)失效
- J2ME从服务器端下载图片,在RMS中存储,然后在读取显示(非原创代码,整合应用而已)
- fileuploadJs+JcropJs+php综合小应用 实现图片拖拽上传与裁剪功能的demo
- 提供WebGIS网页应用到图片下载功能的方法
- java-下载图片(正则表达式、HttpURLConnection、流、socket综合运用)
- 韩顺平zend+framework sendmail 视频教程 笔记心得 源代码下载 第19讲+综合应用-购物车5
- 下载公众号文章中的图片,php开发公众号应用
- android--AsyncTask的应用(1)网络上图片的下载
- response常见应用(中文数据乱码解决,中文文件下载,随机图片等)
- android7.0 照相和图片剪裁 以及 应用内部apk更新下载安装适配
- 无须下载即可在线查看巨型图片的web应用 - HUGEpic
- 新应用知识整理-图片的下载、内存软引用与本地缓存的实现
- 完成一个应用,用户可以根据自己输入的地址下载网络上的图片和网页信息
- 无须下载即可在线查看巨型图片的web应用 - HUGEpic
- python批量下载色影无忌和蜂鸟的图片 爬虫小应用
- 怎么制作生成苹果手机app应用的下载二维码图片