ASP implémente la génération sans composant de codes de vérification au format GIF. Les amis qui ont besoin de codes de vérification asp peuvent s'y référer. Copiez le code comme suit :
<%
Option Explicite ' Afficher la déclaration
Classe Com_GifCode_Class
''''''''''''''''''''''''''''''''''''
' Auteur : Layen [email protected] 84815733(QQ)
' Merci : Laomi, Laomiao, NetRube
'2006-01-02
''''''''''''''''''''''''''''''''''''
Public bruyant, nombre, largeur, hauteur, angle, décalage, bordure
Graphique privé(), Marge(3)
Sous-classe privée_Initialize()
Randomiser
Bruyant = 16 ' Probabilité d'apparition de points d'interférence
Count = 4 'Nombre de caractères
Largeur = 80' de largeur d'image
Hauteur = 20' de hauteur de l'image
Angle = 2 ' Changement aléatoire d'angle
Décalage = 20 ' Décalage variation aléatoire
Bordure = 1 'Taille de la bordure
Fin du sous-marin
Fonction publique Créer()
Const cCharSet = 123456789
Dim je, x, y
Dim vValidCode : vValidCode =
Dim vIndex
Graphique ReDim (largeur-1, hauteur-1)
Pour i = 0 Pour compter - 1
vIndex = Int (Rnd * Len (cCharSet))
vValidCode = vValidCode + Mid(cCharSet, vIndex+1, 1)
SetDraw vIndex, je
Suivant
Créer = vValidCode
Fonction de fin
Sous-ensembleDot(pX, pY)
Si pX * (Largeur-pX-1) >= 0 Et pY * (Hauteur-pY-1) >= 0 Alors
Graphique(pX, pY) = 1
Fin si
Fin du sous-marin
Sous-ensemble publicDraw (pIndex, pNumber)
'Données sur les personnages
Dim DotData(8)
DotData(0) = Tableau(30, 15, 50, 1, 50, 100)
DotData(1) = Tableau(1, 34, 30, 1, 71, 1, 100, 34, 1, 100, 93, 100, 100, 86)
DotData(2) = Tableau(1, 1, 100, 1, 42, 42, 100, 70, 50, 100, 1, 70)
DotData(3) = Tableau(100, 73, 6, 73, 75, 6, 75, 100)
DotData(4) = Tableau(100, 1, 1, 1, 1, 50, 50, 35, 100, 55, 100, 80, 50, 100, 1, 95)
DotData(5) = Tableau(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) = Tableau(6, 26, 6, 6, 100, 6, 53, 100)
DotData(7) = Tableau(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) = Tableau(1, 80, 30, 100, 80, 100, 100, 70, 100, 20, 70, 1, 30, 1, 1, 20, 1, 40, 30, 50, 70, 50 , 100, 40)
Dim vExtent : vExtent = Largeur / Nombre
Marge (0) = Bordure + vExtent * (Rnd * Décalage) / 100 + Marge (1)
Marge(1) = vExtent * (pNumber + 1) - Bordure - vExtent * (Rnd * Offset) / 100
Marge (2) = Bordure + Hauteur * (Rnd * Décalage) / 100
Marge(3) = Hauteur - Bordure - Hauteur * (Rnd * Décalage) / 100
Dim vStartX, vEndX, vStartY, vEndY
Dim vLargeur, vHauteur, vDX, vDY, vDeltaT
Dim vAngle, vLongueur
vLargeur = Int (Marge (1) - Marge (0))
vHauteur = Int (Marge (3) - Marge (2))
'Coordonnées de départ
vDébutX = Int((DotData(pIndex)(0)-1) * vLargeur / 100)
vDébutY = Int((DotData(pIndex)(1)-1) * vHauteur / 100)
Dim je,j
Pour i = 1 Vers UBound(DotData(pIndex), 1)/2
Si DotData(pIndex)(2*i-2) <> 0 Et DotData(pIndex)(2*i) <> 0 Alors
'Coordonnées du point final
vFinX = (DotData(pIndex)(2*i)-1) * vLargeur / 100
vEndY = (DotData(pIndex)(2*i+1)-1) * vHauteur / 100
'Écart horizontal
vDX = vFinX - vDébutX
'Écart vertical
vDY = vFinY - vDébutY
'Angle d'inclinaison
Si vDX = 0 Alors
vAngle = Sgn(vDY) * 3,14/2
Autre
vAngle = Atn(vDY / vDX)
Fin si
'Distance entre deux coordonnées
Si Sin(vAngle) = 0 Alors
vLongueur = vDX
Autre
vLongueur = vDY / Sin(vAngle)
Fin si
' Angle de rotation aléatoire
vAngle = vAngle + (Rnd - 0,5) * 2 * Angle * 3,14 * 2/100
vDX = Int(Cos(vAngle) * vLongueur)
vDY = Int (Péché (vAngle) * vLongueur)
Si Abs(vDX) > Abs(vDY) Alors vDeltaT = Abs(vDX) Sinon vDeltaT = Abs(vDY)
Pour j = 1 Vers vDeltaT
SetDot Margin(0) + vStartX + j * vDX / vDeltaT, Margin(2) + vStartY + j * vDY / vDeltaT
Suivant
vDébutX = vDébutX + vDX
vDébutY = vDébutY + vDY
Fin si
Suivant
Fin du sous-marin
Sous-sortie publique()
Réponse.Expire = -9999
Pragma Response.AddHeader, sans cache
Response.AddHeader cache-ctrol, sans cache
Réponse.ContentType = image/gif
'Type de fichier
Réponse.BinaryWrite ChrB(Asc(G)) & ChrB(Asc(I)) & ChrB(Asc(F))
'Informations sur la version
Réponse.BinaryWrite ChrB(Asc(8)) & ChrB(Asc(9)) & ChrB(Asc(a))
'Largeur d'écran logique
Response.BinaryWrite ChrB (Largeur Mod 256) & ChrB ((Largeur / 256) Mod 256)
'Hauteur logique de l'écran
Response.BinaryWrite ChrB (Hauteur Mod 256) & ChrB ((Hauteur / 256) Mod 256)
Réponse.BinaryWrite ChrB(128) & ChrB(0) & ChrB(0)
'Liste globale des couleurs
Réponse.BinaryWrite ChrB(255) & ChrB(255) & ChrB(255)
Réponse.BinaryWrite ChrB(0) & ChrB(85) & ChrB(255)
'Identifiant de l'image
Réponse.BinaryWrite ChrB(Asc(,))
Réponse.BinaryWrite ChrB(0) & ChrB(0) & ChrB(0) & ChrB(0)
'Largeur de l'image
Response.BinaryWrite ChrB (Largeur Mod 256) & ChrB ((Largeur / 256) Mod 256)
'Hauteur de l'image
Response.BinaryWrite ChrB (Hauteur Mod 256) & ChrB ((Hauteur / 256) Mod 256)
Réponse.BinaryWrite ChrB(0) & ChrB(7) & ChrB(255)
Dim x, y, je : je = 0
Pour y = 0 à hauteur - 1
Pour x = 0 à largeur - 1
Si Rnd < Bruyant / 100 Alors
Réponse.BinaryWrite ChrB(1-Graph(x, y))
Autre
Si x * (x-Largeur) = 0 Ou y * (y-Hauteur) = 0 Alors
Réponse.BinaryWrite ChrB (Graphique (x, y))
Autre
Si Graph(x-1, y) = 1 Ou Graph(x, y) Ou Graph(x, y-1) = 1 Alors
Réponse.BinaryWrite ChrB(1)
Autre
Réponse.BinaryWrite ChrB(0)
Fin si
Fin si
Fin si
Si (y * Largeur + x + 1) Mod 126 = 0 Alors
Réponse.BinaryWrite ChrB(128)
je = je + 1
Fin si
Si (y * Largeur + x + i + 1) Mod 255 = 0 Alors
Si (Largeur*Hauteur - y * Largeur - x - 1) > 255 Alors
Réponse.BinaryWrite ChrB(255)
Autre
Response.BinaryWrite ChrB (Largeur * Hauteur Mod 255)
Fin si
Fin si
Suivant
Suivant
Réponse.BinaryWrite ChrB(128) & ChrB(0) & ChrB(129) & ChrB(0) & ChrB(59)
Fin du sous-marin
Fin du cours
Faible mCode
Définir mCode = Nouveau Com_GifCode_Class
Session (GetCode) = mCode.Create()
mCode.Output()
Définir mCode = Rien
%>