asp.net 验证码(一)Session
1.模板页 //创建网页模板 输入验证码文本框 并且将文本框中的内容发送的后端验证中去
<p>请输入验证码:<input type="text" name="checkcode" /><img src="/createcheckcode.ashx"/></p> //输入名字及和地址
2.服务端
引用命名空间 并且将响应的类型修改成图片形式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;
using System.Web.SessionState;
namespace WebApplication3
{
/// <summary>
/// createcheckcode 的摘要说明
/// </summary>
public class createcheckcode : IHttpHandler, IRequiresSessionState //实现ashx
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/JPEG";//相应的类型格式
Bitmap map = new Bitmap(80,30);//相应的宽高
Graphics g = Graphics.FromImage(map);//基于这个图片拿到这个绘图对象
g.FillRectangle(Brushes.White, 1, 1, 78, 28);//画笔颜色为白色、并且从1,1点开始,后面是宽度
char[] code = new char[26];//定义26个字母并且将字母存储在code中
for (int i = 0; i < 26; i++)
{
code[i] = (char)('a' + i);//26个字母开始循环
}
string checkdode = ""; //定义随机数
Random r = new Random(); //创建随机函数
for (int i = 0; i < 4; i++)
{
checkdode = checkdode + code[r.Next(0, 26)]; //循环将字母写入
}
context.Session["checkdode"] = checkdode;//存储一份
g.DrawString(checkdode, new Font("黑体", 20), Brushes.Black, new PointF(2, 2));//将随机后随机绘画在图像之中
map.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);//响应回去的图片类型
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace WebApplication3
{
/// <summary>
/// dl 的摘要说明
/// </summary>
public class dl : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
string name = context.Request["name"];
string password = context.Request["password"];
string c = context.Request["checkdode"];//从请求接收数据
string html = File.ReadAllText(context.Server.MapPath("/dl.html"));
if (string.IsNullOrEmpty(name))
{
context.Response.Write(html);
}
else
{
if (c == context.Session["checkdode"].ToString())//将请求的数据与存储的数据进行对比
{
if (name == "zhangsan" && password == "lisi")
{
string sql = "select * from cj";
DataTable dt = SqlHelper.ExecuteDataTable(sql, null);
for (int i = 0; i < dt.Rows.Count; i++)
{
context.Response.Write(dt.Rows[i]);
}
}
else
{
html = html.Replace("{meggtuon}", "密码错误");
context.Response.Write(html);
}
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
3.静态模板
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form action="dl.ashx" method="post">
<p> 请输入账号:<input type="text" name="name" /></p>
<p> 请输入密码:<input type="text" name="password" /></p>
<p>请输入验证码:<input type="text" name="checkdode" /><img src="/createcheckcode.ashx"/></p>
<p><input type="submit" name="dl" value="登录"/> {meggtuon}
</p>
</form>
</body>
</html>
asp.net 验证码(一)Session的更多相关文章
- ASP.net 验证码(C#) MVC
ASP.net 验证码(C#) MVC http://blog.163.com/xu_shuhao/blog/static/5257748720101022697309/ 网站添加验证码,主要为防止机 ...
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
MVC的验证(模型注解和非侵入式脚本的结合使用) @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...
- ASP.NET中的Session怎么正确使用
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...
- ASP.NET里的Session详细解释
Session模型简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器建立连 ...
- ASP.NET中的Session怎么正确使用[转]
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...
- PHP+jQuery 注册模块的改进之一:验证码存入SESSION
/* ******* Date:2014-09-28 ******* Author:小dee ******* Blog:http://www.cnblogs.com/dee0912/*/ 对上一篇博文 ...
- ASP.NET会话(Session)保存模式--终于知道session为什么丢失了
[原创]ASP.NET会话(Session)保存模式 作者:寒羽枫(cityhunter172) 大家好,已有四个多月没写东东啦.今日抽空就说一下 Session 在 .Net v1.0/v1.1 中 ...
- 【转】asp.net中利用session对象传递、共享数据[session用法]
来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值 ...
- 【译文】漫谈ASP.NET中的Session
最近这两天被一个Web Farm环境下的Session处理问题虐得很痛苦,网上到处找解决方案,在无意中翻看到这篇文章,感觉很不错,顺手查了一下,貌似没有现成的译文,于是一咬牙一跺脚把这篇文章翻译出来了 ...
随机推荐
- Docker(一)
Docker是一个能够把开发的应用程序自动部署到容器的开源引擎,它基于Apache2.0开源授权协议发行,以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和管理员设计的, ...
- .NET 程序集Assembly使用
概述 一直以来,我们都在用C#编写程序,编写程序的时候,我们用到继承.多态.接口以及泛型,我们也都明白子类可以继承抽象类,并能够重写父类的抽象方法,可是大家是否想过,如下几个问题: 1.凡树必有根和叶 ...
- python3 与 pip3 安装与使用
1. yum -y install openssl* (pip依赖ssl环境) 2.编译安装python3 下载地址:https://www.python.org/ftp/python/ .tgz c ...
- mysql命令行修改字符编码
1.修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2.创建数据库时,指定数据库的字符编码 mysql> create ...
- UWP 判断windows mobile是使用的实体键还是虚拟按键
最近在写启动屏幕,发现虚拟按钮会挡住,启动屏幕的最下面的元素,大概有50 px.可是有什么办法知道手机是用的实体键还是虚拟按键吗? 如下图.可以看到红色的部分显示了一点点.代码里设置的是60px. 在 ...
- 详解Eclipse断点
原文链接:http://www.blogjava.net/jiangshachina/archive/2011/11/20/364367.html 大家肯定都用过Eclipse的调试的功能,在调试的过 ...
- 【手把手教你全文检索】Apache Lucene初探
PS: 苦学一周全文检索,由原来的搜索小白,到初次涉猎,感觉每门技术都博大精深,其中精髓亦是不可一日而语.那小博猪就简单介绍一下这一周的学习历程,仅供各位程序猿们参考,这其中不涉及任何私密话题,因此也 ...
- android应用程序第一次启动时显示引导界面
市面上好多优秀的应用(举例新浪微博.UC浏览器)都采用了欢迎页面与使用向导的方式给用户带来了良好的用户体验. 一般来说用户第一次安装应用或者安装了新版本后第一次进入应用都会显示成 欢迎页面-使用向导- ...
- SQL Server 2012 数据库数据导出为脚本
转自:http://blog.csdn.net/ituff/article/details/8265822 将高版本的的SQL Server数据库移到低版本的SQL Server是一件十分蛋疼的事,最 ...
- Jedis 使用范例
public class RedisUtil { Logger logger = LoggerFactory.getLogger(RedisUtil.class); private JedisPool ...