Problème Url Tri

3 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour, dans la page achat si on effectue un tri à partir de cette url j'ai une erreur :

 

macategorie-23.html?tri=prix&sort=ascl

 

Notice: Erreur SQL1064 - Erreur de syntaxe près de 'ascl, p.id DESC LIMIT 0, 12' à la ligne 7 - Page : /site.fr/macategorie-23.html?tri=prix&sort=ascl - IP 127.0.0.1 - SELECT SQL_CALC_FOUND_ROWS p.*, c.id AS categorie_id, c.nom_fr AS categorie FROM peel_produits p INNER JOIN peel_produits_categories pc ON pc.produit_id = p.id INNER JOIN peel_categories c ON pc.categorie_id = c.id WHERE p.etat = "1" AND p.nom_fr != "" AND (pc.categorie_id IN ('23')) AND (p.on_gift = "0") GROUP BY p.id ORDER BY p.`prix` ascl, p.id DESC LIMIT 0, 12 - Error number in C:\Program Files\EasyPHP-5.3.8.1\www\site.fr\lib\fonctions\database.php on line 238.

 

si on modifie la valeur de sort on a cette erreur

 

v.7.0.4

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Le lien tri=prix&sort=ascl contient une valeur fausse (ascl), qui fait planter la requête. Cette URL est une modification d'une URL générée par PEEL, donc normalement elle n'est pas appelée.
Même si cela fait planter la requête, ça n'est pas grave puisque l'URL à la base n'est pas bonne, et qu'il y a une protection avec word_real_escape_string qui évite une injection SQL.

Pour éviter que ça ne plante la requête et ainsi ajouter de la robustesse dans la fonction params_affiche_produits du fichier lib\fonctions\fonctions.php, en remplaçant le code lignez 1828 (pour la version 7.0.4)

 

    if (isset($_GET['sort'])) {

par

    if (isset($_GET['sort']) && in_array($_GET['sort'], array('asc', 'desc'))) {

La version 7.1 qui sort mardi prochain aura ce type de protection supplémentaire.

Si vous avez touché aux URLs générées sur votre site, vérifiez dans la fonction affiche_filtre du fichier lib\fonctions\display.php que les liens de filtre soit identique à

            $tpl->assign('options', array(
                    $_SERVER['REQUEST_URI'] => $GLOBALS['STR_ORDER_RESULTS_BY'],
                    $urlcat_with_suffixe . 'tri=nom_' . $_SESSION['session_langue'] . '&sort=asc' => $GLOBALS['STR_PRODUCT_NAME'] . ' ' . $GLOBALS['STR_ASC'],
                    $urlcat_with_suffixe . 'tri=nom_' . $_SESSION['session_langue'] . '&sort=desc' => $GLOBALS['STR_PRODUCT_NAME'] . ' ' . $GLOBALS['STR_DESC'],
                    $urlcat_with_suffixe . 'tri=prix&sort=asc' => $GLOBALS['STR_PRICE'] . ' ' . $GLOBALS['STR_ASC'],
                    $urlcat_with_suffixe . 'tri=prix&sort=desc' => $GLOBALS['STR_PRICE'] . ' ' . $GLOBALS['STR_DESC']
                    ));

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

c'est tout bon merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping