Hola mozart, me paso algo parecido. Para mi gusto, Sanitize::clean()
hace mas de lo deseable. En mi opinión  los datos tienen que ir a la
base como el usuario los escribe, naturamente, salvando todo lo que
pueda interferir con el sql. No solo por el problema de la posterior
modificación, como vos decis, pero tambien ¿Que tal si despues esos
datos se tienen que mostrar en un txt, un pdf o algo que no sea
html?. En fin,  Yo me hice una clase que haga la limpieza a mi gusto:

uses("sanitize");
class DataCleaner {

        function escapeData($ar)
        {
                $sa = new Sanitize;

                if (is_array($ar)) {
                        foreach ($ar as $k => $v) {
                                        $ar[$k] = DataCleaner::escapeData($v);
                        }
                        return $ar;
                } else {
                        $ar = trim($ar);
                        $ar = $sa->escape($ar);
                        // mas todo lo que sea necesario limpiar...
                        return $ar;
                }
        }
}

Despues podes usarla  asi:

$Cleaner = new DataCleaner;
$this->data = $Cleaner->escapeData($this->data);

Personalmente,  la estoy utilizando en el beforeValidate() de los
modelos, ya que el trim me ayuda con las validaciones de los campos
que estan en blanco, pero supongo que no siempre esto es lo deseable.
Si lo del trim no interesa mucho supongo que el mejor lugar para hacer
esto es en el beforeSave() de los modelos.
Tambien podria usarse en el controller como vos usas el
Sanitize::clean(), pero seguramente despues haces un save, y si falla,
seguramente devolverias $this->data a una vista para que el usuario
corrija algun error, solo que $this->data ya no tiene exactamente lo
mismo que el usuario ingreso. Pero teniendo cuidado con eso tambien
puede usarse en el controller.

Bueno, no se si es lo mejor pero funciono para mi. Ojala funcione para
otros!.
Saludos!



On 20 sep, 19:17, mozart_ar <[EMAIL PROTECTED]> wrote:
> Comento un problema que se me presentó al utilizar Sanitize::clean()
> En mi aplicación, antes de hacer el save() del modelo, paso el arreglo
> de datos que viene del formulario por clean(), de esta manera:
>
> $san = new Sanitize();
> $this->data = $san->clean($this->data);
>
> el problema con el que me encuentro es que para los campos de texto, y
> en especial el campo "name" del modelo, esta función por omisión
> convierte varios caracteres especiales, en su entidad html
> equivalente. Luego en mi aplicación esta el save() del modelo. O sea,
> que cuando se muestra el campo "name" se muestra correctamente ya que
> el navegador interpreta las entidades html, pero... no ocurre lo mismo
> cuando se intenta editar el campo "name", ya que se muestran los
> caracteres que componen la entidad html.
> Ej:
> $this->data['Post']['name']='Prueba de sanitize (prueba)'
>
> luego: $this->data = $san->clean($this->data);
>
> esto da: $this->data['Post']['name']='Prueba de sanitize
> &#40;prueba&#41;'
>
> cuando se intenta editar este campo, el navegador muestra: Prueba de
> sanitize &#40;prueba&#41;
>
> Los caracteres que se convierten son los siguientes (rev 5641):
> &, %, <, >, ", ', (, ), +, -
>
> Debería hacer sanitize del formulario de otra manera?, o habría que
> sugerir un cambio en el core de cakephp?
>
> saludos


--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos 
de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo 
electrónico a [email protected]
 Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
 Para obtener más opciones, visita este grupo en 
http://groups.google.com/group/CakePHP-es?hl=es.

-~----------~----~----~----~------~----~------~--~---

Responder a