Red de conocimiento informático - Problemas con los teléfonos móviles - El uso del código de verificación Captcha de yii y por qué el código de verificación no se actualiza

El uso del código de verificación Captcha de yii y por qué el código de verificación no se actualiza

En el proceso de desarrollo web, los códigos de verificación se utilizan a menudo para evitar que los robots envíen datos constantemente y provoquen la parálisis del sitio web. Yii proporciona un complemento de código de verificación, que es Captcha. Material de referencia/lesson.html

Paso uno:

El uso de Captcha en el proyecto requiere las siguientes configuraciones: Agregar acciones de método en el Controlador

acciones de función pública ( )

?{

devolver matriz (

?'captcha' => matriz (

' class' => 'CCaptchaAction' ,

'minLength' => 1 ,

'maxLength' => 5 ,

'backColor' => 0xFFFFFF ,

'ancho' => 100 ,

'alto' => 40

?)

);

?}

Al mismo tiempo, debe agregar captacha a accessRules para permitir que todos los usuarios accedan a este método de la siguiente manera

Agregue un atributo:

public $verifyCode;

? array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),

array ('captcha', 'captcha', 'allowEmpty '=>!extension_loaded('gd'), 'on'=>'login'),//Agregar al final de la matriz de reglas:

Segundo en ¿Agregar el siguiente código a su vista?

widget('CCaptcha'); ?>

// Puedes hacer clic en la imagen a continuación para cambiar el código de verificación

?

widget('CCaptcha',array('showRefreshButton'=>false,'clickableImage'=>true,'imageOptions'=>array('alt' =>'Haga clic para cambiar la imagen ','title'=>'Haga clic para cambiar la imagen','style'=>'cursor:pointer'))); ?>

¿Tercero? Necesitamos agregar un código de verificación. atribuya a nuestro modelo de formulario para almacenar el código de verificación ingresado por el usuario y luego use el validador captcha para verificar la precisión del código de verificación ingresado por el usuario.

public $verifyCode;

Y agrega lo siguiente en reglas

reglas de función pública()

{

?return array(

...

array('verifyCode', 'captcha', 'on'=>'login', 'allowEmpty'=> !extension_loaded(' gd')),

...

);

}

La razón por la que el código de verificación no se actualiza:

El inicio de sesión en el backend llama al código de verificación. Al hacer clic en el código de verificación, no se actualiza ni responde (todas las configuraciones y parámetros del código de verificación son correctos). Cuando encontré el error, descubrí que la página donde se puede actualizar el código de verificación tiene una sección adicional de código js que la página donde no se puede actualizar el código de verificación, que se usa para manejar el evento de hacer clic en el código de verificación para actualizar .

¿Por qué falta un fragmento de código? Resulta que el controlador llama a "renderPartial" y "render" respectivamente. Hablemos de sus diferencias:

Al renderizar la salida de la página.

render genera el contenido de la plantilla principal e incrusta el contenido renderizado en la plantilla principal.

renderPartial no genera el contenido de la plantilla principal. Sólo se genera el contenido parcial de esta representación.

Al mismo tiempo, hay una diferencia importante:

La función ProcessOutput($output) se ejecuta de forma predeterminada dentro de la función de renderizado, que registrará componentes, como CTreeView, a CClientScript Los scripts requeridos en su interior se procesan y generan.

Y ?renderPartial() no procesa ni genera automáticamente scripts de cliente de forma predeterminada. Los parámetros deben especificarse antes de la salida:

renderPartial($view,$data=null,$return. =false,$processOutput=false)

Simplemente especifique?processOutput como verdadero.

Al igual que el problema que encontramos, al usar ?renderPartial?, la página no muestra la sección de ?js que actualiza el código de verificación, por lo que la visualización es anormal.

Si tiene más preguntas, vaya al área de ayuda para problemas/