aide prestashop PhenixSuite Help
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    • S'inscrire
    • Se connecter
    1. Accueil
    2. doekia
    3. Meilleur sujets
    Hors-ligne
    • Profil
    • Abonnements 1
    • Abonnés 2
    • Sujets 39
    • Messages 126
    • Groupes 2

    Messages

    Récent Meilleur sujets Contesté
    • Copieurs-Colleurs

      L'humanité a évolué au fil du temps, de chasseurs-cueilleurs, nomades, inquisiteurs, esclavagistes, ... à nos jours où nous sommes réseauteurs sociaux et copieurs-colleurs.
      Tout comme vous n'iriez pas non préparé chasser le Mesosaure ou cueillir un essaim d'abeille - l'issue serait funeste (Je sais l'un ne vit pas dans la bonne section de la frise chronologique, l'autre n'est pas un fruit - C'est une métaphore) -, vous devez éviter les pièges de la méthode. Voici une liste non exhaustive de ces pièges et comment les éviter:


      Connaître son ennemi

      Ai-je suffisamment de connaissance pour comprendre ce que fait ce code ? A défaut, se documenter, interroger des experts. Copier un code hermétique à votre compréhension et le meilleur moyen d'injecter une porte dérobée dans votre solution.

      Date de fraicheur

      De quand date ce snippet? Cette question simple vous évitera d'utiliser du code deprecated ou une solution obsolète.

      Est-ce comestible

      En raison de typos, malveillance, maladresses l'extrait peut être dangereux. Assurez-vous d'avoir compris les risques.

      Allergies

      Contrôlez vos versions. Vérifiez toujours que la solution est en adéquation avec votre environnement

      Tests clinique

      Toujours passer la solution au banc d'essai. Toujours. Même une seule ligne!

      Testisnulus

      Exactement comme la citation romaine. Ne tester qu'une fois, c'est comme n'avoir rien testé

      Protections

      Toujours, 10x si besoin, faites des backups

      La pierre de rosette

      Copier-coller depuis certaines sources mène à des déformations de contenu (apostrophes, guillemets, backquotes, ...).

      Intelligence

      Faites honneur à votre cerveau et sa capacité d'analyse.

      Obésité

      Si votre copier-coller ressemble à une recette de Maïté vous risquez l'indigestion. De la même manière si vous accumulez les composants, c'est probablement qu'il existe une solution plus simple et élégante.

      Agence tous-risque

      Partir sans plan d'ensemble c'est obtenir une usine à gaz dans le meilleur des cas, un réacteur RBMK hors de contrôle dans le pire.

      Un petit pas pour l'homme

      Faites des petits pas, simple. Vous pourrez alors réaliser de grandes choses.

      Houston nous avons un problème

      Prenez des notes communiquez, expliquez, documentez, écoutez les experts. Seul moyen d'avoir un réponse adaptée en cas de problème.

      Dilettantisme

      Toujours être attentif. L'esprit en alerte à l'écoute du moindre bruit suspect. A surveiller, le lait, la purée de carotte tout en langeant le petit dernier, on termine dans les fais divers d'une revue criminelle, ou on gagne un Darwin Awards.


      Ces bonnes pratiques exprimées, n’empêcheront pas les aventuriers intrépide de faire preuve de témérité paresseuse. Pour cette raison nous essayons lorsque le code est dangereux de le rendre inactif. La solution est sous vos yeux mais si vous vous contentez de la copier telle quelle, elle sera sans effet ou générera une message d'erreur anodin. Lisez l'erreur, googlez là et vous pourrez alors transformer ce plomb en or.

      posté dans Discussion générale
      doekiaD
      doekia
    • [1.4.0.17]+ Tools::redirect() n'accepte pas les query string de l'url

      Tools::redirect() manipule l'url de telle manière que les paramètres sont invalide (donc ignoré)

      C'est typiquement le cas lorsqu'un contrôleur requiert une authentification. L'url pour la connexion devient:
      /connexion?back=<url-d'origine>

      Si l'url d'origine contient des paramètres (?id_guest=xxxx) celle-ci est ignorée.

      Le code "malade":

                              $explode = explode('?', $url);
                              $url = $link->getPageLink($explode[0], true);
                              if (isset($explode[1]))
                                      $url .= '?'.$explode[1];
      

      Doit être remplacé par:

                              $explode = explode('?', $url,2);
                              $url = $link->getPageLink($explode[0], true);
                              if (isset($explode[1]))
                                      $url .= '?'.$explode[1];
      
      posté dans BUG connus 1.4 1.5 1.6 front-office bug
      doekiaD
      doekia
    • [1.6.1.15+] pack produits - impossible de créer ou mise à jour supprimant le pack

      Depuis la version 1.6.1.15, un patch à rendu les packs totalement non fonctionnels coté BO.

      La cause: https://github.com/PrestaShop/PrestaShop/commit/18f57b62e897ed5b472e51f7ed69ce4e390d105e#diff-7d7493bae4eba5d548b7f7f88d16d7ea

      Corriger la ligne 5025 de controllers/admin/AdminProductsController.php
      Remplacer:
      if (Pack::isPack((int)$item_id || $product->id == (int)$item_id)) {
      par
      if (Pack::isPack((int)$item_id) || $product->id == (int)$item_id) {

      posté dans BUG connus 1.6 bug
      doekiaD
      doekia
    • [1.6.1.12]- Header de cross-orgin invalide avec les CDN

      Les version inférieures à la version 1.6.1.12 implémentent un drapeau cross-origin invalide.

      Remplacer dans Tools.php

      Header add Access-Control-Allow-Origin \"*\"
      

      par

      Header set Access-Control-Allow-Origin \"*\"
      
      posté dans BUG connus 1.6 front-office performance bug
      doekiaD
      doekia
    • [1.6.0.5 - 1.6.1.18] Fatal error lors de la suppression d'image du themeconfigurator

      Lors de la suppression d'image du themeconfigurator vous obtenez l'erreur:
      Call to a member function rowCount() on boolean
      ou
      Table 'presta16.ps_ps_themeconfigurator' doesn't exist avec le mode debug activé


      Modifiez le fichier modules/themeconfigurator/themeconfigurator.php @397
      Remplacer

      Db::getInstance()->delete(_DB_PREFIX_.'themeconfigurator', 'id_item = '.(int)$id_item);
      

      par

      Db::getInstance()->delete('themeconfigurator', 'id_item = '.(int)$id_item);
      
      posté dans BUG connus 1.6 bug
      doekiaD
      doekia
    • RE: Pourquoi le module cronJob ne fonctionne-t-il pas avec les mutus OVH ?

      Pour la dernière fois!
      Ne pas mettre les url exacte de ton BO et/ou de tes crons avec leurs tokens de sécurité sur un forum public

      posté dans Tutoriels
      doekiaD
      doekia
    • RE: Configuration e-commerce dans Google Analytics

      Avec la nouvelle version du module et la nouvelle version de analytics (ça n'arrête pas de changer), les étapes sont contruites automatiquement par un codage en dur de la part de google.
      Les étapes sont remontées par la couche "ec" via les évents GoogleAnalyticEnhancedECommerce.addCheckout(step)

      Avec step en dur donc:

      • 1 - récap panier (étape 0 du tunnel)
      • 2 - authentification (marche 1 coup sur 5 du fait de l'implémentation et du cheminement exact de l'internaute)
      • 3 - page de sélection des adresses
      • 4 - page de sélection du transporteur
      • 5 - page des moyens de paiement
      • 6 - confirmation de commande (hook et bien sûr dépendant de l'internaute et de son retour sur le shop après paiement tiers type CB)

      Il suffit ensuite de renommer les étapes dans analytics: Administration > Vue > Commerce électronique > Paramètres du commerce électronique amélioré

      Pour voir l'entonoir, c'est dans analytics: Conversion > Commerce électronique > Comportement lors du processus de paiement

      posté dans Discussion générale
      doekiaD
      doekia
    • [1.6+] email accentué => Fatal: Address in mailbox given does not comply with RFC 2822, 3.6.2

      Prestashop utilise la librairie Swift version 4 pour envoyer les mails.
      Cette librarie applique un contrôle de la grammaire selon la RFC 2822 (avril 2001).
      Cette RFC a été remplacé par la RFC 6531 (février 2012).
      La librarie Swift n'intègre cette grammaire qu'a partir de la version 5.5+ (via package symfony).

      Pour admettre les emails accentués, il faut désactiver la génération d'erreur en cas de grammaire non reconnu.

      Dans le fichier tools/swift/classes/Swift/Mime/Headers/MailboxHeader.php aux alentours de la ligne @344

          private function _assertValidAddress($address)
          {
              if (!preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D',
                  $address)) {
                  if (0) throw new Swift_RfcComplianceException(
                      'Address in mailbox given ['.$address.
                      '] does not comply with RFC 2822, 3.6.2.'
                      );
              }
          }
      
      posté dans BUG connus 1.6 smtp bug
      doekiaD
      doekia
    • Créer un contrôleur front (indépendant)

      Il arrive de devoir créer un contrôleur front office pour y implémenter une logique particulière.
      Ici nous allons faire juste cela, totalement indépendant d'un module.

      pré-requis

      accès FTP
      notepad++
      5 minutes


      le contrôleur

      Nous allons créer le contrôleur. Nous pouvons le mettre directement dans le répertoire /controllers/front mais au cas où demain ne devions écraser notre prestashop, nous allons préférer le mettre dans /override/controllers/front. En plus de cette manière il est plus simple d'identifier à posteriori quel code a été ajouté.

      Nous devons impérativement dériver d'un FrontController, mais il est tout a fait possible de dériver un contrôleur qui en dérive. Supposons ici ContactController.
      /override/controllers/front/ContactControllerExtra.php

      <?php
      class ContactControllerExtra extends ContactController
      {
         public $php_self = 'contact-extra'; 
      }
      

      Vidons le cache (avec la gomme) ou supprimons le fichier /cache/class_index.php
      Oui c'est tout faire un contrôleur n'est pas compliqué. Mais bon soyons clair c'est pour l'instant une coquille vide.

      Avant d'aller plus loin nous allons le configurer coté back-office afin que nous puissions lui donner une belle url et un minimum de décence coté SEO.


      SEO & URL

      Dans le BO, rendons nous dans Préférences > SEO&URL
      Cliquer ajouter, et remplir

      • page: choisir contact-extra
      • titre: Contact étendu
      • description: Page de contact avancée
      • mots clé: vide
      • url: contact-avance

      Enregistrer

      Voila, vous pouvez/devez customiser les paramètres en fonction des langues afin qu'ils correspondent à vos besoins


      Le code utile

      Jusque maintenant nous n'avons qu'une coquille vide qui se contente de faire en tout point ce que fait le formulaire de contact. Écrivons un peu de code utile. Nous allons mettre en place un captcha très simple.
      Reprenons notre fichier contrôleur
      /override/controllers/front/ContactControllerExtra.php

      <?php
      class ContactControllerExtra extends ContactController
      {
         public $php_self = 'contact-extra'; 
      
        private function trivial_captcha() { return (int)($this->context->cookie->id_guest); }
      
        public function postProcess() {
          if (Tools::isSubmit('submitMessage')) {
            $captcha = Tools::getValue('captcha',0);
            if (!$captcha || $captcha != $this->trivial_captcha()) {
              $this->errors[] = Tools::displayError('Invalid captcha.');
              return;
            }
          }
          return parent::postProcess();
        }
      }
      

      Nous venons de créer un contrôle lors de la réception du formulaire et de vérifier que ce formulaire contient un captcha et que celui-ci est valide.

      Si nous essayons notre contrôleur maintenant nous obtenons systématiquement une erreur "Invalid captcha" lors de l'envoi du formulaire.


      la vue

      Nous devons bien sûr construire un template permettant la saisie du captcha. Pour cela nous allons "bêtement" copier le template normal, puis nous ajouterons notre code à l'intérieur

      Copions /themes/<votre-theme>/contact-form.tpl => /themes/<votre-theme>/contact-form-extra.tpl
      Éditons maintenant ce fichier et identifions où mettre notre code

                                      <div class="col-xs-12 col-md-9">
                                              <div class="form-group">
                                                      <label for="message">{l s='Message'}</label>
                                                      <textarea class="form-control" id="message" name="message">{if isset($message)}{$message|escape:'html':'UTF-8'|stripslashes}{/if}</textarea>
                                              </div>
      
                                              {* ***** Nous allons mettre notre code ICI ***** *}
                                                                           
                                              {hook h='displayGDPRConsent' moduleName='contactform'}
                                       </div>
                              </div>
                              <div class="submit">
                                      <input type="text" name="url" value="" class="hidden" />
                                      <input type="hidden" name="contactKey" value="{$contactKey}" />
                                      <button type="submit" name="submitMessage" id="submitMessage" class="button btn btn-default button-medium"><span>{l s='Send'}<i class="icon-chevron-right right"></i></span></button>
                              </div>
      

      Voici le code à mettre:

      <div class="form-group">
         <label for="captcha">{l s='Captcha'}</label>
         <input name="captcha" type="text" />
         <span class="captcha-help">{l s='Please enter this number in the captcha field'}: {$captval}</span>
      
      </div>
      

      Pour l'instant cette étape ne change rien.
      En effet nous devons maintenant câbler la vue pour que le contrôleur l'appelle.


      On air

      Enfin la dernière étape.
      Nous devons simplement appeler notre vue (le template) et nous aurons un contrôleur complet.

      Revenons dans le contrôleur.
      /override/controllers/front/ContactControllerExtra.php

      <?php
      class ContactControllerExtra extends ContactController
      {
         public $php_self = 'contact-extra'; 
      
        private function trivial_captcha() { return (int)($this->context->cookie->id_guest); }
      
        public function postProcess() {
          if (Tools::isSubmit('submitMessage')) {
            $captcha = Tools::getValue('captcha',0);
            if (!$captcha || $captcha != $this->trivial_captcha()) {
              $this->errors[] = Tools::displayError('Invalid captcha.');
              return;
            }
          }
          return parent::postProcess();
        }
        public function initContent() {
          parent::initContent();
          $this->context->smarty->assign(array(
             'captval' => $this->trivial_captcha(),
          ));
         $this->setTemplate(_PS_THEME_DIR_.'contact-form-extra.tpl');
        }
      }
      

      Il ne vous reste plus qu'a faire quelques réglages css, les traductions et vous avez terminé.

      Bien joué

      posté dans Tutoriels
      doekiaD
      doekia
    • RE: Problème après un edit html

      @baby
      Plusieurs choses importantes pour obtenir de l'aide rapidement.

      1. Donner la version exacte de son Prestashop et de son PHP
      2. Fournir une url permettant aux intervenant de voir in-situ le problème.
      3. Bien expliquer les étapes des diverses tentatives testées
      4. Si le module est gratuit, nous pointer vers le code de ce dernier
      5. Si le module est acheté, commencer par contacter le développeur de ce dernier
      posté dans Discussion générale
      doekiaD
      doekia
    • RE: Images produit qui disparaissent

      @camille Bravo pour nous avoir donné les pistes d'un problème dont nous n'arrivions pas à reproduire le scénario. @Eolia vous a donné un correctif et nous allons rendre celui-ci encore plus robuste sur la version à venir. Si je puis me permettre, évitez de penser qu'un outils comme ChatGPT peut vous sauver si vous n'avez pas suffisamment de connaissance sur un sujet. Les IA sont impressionnante mais quasiment exclusivement sur des sujets des milliers/millions de fois vu et revu dans leurs apprentissages. En dehors de ces cas, les IA font 60% bien 30% bof et 10% BS.
      Encore un fois ce n'est pas une critique, juste qu'il faut être conscient du problème. Des outils très puissant mais qui requièrent une connaissance amont pour remettre en cause leurs "output"

      Encore merci d'avoir ciblé le problème avec vos tests clairement documentés.

      posté dans Bugs & Améliorations
      doekiaD
      doekia
    • [1.6.0.9] BO: Paniers, Bad query lors de l'ajout d'un filtre 'paniers abandonnés'

      Lors de l'ajout du filtre 'paniers abandonnés', la page sort l'erreur:
      Bad SQL query
      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id_order = 'Panier abandonné' ORDER BY a.id_cart DESC LIMIT 0,50' at line 15

      Appliquer ce patch:
      https://github.com/PrestaShop/PrestaShop/commit/d5a728c869e8931d33e9b8d752322f4c07471a0d#diff-5fbca4f1456bafff9d3bd87107eedb61

      posté dans BUG connus 1.6 bug
      doekiaD
      doekia
    • RE: Les transporteurs n'apparaissent pas dans le panier

      Cela va être compliqué de t'aider. Déjà que la version 1.7 est pleine de bug, alors là on est carrément dans les pré-bétas

      La communauté compétente pouvant t'aider avec la 1.7 est réduite, car nous avons pas de temps à investir dans ce genre de "version" qui sont plus de la "branlette" de geek qu'une outils e-commerce.

      Active le débug, consulte les changelogs de github

      posté dans Discussion générale
      doekiaD
      doekia
    • [1.6.0.5]+ Reference error: $ is undefined dans le BackOffice

      Lorsqu'un module injecte un js dépendant de jQuery au travers de $this->context-controller->addJS() celui-ci est chargé dans la page bien avant que les dépendances jQuery existent.

      Le bug est lié à l'AdminController qui appelle le hookBackOfficeHeader avant d'avoir appelé $this->setMedia

      Pour corriger, changer dans classes/controller/Controller.php

          public function init()
          {
              if (_PS_MODE_DEV_ && $this->controller_type == 'admin') {
                  set_error_handler(array(__CLASS__, 'myErrorHandler'));
              }
      
              if (!defined('_PS_BASE_URL_')) {
                  define('_PS_BASE_URL_', Tools::getShopDomain(true));
              }
      
              if (!defined('_PS_BASE_URL_SSL_')) {
                  define('_PS_BASE_URL_SSL_', Tools::getShopDomainSsl(true));
              }
          }
      

      par

          public function init()
          {
              if (_PS_MODE_DEV_ && $this->controller_type == 'admin') {
                  set_error_handler(array(__CLASS__, 'myErrorHandler'));
              }
      
              if (!defined('_PS_BASE_URL_')) {
                  define('_PS_BASE_URL_', Tools::getShopDomain(true));
              }
      
              if (!defined('_PS_BASE_URL_SSL_')) {
                  define('_PS_BASE_URL_SSL_', Tools::getShopDomainSsl(true));
              }
              if ($this instanceof AdminController) {
                 $this->setMedia();
              }
          }
      
      posté dans BUG connus 1.6 bug
      doekiaD
      doekia
    • RE: SQL : Alter table Add if not exist

      Non il n'existe pas d'autre méthode car il n'est pas possible de faire un alter dans une jointure mais...
      Tu peux ADD ta colonne et intercepter l'erreur qui se produira si elle existe déjà
      et il me semble que mariadb admet la syntaxe if not exists
      https://mariadb.com/kb/en/library/alter-table/ à partir de la 10.0.2

      posté dans Discussion générale
      doekiaD
      doekia
    • [1.6.1.0]+ Too many tables, MySQL can only use 61 tables in a join - Backoffice, créer/éditer un produit (SpecificPriceRule.php)

      Lorsque vous avez plus de 59 catégories dans une condition de règle catalogue, PrestaShop crash lors de l'enregistrement produit. Le problème peut survenir avec moins de règles catégories, si vos règles utilisent d'autres conditions (features, attributes, suppliers, manufacturers,

      Le code en cause réside dans classes/SpecificPriceRule.php fonction SpecificPriceRule::getAffectedProducts()

      } elseif ($condition['type'] == 'category') {
         $query->leftJoin('category_product', 'cp'.(int)$id_condition, 'p.`id_product` = cp'.(int)$id_condition.'.`id_product`')
           ->where('cp'.(int)$id_condition.'.id_category = '.(int)$condition['value']);
      } elseif ($condition['type'] == 'supplier') {
      

      Vous devez remplacer cette section par:

                          } elseif ($condition['type'] == 'category') {
                              if ($once) {
                                  $query->innerJoin('specific_price_rule_condition_group', 'sprg', 'sprg.id_specific_price_rule='.(int)$this->id);
                                  $query->innerJoin('specific_price_rule_condition','sprc', 'sprc.type = "category" and sprc.id_specific_price_rule_condition_group = sprg.id_specific_price_rule_condition_group');
                                  $query->innerJoin('category_product', 'cp', 'p.`id_product` = cp.`id_product` and cp.id_category = sprc.value');
                                  $once = false;
                              }
                          } elseif ($condition['type'] == 'supplier') {
      

      Ajoutez ensuite la ligne $once = true; juste avant le foreach:

                      // Add the conditions
                      $once = true;
                      foreach ($condition_group as $id_condition => $condition) {
      

      Enfin créez un index dans votre schéma (sql):

      ALTER TABLE `ps_specific_price_rule_condition`
      ADD INDEX `id_specific_price_rule_condition_group_type` (`id_specific_price_rule_condition_group`, `type`);
      

      Ce bug est également lié à celui-ci: https://bb.enter-solutions.net/topic/1071/1-6-1-0-duplicate-entry-xxxxxx-for-key-id_product_2-insert-into-ps_specific_price-backoffice-créer-éditer-un-produit-specificpricerule-php

      posté dans BUG connus 1.6 bug
      doekiaD
      doekia
    • RE: impossible d'accéder à l'onglet modules apres installation module Oyst-1

      @ccorinne
      J'ai déplacé le sujet pour ne pas poluer la section BUG connus de Prestashop. En effet si nous reportons dans celle-ci tous les crash liés à des modules tiers la section va vite devenir un énorme capharnaum.
      🤤

      posté dans Discussion générale
      doekiaD
      doekia
    • [1.6.1.0]+ Duplicate entry XXXXXX for key id_product_2 - INSERT INTO ps_specific_price - BackOffice, créer/éditer un produit (SpecificPriceRule.php)

      Lorsqu'il existe des règles catalogues avec des conditions sur catégories, à l'enregistrement d'un produit, vous rencontrez cette erreur.
      Le code impliqué réside dans SpecificPriceRule.php fonction SpecificPriceRule::getAffectedProducts()

      Vous devez remplacer la ligne:

      $query->select('p.`id_product`');
      

      par

      $query->select('DISTINCT p.`id_product`');
      

      Ce bug est également lié à celui-ci: https://bb.enter-solutions.net/topic/1070/1-6-1-0-too-many-tables-mysql-can-only-use-61-tables-in-a-join-backoffice-créer-éditer-un-produit

      posté dans BUG connus 1.6 bug
      doekiaD
      doekia
    • Des modules et des hacks - liste non exhaustive des modules présentant un risque

      Ci-dessous une liste de modules régulièrement testé par les hackeurs - ces modules contiennent ou ont contenu des failles de sécurité.

      Si vous possédez l'un de ces modules et ne savez pas si votre version est corrigé, supprimez le immédiatement. Ne le renommez pas, supprimez le. Peu importe qu'il soit activé ou non, supprimez le. Il vaut mieux perdre une fonctionnalité que de perdre sa boutique. Contactez alors le développeur pour obtenir une version saine.

      Si vous n'avez aucun de ces modules et avez un dédié, vous pouvez également créer un filtre fail2ban afin d'expulser le bot dès la première tentative - ceci vous éloignera des nuisances de ces parasites.
      Une impléméntation fail2ban ici: https://area51.enter-solutions.com/snippets/81

      La liste (non exhaustive):

      yuzu/yuzuCheck.php
      yuzu/yuzuApi.php
      columnadverts/uploadimage.php
      columnadverts/slides/error.php
      vtemslideshow/uploadimage.php
      vtemslideshow/slides/error.php
      realty/include/uploadimage.php
      realty/include/slides/error.php
      realty/evogallery/uploadimage.php
      realty/evogallery/slides/error.php
      realty/evogallery2/uploadimage.php
      realty/evogallery2/slides/error.php
      resaleform/upload.php
      filesupload/error.php
      megaproduct/
      megaproduct/error.php
      soopamobile/uploadimage.php
      soopamobile/slides/error.php
      soopamobile2/uploadimage.php
      soopamobile2/slides/error.php
      soopamobile2/uploadproduct.php
      soopabanners/uploadimage.php
      soopabanners/slides/error.php
      vtermslideshow/uploadimage.php
      vtermslideshow/slides/error.php
      simpleslideshow/uploadimage.php
      simpleslideshow/slides/error.php
      productpageadverts/uploadimage.php
      productpageadverts/slides/error.php
      homepageadvertise/uploadimage.php
      homepageadvertise/slides/error.php
      homepageadvertise2/uploadimage.php
      homepageadvertise2/slides/error.php
      columnadverts2/uploadimage.php
      columnadverts2/slides/error.php
      filesupload/upload.php
      filesupload/uploads/error.php
      jro_homepageadvertise/uploadimage.php
      jro_homepageadvertise/slides/error.php
      jro_homepageadvertise2/uploadimage.php
      jro_homepageadvertise2/slides/error.php
      leosliderlayer/uploadimage.php
      leosliderlayer/slides/error.php
      leosliderlayer/upload_images.php
      vtemskitter/uploadimage.php
      vtemskitter/img/error.php
      additionalproductstabs/file_upload.php
      additionalproductstabs/file_uploads/error.php
      addthisplugin/file_upload.php
      addthisplugin/file_uploads/error.php
      attributewizardpro/file_upload.php
      attributewizardpro/file_uploads/error.php
      attributewizardpro.OLD/file_upload.php
      attributewizardpro.OLD/file_uploads/error.php
      1attributewizardpro/file_upload.php
      1attributewizardpro/file_uploads/error.php
      attributewizardpro_x/file_upload.php
      attributewizardpro_x/file_uploads/error.php
      advancedslider/ajax_advancedsliderUpload.php?action=submitUploadImage%252526id_slide=php
      advancedslider/uploads/error.php
      bamegamenu/ajax_phpcode.php
      cartabandonmentpro/upload.php
      cartabandonmentpro/uploads/error.php
      cartabandonmentproOld/upload.php
      cartabandonmentproOld/uploads/error.php
      videostab/ajax_videostab.php?action=submitUploadVideo%252526id_product=upload
      videostab/uploads/error.php
      fieldvmegamenu/ajax/upload.php
      fieldvmegamenu/uploads/error.php
      orderfiles/ajax/upload.php
      orderfiles/files/error.php
      pk_flexmenu/ajax/upload.php
      pk_flexmenu/uploads/error.php
      pk_flexmenu_old/ajax/upload.php
      pk_flexmenu_old/uploads/error.php
      pk_vertflexmenu/ajax/upload.php
      pk_vertflexmenu/uploads/error.php
      nvn_export_orders/upload.php
      nvn_export_orders/error.php
      tdpsthemeoptionpanel/tdpsthemeoptionpanelAjax.php
      tdpsthemeoptionpanel/upload/error.php
      psmodthemeoptionpanel/psmodthemeoptionpanel_ajax.php
      psmodthemeoptionpanel/upload/error.php
      lib/redactor/file_upload.php
      blocktestimonial/addtestimonial.php
      colorpictures
      explorerpro
      sampledatainstall
      vm_advancedconfigurator
      marketplace/libs/filemanager/dialog.php
      ec_import/upload.php
      vtemskitter/uploadimage.php
      blocktestimonial/addtestimonial.php
      /index.php?fc=module&module=orderfiles&controller=filesmanager
      /index.php?fc=module&module=supercheckout&controller=supercheckout&ajax=1&method=SaveFilesCustomField
      smartprestashopthemeadmin/ajax_smartprestashopthemeadmin.php
      Injection possible depuis plusieurs fichiers du module infobia_properso:
      infobia_properso/admin/upload.php
      infobia_properso/admin/upload_motif.php
      infobia_properso/maquetteajax.php
      infobia_properso/transfert.php
      infobia_properso/transfert2.php
      infobia_properso/transfertjson.php
      infobia_properso/upload.php
      infobia_properso/uploadfile.php
      nvn_excel_import/hayageekupload/php/upload.php
      nvn_excel_import/upload.php
      nvn_excel_import/uploadify.php
      pkfacebook

      Le lien vers l'un de ces bots scanner afin de vous faire prendre conscience de la réalité du risque.
      ici

      posté dans Discussion générale hack
      doekiaD
      doekia
    • [1.5.x],[1.6.x],[1.7.x] Pas de redirection canonical pour page manufacturer & supplier

      Lorsque vous effectuez une redirection /index.php?controller=manufactuer|supplier (sans id), aucune redirection canonique n'est prise en compte.

      Ex:
      https://domain.tld/marques => mène à la liste des manufacturer (marques)
      https://domain.tld/index.php?controller=manufacturer => mène à la liste des manufacturer (marques)

      Aucun redirection canonique n'intervient dans le second cas
      0_1542402459601_SEO&URL - Modifier   manufacturer.png

      Seul le cas lorsqu'un id est fourni est implanté dans les contrôleurs.
      Remplacer dans ManufacturerController.php:

          public function canonicalRedirection($canonicalURL = '')
          {
              if (Tools::getValue('live_edit')) {
                  return;
              }
              if (Validate::isLoadedObject($this->manufacturer)) {
                  parent::canonicalRedirection($this->context->link->getManufacturerLink($this->manufacturer));
              }
          }
      

      par

          public function canonicalRedirection($canonicalURL = '')
          {
              if (Tools::getValue('live_edit')) {
                  return;
              }
              if (!Validate::isLoadedObject($this->manufacturer) && (int)Tools::getValue('id_manufacturer')) {
                  $this->manufacturer = new Manufacturer((int)Tools::getValue('id_manufacturer'), $this->context->language->id);
              }
              if (Validate::isLoadedObject($this->manufacturer)) {
                  return parent::canonicalRedirection($this->context->link->getManufacturerLink($this->manufacturer));
              }
              parent::canonicalRedirection($canonicalURL);
          }
      
      posté dans BUG connus 1.5 1.6 1.7 bug front-office
      doekiaD
      doekia