يقوم ASP بتنفيذ إنشاء رموز التحقق بدون مكونات بتنسيق GIF ويمكن للأصدقاء الذين يحتاجون إلى رموز التحقق من ASP الرجوع إليها. انسخ رمز الكود كما يلي:
<%
الخيار صريح ' عرض الإعلان
فئة Com_GifCode_Class
''''''''''''''''''''''''''''''''''''''
المؤلف: Layen [email protected] 84815733 (QQ)
' شكرًا: لاومي، لاومياو، NetRube
'2006-01-02
''''''''''''''''''''''''''''''''''''''
الضوضاء العامة، العد، العرض، الارتفاع، الزاوية، الإزاحة، الحدود
رسم بياني خاص ()، الهامش (3)
فئة فرعية خاصة_Initialize()
عشوائية
ضوضاء = 16 ' احتمال حدوث نقطة التداخل
العدد = 4 'عدد الأحرف
العرض = 80 'عرض الصورة
الارتفاع = 20 ارتفاع الصورة
الزاوية = 2 'تغيير عشوائي في الزاوية
الإزاحة = 20 'إزاحة التباين العشوائي
الحدود = 1 'حجم الحدود
نهاية الفرعية
إنشاء وظيفة عامة ()
كونست cCharSet = 123456789
خافت ط، س، ص
خافت vValidCode : vValidCode =
خافت vIndex
رسم بياني ReDim (العرض-1، الارتفاع-1)
لأني = 0 للعد - 1
vIndex = Int(Rnd * Len(cCharSet))
vValidCode = vValidCode + Mid(cCharSet, vIndex+1, 1)
SetDraw vIndex، أنا
التالي
إنشاء = vValidCode
وظيفة النهاية
Sub SetDot(pX, pY)
إذا كان pX * (Width-pX-1) >= 0 وpY * (Height-pY-1) >= 0 إذن
الرسم البياني (pX، pY) = 1
نهاية إذا
نهاية الفرعية
رسم المجموعة الفرعية العامة (pIndex، pNumber)
"بيانات الشخصية."
ديم دوت داتا(8)
DotData(0) = الصفيف(30، 15، 50، 1، 50، 100)
DotData(1) = الصفيف(1,34,30,1,71, 1, 100, 34, 1, 100, 93, 100, 100, 86)
DotData(2) = الصفيف(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
DotData(3) = الصفيف(100، 73، 6، 73، 75، 6، 75، 100)
DotData(4) = الصفيف(100، 1، 1، 1، 1، 50، 50، 35، 100، 55، 100، 80، 50، 100، 1، 95)
DotData(5) = الصفيف(100، 20، 70، 1، 20، 1، 1، 30، 1، 80، 30، 100، 70، 100، 100، 80، 100، 60، 70، 50، 30، 50) ، 1، 60)
DotData(6) = الصفيف(6, 26, 6, 6, 100, 6, 53, 100)
DotData(7) = الصفيف(100، 30، 100، 20، 70، 1، 30، 1، 1، 20، 1، 30، 100، 70، 100، 80، 70، 100، 30، 100، 1، 80) ، 1، 70، 100، 30)
DotData(8) = الصفيف(1, 80, 30, 100, 80, 100, 100, 70, 100, 20, 70, 1, 30, 1, 1, 20, 1, 40, 30, 50, 70, 50 ، 100، 40)
خافت vExtent : vExtent = العرض / العدد
الهامش (0) = الحدود + vExtent * (Rnd * الإزاحة) / 100 + الهامش (1)
الهامش (1) = vExtent * (pNumber + 1) - الحدود - vExtent * (Rnd * Offset) / 100
الهامش (2) = الحدود + الارتفاع * (الطريق * الإزاحة) / 100
الهامش (3) = الارتفاع - الحدود - الارتفاع * (الطريق * الإزاحة) / 100
خافت vStartX، vEndX، vStartY، vEndY
عرض خافت، ارتفاع، vDX، vDY، vDeltaT
خافت vAngle، vLength
vWidth = Int(Margin(1) - Margin(0))
vHeight = Int(الهامش(3) - الهامش(2))
"بدء الإحداثيات."
vStartX = Int((DotData(pIndex)(0)-1) * vWidth / 100)
vStartY = Int((DotData(pIndex)(1)-1) * vHeight / 100)
خافت ط، ي
لأن i = 1 إلى UBound(DotData(pIndex), 1)/2
إذا كانت DotData(pIndex)(2*i-2) <> 0 وDotData(pIndex)(2*i) <> 0 إذن
"إحداثيات نقطة النهاية."
vEndX = (DotData(pIndex)(2*i)-1) * vWidth / 100
vEndY = (DotData(pIndex)(2*i+1)-1) * vHeight / 100
"الفجوة الأفقية."
vDX = vEndX - vStartX
"الفجوة العمودية."
vDY = vEndY - vStartY
"زاوية الميل."
إذا كان vDX = 0 إذن
vAngle = Sgn(vDY) * 3.14/2
آخر
vAngle = Atn(vDY / vDX)
نهاية إذا
'المسافة بين إحداثيتين
إذا كان Sin (vAngle) = 0 إذن
الطول = vDX
آخر
vLength = vDY / Sin(vAngle)
نهاية إذا
'زاوية دوران عشوائية
vAngle = vAngle + (Rnd - 0.5) * 2 * الزاوية * 3.14 * 2 / 100
vDX = Int(Cos(vAngle) * vLength)
vDY = Int(Sin(vAngle) * vLength)
إذا كان Abs(vDX) > Abs(vDY) فإن vDeltaT = Abs(vDX) وإلا فإن vDeltaT = Abs(vDY)
لـ j = 1 إلى vDeltaT
هامش SetDot(0) + vStartX + j * vDX / vDeltaT، الهامش (2) + vStartY + j * vDY / vDeltaT
التالي
vStartX = vStartX + vDX
vStartY = vStartY + vDY
نهاية إذا
التالي
نهاية الفرعية
الإخراج الفرعي العام ()
الاستجابة.انتهاء الصلاحية = -9999
عملية Response.AddHeader، بدون ذاكرة تخزين مؤقت
Response.AddHeader التحكم في ذاكرة التخزين المؤقت، عدم وجود ذاكرة تخزين مؤقت
Response.ContentType = الصورة/gif
"نوع الملف."
Response.BinaryWrite ChrB(تصاعدي(G)) وChrB(تصاعدي(I)) وChrB(تصاعدي(F))
"معلومات الإصدار."
Response.BinaryWrite ChrB(تصاعدي(8)) وChrB(تصاعدي(9)) وChrB(تصاعدي(a))
"عرض الشاشة المنطقي."
Response.BinaryWrite ChrB(Width Mod 256) & ChrB ((العرض / 256) Mod 256)
"ارتفاع الشاشة المنطقي."
Response.BinaryWrite ChrB(Height Mod 256) & ChrB((الارتفاع / 256) Mod 256)
الاستجابة.BinaryWrite ChrB(128) وChrB(0) وChrB(0)
"قائمة الألوان العالمية."
الاستجابة.BinaryWrite ChrB(255) وChrB(255) وChrB(255)
الاستجابة.BinaryWrite ChrB(0) وChrB(85) وChrB(255)
"معرف الصورة
Response.BinaryWrite ChrB(تصاعدي (،))
الاستجابة.BinaryWrite ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0)
"عرض الصورة."
Response.BinaryWrite ChrB(Width Mod 256) & ChrB ((العرض / 256) Mod 256)
"ارتفاع الصورة
Response.BinaryWrite ChrB(Height Mod 256) & ChrB((الارتفاع / 256) Mod 256)
الاستجابة.BinaryWrite ChrB(0) وChrB(7) وChrB(255)
خافت x، y، i : i = 0
بالنسبة لـ y = 0 للارتفاع - 1
بالنسبة لـ x = 0 إلى العرض - 1
إذا Rnd < صاخبة / 100 ثم
Response.BinaryWrite ChrB(1-Graph(x, y))
آخر
إذا كان x * (x-Width) = 0 أو y * (y-Height) = 0 إذن
Response.BinaryWrite ChrB(Graph(x, y))
آخر
إذا كان الرسم البياني(x-1, y) = 1 أو الرسم البياني(x, y) أو الرسم البياني(x, y-1) = 1 إذن
الاستجابة.BinaryWrite ChrB(1)
آخر
الاستجابة.BinaryWrite ChrB(0)
نهاية إذا
نهاية إذا
نهاية إذا
إذا (y * العرض + x + 1) Mod 126 = 0 إذن
الاستجابة.BinaryWrite ChrB(128)
ط = ط + 1
نهاية إذا
إذا (y * العرض + x + i + 1) Mod 255 = 0 إذن
إذا كان (العرض*الارتفاع - y * العرض - x - 1) > 255 إذن
الاستجابة.BinaryWrite ChrB(255)
آخر
Response.BinaryWrite ChrB(العرض * الارتفاع Mod 255)
نهاية إذا
نهاية إذا
التالي
التالي
الاستجابة.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59)
نهاية الفرعية
نهاية الفصل
رمز mCode الخافت
قم بتعيين mCode = New Com_GifCode_Class
جلسة (GetCode) = mCode.Create()
mCode.Output()
تعيين mCode = لا شيء
%>