No me funciona el Captcha en la versión 1.1

Hola, lo que sucede es que actualicé la versión del framework y me puse a probar para ver que todo continuara funcionando, pero tengo un formulario de login donde pido el código de la imagen de seguridad y este me dejó de funcionar, es decir, ahora aunque le ingrese el código correcto aun así continua diciendo que el código de verificación es incorrecto.

¿Alguien sabe que puedo hacer en este caso?

Muchas gracias!

Envia un poco los códigos para ver que pasa.

Yo hasta ahora no tuve problemas con esto.

Saludos,

Mira que ya solucioné el problema pero para mi este problema nunca debió suceder, es decir, me da la impresión de que es un error de Yii, así que lo voy a comentar aquí por si estoy equivocado alguien me explique…

Yo hago la asignación de los campos en el controlador con:


$model->attributes=$_POST['UsersLoginForm'];

Y en el modelo tengo las siguientes reglas de validación:




		return array(

			// username and password are required

			array('username, password', 'required'),

			// verifyCode needs to be entered correctly

			array('verifyCode', 'captcha'),

			// password needs to be authenticated

			array('password', 'authenticate'),

		);



…Pero siempre me decía que el ‘verifyCode’ estaba vació, entonces yo imprimí en pantalla el atributo ‘$model->attributes’ para ver que pasaba y efectivamente el ‘verifyCode’ estaba vació… entonces investigando encontré que en ‘$model->attributes’ solo se almacenan los atributos seguros (safe attributes) y que para un atributo ser seguro debe aparecer en las reglas de validación… pero entonces ahí venia mi duda porque segun lo que yo veia yo el atributo ‘verifyCode’ ya aparecía en las reglas de validación cuando yo coloqué lo siguiente en las reglas:




...

array('verifyCode', 'captcha'),

...



Entonces… ¿Por que me sale que no es un atributo seguro?

Luego se me ocurrió pensar que tal vez debía aparecer otro tipo de validación en las reglas para poder que lo considerara seguro y entonces agregué la siguiente regla:


array('verifyCode', 'length', 'min'=>6, 'max'=>7),

Y cuando probé de nuevo ya funcionaba mi formulario.

Pero para mi… con solo la primera regla debió ser considerado como seguro… ¿estoy loco?

Un saludo!

tambien puedes poner




   array('verifyCode', 'safe'),



pon tu caso como un bug

Muchas gracias por tu respuesta Horacio. ;)

…En cuanto a lo de publicarlo como un bug… la verdad no se como escribir todo eso en un ingles que me entiendan :unsure:

Alguien que sepa ingles me puede ayudar con eso?

Y aprovecho para preguntar una duda con respecto a este mismo tema, es que me gustaría que alguien me confirmara si estoy en lo correcto cuando entendí que para hacer una asignación masiva por medio de:


$model->attributes

Solo se puede hacer para los atributos seguros y que para un atributo ser seguro debe aparecer en las reglas del modelo.

¿Estoy en lo correcto?

captcha is not safe when declared in rules();

if I declare




array('verifyCode', 'captcha'),



the verifyCode do not pass the validation because is not safe. But if I add other rule




array('verifyCode', 'captcha'),

array('verifyCode', 'length', 'min'=>6, 'max'=>7), // or array('verifyCode', 'safe'),



Then verifyCode becomes safe!

Is not enough whit the fist one?

Muchas gracias Pol!

Ya agregué el tick del bug en: http://code.google.com/p/yii/issues/detail?id=834

Qiang lo puso en estado "Invalid"

Vos podrias reproducir el mismo bug en una instalacion nueva?

Quiero decir, a lo mejor es algo que sucede con alguna configuracion que vos tenes, porque solo con una regla deberia funcionar.