Jump to content

error en muchos productos "Property Product->description is not valid"


Recommended Posts

Buenas compañeros resulta que hace unos días actualizaron mi tienda de la 1.4... a la 1.5.6.2 y cuando voy a modificar contenido de algun producto tipo cantidad, texto, etc me aparece en la parte de arriba en rojo el error "Property Product->description is not valid", se puede solucionar creandolos de nuevo pero en la tienda tengo muchos productos, y el problema es que no te deja duplicarlos que seria lo mas facil para ir arreglandolos, otra cosa que ocurre con estos productos que dan error es que no aparecen en la busqueda de la pagina principal, buscas su nombre y no aparecen.

 

Necesito, a ver si podeis, que me digais como puedo solucionar dicho problema de forma global o alguna forma para poder localizar todos los productos que tienen este fallo para poder ir reaciendolos de nuevo, un saludo y gracias de antemano.

Link to comment
Share on other sites

me acabo de fijar, cuando editas alguno de los parametros del producto en la pagina ya sea cantidad, peso, o lo que sea sale el error, pero esto pasa despues de editar ya que si no tocas el producto no ocurre nada y aparece en la busqueda perfectamente, pero claro esta, hay que ir tocando el stock y mas cosas continuamente a ver si me podeis ayudar, un saludo.

Link to comment
Share on other sites

No hombre no... de rehacer nada!!!

 

Dinos las características del campo description y description_short de tu tabla productos (ps_product_lang), ese tipo de fallo suena a que tienes alguna característica distinta (seguramente la longitud)

 

A nosotros nos pasó algo parecido (disculpa pero no lo recuerdo bien) si te saltas una actualización o no se realizó correctamente alguna que modificaba la base de datos puede ser que tu prestashop 1.5 intente leer un dato y resulta que esta guardado en un formato diferente y tu tabla no admite el nuevo.

 

El que se parase una actualización de PS a mitad y no se actualizasen las bases de datos era algo más o menos normal hasta hacer unas pocas versiones.

 

por eso falla o como se dice ahora "peta"... simplemente hay que encontrar que es lo diferente y corregir la tabla.

Link to comment
Share on other sites

por cierto no se si lo habia dicho antes o no, pero no pasa con todos los productos aparece en 1 de cada 3 mas o menos, he intentado borrar la descripcion corta y la larga, y guardar y nada sigue apareciendo el mismo fallo en los productos que dan fallo

Link to comment
Share on other sites

estoy en phpmyadmin busco la tabla pero no se los datos que te tengo que aportar ni como mirarlos a ver si me podeis echar una mano aunque sea al cuello... jaja, un saludo y gracias de antemano

Link to comment
Share on other sites

  • 2 weeks later...

Buenas,

 

El problema que estás teniendo es que Prestashop se ha vuelto un poco tiquismiquis con la verificación de la descripción de los productos.

 

Por tiquismiquis entiende que ahora Prestashop comprueba el html incluido en las descripciones en busca de etiquetas peligrosas o susceptibles de ser utilizadas en un ataque XSS.

 

Para evitar sorpresas deberías de hacer un pequeño script que recorriera todos los productos y aplicara una función como la siguiente a todos las descripciones de los productos:

/*
 * XSS filter 
 *
 * This was built from numerous sources
 * (thanks all, sorry I didn't track to credit you)
 * 
 * It was tested against *most* exploits here: http://ha.ckers.org/xss.html
 * WARNING: Some weren't tested!!!
 * Those include the Actionscript and SSI samples, or any newer than Jan 2011
 *
 *
 * TO-DO: compare to SymphonyCMS filter:
 * https://github.com/symphonycms/xssfilter/blob/master/extension.driver.php
 * (Symphony's is probably faster than my hack)
 */
 
function xss_clean($data)
{
        // Fix &entity\n;
        $data = str_replace(array('&','<','>'), array('&amp;','&lt;','&gt;'), $data);
        $data = preg_replace('/(*\w+)[\x00-\x20]+;/u', '$1;', $data);
        $data = preg_replace('/(*[0-9A-F]+);*/iu', '$1;', $data);
        $data = html_entity_decode($data, ENT_COMPAT, 'UTF-8');
 
        // Remove any attribute starting with "on" or xmlns
        $data = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data);
 
        // Remove javascript: and vbscript: protocols
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $data);
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $data);
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $data);
 
        // Only works in IE: <span style="width: expression(alert('Ping!'));"></span>
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#iu', '$1>', $data);
 
        // Remove namespaced elements (we do not need them)
        $data = preg_replace('#</*\w+:\w[^>]*+>#i', '', $data);
 
        do
        {
                // Remove really unwanted tags
                $old_data = $data;
                $data = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data);
        }
        while ($old_data !== $data);
 
        // we are done...
        return $data;
}

 

 

Link to comment
Share on other sites

  • 4 months later...

 

Buenas,

 

El problema que estás teniendo es que Prestashop se ha vuelto un poco tiquismiquis con la verificación de la descripción de los productos.

 

Por tiquismiquis entiende que ahora Prestashop comprueba el html incluido en las descripciones en busca de etiquetas peligrosas o susceptibles de ser utilizadas en un ataque XSS.

 

Para evitar sorpresas deberías de hacer un pequeño script que recorriera todos los productos y aplicara una función como la siguiente a todos las descripciones de los productos:

/*
 * XSS filter 
 *
 * This was built from numerous sources
 * (thanks all, sorry I didn't track to credit you)
 * 
 * It was tested against *most* exploits here: http://ha.ckers.org/xss.html
 * WARNING: Some weren't tested!!!
 * Those include the Actionscript and SSI samples, or any newer than Jan 2011
 *
 *
 * TO-DO: compare to SymphonyCMS filter:
 * https://github.com/symphonycms/xssfilter/blob/master/extension.driver.php
 * (Symphony's is probably faster than my hack)
 */
 
function xss_clean($data)
{
        // Fix &entity\n;
        $data = str_replace(array('&','<','>'), array('&amp;','&lt;','&gt;'), $data);
        $data = preg_replace('/(*\w+)[\x00-\x20]+;/u', '$1;', $data);
        $data = preg_replace('/(*[0-9A-F]+);*/iu', '$1;', $data);
        $data = html_entity_decode($data, ENT_COMPAT, 'UTF-8');
 
        // Remove any attribute starting with "on" or xmlns
        $data = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data);
 
        // Remove javascript: and vbscript: protocols
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $data);
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $data);
        $data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $data);
 
        // Only works in IE: <span style="width: expression(alert('Ping!'));"></span>
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
        $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#iu', '$1>', $data);
 
        // Remove namespaced elements (we do not need them)
        $data = preg_replace('#</*\w+:\w[^>]*+>#i', '', $data);
 
        do
        {
                // Remove really unwanted tags
                $old_data = $data;
                $data = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data);
        }
        while ($old_data !== $data);
 
        // we are done...
        return $data;
}

Hola, alguno podría decirme donde tengo que poner este script?

Link to comment
Share on other sites

  • 7 months later...
  • 1 year later...
  • 4 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...