Código de página de inicio de sesión:
<! DOCTYPE html > < html > < head > < meta charset = "UTF-8" > < title >登陆</ title > </ head > < body > < form action = "./ test.php" method = "post" > < img src = "image_captcha.php" onclick = "this.src = 'image_captcha.php?' + nueva Fecha (). getTime ();" ancho = "140" < ENTRADA tipo = "text" nombre = "Captcha" marcador de posición = "Por favor, introduzca el código de verificación de la imagen" > < br /> < ENTRADA tipo = "Enviar" valor = "Verificar" > </ formar > </ cuerpo > < / html >
Generar código de verificación:
<? php / * * * Generación de códigos de verificación para letras + números * / // Abrir sesión session_start (); // 1. Crear un lienzo negro $ image = imagecreatetruecolor (100, 30 ); // 2. Definir el lienzo (fondo ) Color $ bgcolor = imagecolorallocate ( $ image , 255, 255, 255 ); // 3. Relleno de imagen en color ( $ image , 0, 0, $ bgcolor ); // 4. Establecer el contenido del código de verificación // 4.1 definir el código de verificación El contenido de $ content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" ; // 4.1 Crear una variable para almacenar los datos del código de verificación generados, lo cual es conveniente para que los usuarios envíen y comprueben $ captcha= "" ; for ( $ i = 0; $ i <4; $ i ++ ) { // tamaño de fuente $ fontsize = 10 ; // color de fuente $ fontcolor = imagecolorallocate ( $ image , mt_rand (0, 120), mt_rand (0, 120), mt_rand (0, 120 )); // Establecer contenido de fuente $ fontcontent = substr ( $ content , mt_rand (0, strlen ( $ content )), 1 ); $ captcha . =$ fontcontent ; // Coordenadas mostradas $ x = ( $ i * 100/4 ) + mt_rand (5, 10 ); $ y = mt_rand (5, 10 ); // Rellene el contenido en la cadena de imágenes del lienzo ( $ image , $ fontsize , $ x , $ y , $ fontcontent , $ fontcolor ); } $ _SESSION ["image_captcha"] = $ captcha ; // 4.3 Establecer el elemento de interferencia de fondo para ($ $ i = 0; $ i <200; $ i + +) { $ pointcolor = imagecolorallocate ( $ image , mt_rand (50, 200), mt_rand (50, 200), mt_rand (50, 200 )); imagesetpixel ( $ image , mt_rand (1, 99), mt_rand (1, 29), $ pointcolor ); } // 4.4 设置 干扰 线 para ( $ i = 0; $ i <3; $ i ++ ) { $ linecolor = imagecolorallocate ( $ image , mt_rand (50, 200), mt_rand (50, 200), mt_rand(50, 200 )); imageline ( $ image , mt_rand (1, 99), mt_rand (1, 29), mt_rand (1, 99), mt_rand (1, 29), $ linecolor ); } // 5. El navegador genera el encabezado de información del encabezado de la imagen ('content-type: image / png' ); // 6. Envía la imagen al navegador imagepng ( $ image ); // 7. Destruye la imagen imagedestroy ( $ image );
Verifique el código de entrada:
<? php / * * * Acepte el código de verificación enviado por el usuario al iniciar sesión * / session_start (); // 1. Obtenga el código de verificación enviado por el usuario $ captcha = $ _POST ["captcha" ]; // 2. Transfiera la sesión El código de verificación y el código de verificación enviado por el usuario se verifican. Cuando el código de verificación es exitoso, el código de verificación es correcto. Si no tiene éxito, salte hacia atrás y vuelva a enviar if ( strtolower ( $ _SESSION ["image_captcha"]) == strtolower ( $ captcha )) { echo " <h5> ¡sí! ¡El código de verificación es correcto! </ h5> " ; } else { echo " ¡NO! ¡El código de verificación se envió incorrectamente! " ; encabezado (" actualizar: 3; url =. / login.php ");// Ingrese el error para saltar a la página de inicio de sesión }