ASP.NET ashx 페이지 새로 고침 없 이 인증 코드 생 성
효과 그림:
구현 방식:
프론트 데스크:
<div>
<span>Identifying Code:</span>
<asp:TextBox ID="txtValidationCode" runat="server" Width="130px" MaxLength="4"></asp:TextBox>
<img id="imgYZ" class="code" style=" height:23px; width:65px;"
src="Img.ashx" onclick="this.src=this.src+'?'"/ />
<img src="../images/btn_change.gif" title="Change" class="btn_change" Style="cursor: hand"
onclick="ImgChange()" />
</div>
JS:
<script language="javascript" type="text/javascript">
function ImgChange()
{
var img=document.getElementById("imgYZ");
img.click();
}
</script>
ashx:
using System;
using System.Web;
using CLAIMS.BLL;
using System.Data;
using System.Configuration;
using System.Web.SessionState;
using System.Drawing;
public class Img : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "image/Jpeg";
string s_random = "";
System.IO.MemoryStream ms = new System.IO.MemoryStream();
s_random = RndNum(4);
context.Session["random"] = s_random;
s_random = s_random.Substring(0, 1) + " " + s_random.Substring(1, 1) + " " + s_random.Substring(2, 1) + " " + s_random.Substring(3, 1);
CreateImage(s_random, ref ms);
context.Response.ClearContent();
context.Response.BinaryWrite(ms.ToArray());
context.Response.Flush();
context.Response.End();
}
private void CreateImage(string checkCode,ref System.IO.MemoryStream ms)
{
int iwidth = (int)(checkCode.Length * 18);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 45);
Graphics g = Graphics.FromImage(image);
g.Clear(Color.White);
//
Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
//
//string[] font = {"Verdana","Microsoft Sans Serif","Comic Sans MS","Arial"," "};
Random rand = new Random();
//
for (int i = 0; i < 50; i++)
{
int x = rand.Next(image.Width);
int y = rand.Next(image.Height);
g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1);
}
//
for (int i = 0; i < checkCode.Length; i++)
{
int cindex = rand.Next(7);
int findex = rand.Next(5);
Font font = new System.Drawing.Font("Arial", 24, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
Brush b = new System.Drawing.SolidBrush(c[cindex]);
int ii = 4;
if ((i + 1) % 2 == 0)
{
ii = 2;
}
g.DrawString(checkCode.Substring(i, 1), font, b, 3 + (i * 12), ii);
}
//
g.DrawRectangle(new Pen(Color.Black, 0), 0, 0, image.Width - 1, image.Height - 1);
//
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
image.Dispose();
}
public static String RndNum(int VcodeNum)
{
String Vchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
String[] VcArray = Vchar.Split(',');
String VNum = "";
Random random = new Random();
for (int i = 1; i <= VcodeNum; i++)
{
int iNum = 0;
while ((iNum = Convert.ToInt32(VcArray.Length * random.NextDouble())) == VcArray.Length)
{
iNum = Convert.ToInt32(VcArray.Length * random.NextDouble());
}
VNum += VcArray[iNum];
}
return VNum;
}
public bool IsReusable {
get {
return false;
}
}
}
비고:onclick="this.src=this.src+'?'"
왜 하나 더 넣 어야 되 는 지 모 르 겠 어 요.번,그래서 인터넷 에 검색 해서 선배 님 들 의 견 해 를 참고 하 세 요.
[이것 은 현재 그림 링크 를 나타 내 는 것 으로 현재 링크 값 을 바탕 으로 물음표 가 추가 되 었 습 니 다.
예 를 들 어 현재 src="check.aspx"를 클릭 하면"check.aspx?"가 됩 니 다.계속 누 르 면'check.aspx???'
이 물음 표 는 실제 적 인 의미 가 없다.유일한 역할 은 IE 에 이미지 링크 에 변화 가 생 겼 고 그림 을 새로 고 쳐 야 한 다 는 것 이다.]
[GET:클 라 이언 트 가 서버 에서 문 서 를 읽 으 려 면 GET 방법 을 사용 합 니 다.GET 방법 은 서버 에 URL 포 지 셔 닝 자원 을 메시지 에 응답 하 는 데이터 부분 에 두 고 클 라 이언 트 에 게 돌려 달라 고 요구 합 니 다.GET 방법 을 사용 할 때 요청 인자 와 대응 하 는 값 을 URL 뒤에 추가 하고 물음표("?")를 사용 합 니 다.URL 의 끝 과 요청 매개 변수의 시작 을 나타 내 며 전달 매개 변수의 길이 가 제한 되 어 있 습 니 다.예 를 들 어,/index.jsp?id=100&op=bind.
POST:클 라 이언 트 가 서버 에 정 보 를 많이 제공 할 때 POST 방법 을 사용 할 수 있 습 니 다.POST 방법 은 요청 파 라미 터 를 HTTP 요청 데이터 에 봉 하여 이름/값 으로 나타 나 대량의 데 이 터 를 전송 할 수 있 습 니 다.
this.src=this.src+'?'this.src 의 원 가 를 더 하 는 것 입 니까?서버 에 새로운 GET 방법 을 보 내 새로운 인증 코드 를 가 져 올 수 있 습 니 다.]
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Asp.net+jquery+.ashx 파일 의 페이지 별 사고방식 실현오늘.자바 형 들 이 쓴 페이지 에서 데이터 목록 을 직접 요청 하 는 프로그램 코드 를 보 았 습 니 다.이것 은 클 라 이언 트 연락 처 를 선택 한 후 새로 고침 되 지 않 은 팝 업 div 로 다른 연락처 목...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.