r.guillaume Posted September 22, 2010 Share Posted September 22, 2010 MAJ: Correction des lignes non clicables. Si le parametre mylink est appliqué à la colonne, la celulle n'est pas clicable, sinon, elle renvoie sur le lien par defaut.-ajout d'un lien "localiser" qui redirige sur la localisation de l'ip sur le site "localiser-ip.com"Bonjour,Suite à la création de panier incessante par des supposés BOT qui n'en ont rien à f.... du "robots.txt", j'ai édité plusieurs fichiers pour arriver à ce résultat:Image d'apercuPréambule:L'enregistrement de l'adresse IP est interdite à condition de le notifier clairement à l'internaute et de déclarer cet enregistrement à la CNIL:http://www.cnil.fr/vos-responsabilites/declarer-a-la-cnil/declarer-un-fichier/declaration/mon-secteur-dactivite/Commençons:Étant donné que nous supprimerons certaines portions de code, les lignes des tableaux du Back-office ne seront plus directement cliquables. Il faudra vous référer aux images d'actions à droite des tableaux. La vue et l'edition.Etant donné que des modifications sont apportées au cœur de PS, notamment aux classes ==>SAUVEGARDEZ VOS FICHIERS ORIGINAUX AINSI QUE LA BASE DE DONNEES. On est jamais trop prudent.Modification de la base de données:Ajouter un champs "ip_adress" de type varchar 30 dans la table "ps_cart" (par defaut)Modification de la création d'un panier:Dans ./classes/Cart.phpremplacer: protected $fieldsValidate = array('id_address_delivery' => 'isUnsignedId', 'id_address_invoice' => 'isUnsignedId', 'id_currency' => 'isUnsignedId', 'id_customer' => 'isUnsignedId', 'id_guest' => 'isUnsignedId', 'id_lang' => 'isUnsignedId', 'id_carrier' => 'isUnsignedId', 'recyclable' => 'isBool', 'gift' => 'isBool', 'gift_message' => 'isMessage'); par: protected $fieldsValidate = array('id_address_delivery' => 'isUnsignedId', 'id_address_invoice' => 'isUnsignedId', 'id_currency' => 'isUnsignedId', 'id_customer' => 'isUnsignedId', 'id_guest' => 'isUnsignedId', 'id_lang' => 'isUnsignedId', 'id_carrier' => 'isUnsignedId', 'recyclable' => 'isBool', 'gift' => 'isBool', 'gift_message' => 'isMessage', 'ip_adress' => 'isCleanHtml');//rajout de ip_adress => isCleanHtml explication: Avant ajout dans la base de données, Ps valide les données. On lui indique notre variable ip_adress qui est "isCleanhtml" c'est à dire qu'elle ne contient pas de code html.Toujours dans Cart.php:Ajouter une ligne: $fields['id_address_delivery'] = intval($this->id_address_delivery); $fields['id_address_invoice'] = intval($this->id_address_invoice); $fields['id_currency'] = intval($this->id_currency); $fields['id_customer'] = intval($this->id_customer); $fields['id_guest'] = intval($this->id_guest); $fields['id_lang'] = intval($this->id_lang); $fields['id_carrier'] = intval($this->id_carrier); $fields['recyclable'] = intval($this->recyclable); $fields['gift'] = intval($this->gift); $fields['gift_message'] = pSQL($this->gift_message); $fields['ip_adress'] = pSQL($_SERVER['REMOTE_ADDR']);// ajout de cette ligne $fields['date_add'] = pSQL($this->date_add); $fields['date_upd'] = pSQL($this->date_upd); Explication: on ajout le contenu de la variable ip_adress par la variable serveur REMOTE_ADDRModification de adminTab:Ligne 1182 remplacer: if (!isset($params['position'])) echo ' onclick="document.location = \''.$currentIndex.'&'.$this->identifier.'='.$id.($this->view? '&view;' : '&update;').$this->table.'&token;='.($token!=NULL ? $token : $this->token).'\'">'.(isset($params['prefix']) ? $params['prefix'] : ''); else echo '>'; par: (correction ici) if(!isset($params['position'])){ if(isset($params['myLink'])){ echo '>bot? / Localiser -> '; }else{ echo ' onclick="document.location = \''.$currentIndex.'&'.$this->identifier.'='.$id.($this->view? '&view;' : '&update;').$this->table.'&token;='.($token!=NULL ? $token : $this->token).'\'">'.(isset($params['prefix']) ? $params['prefix'] : ''); } }else{ echo '>'; if(isset($params['myLink'])){ echo 'bot? / Localiser -> '; } } Explication: Par défaut, la cellule td a un onclick qui redirige vers le panier. Hors un lien à droite avec une loupe permet de le visualiser. DONC, on vire ce lien sur td qui va nous embeter lors que l'on fait le lien pour l'affichage de "bot?" Link to comment Share on other sites More sharing options...
r.guillaume Posted September 22, 2010 Author Share Posted September 22, 2010 Op, on continue.Modification de ./admin/tabs/adminCarts.phpremplacer: $this->fieldsDisplay = array( 'id_cart' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), 'customer' => array('title' => $this->l('Customer'), 'width' => 80, 'filter_key' => 'c!lastname'), 'total' => array('title' => $this->l('Total'), 'callback' => 'getTotalCart', 'orderby' => false, 'search' => false, 'width' => 50, 'align' => 'right', 'prefix' => '', 'suffix' => '', 'currency' => true), 'carrier' => array('title' => $this->l('Carrier'), 'width' => 25, 'align' => 'center', 'callback' => 'replaceZeroByShopName'), 'date_add' => array('title' => $this->l('Date'), 'width' => 120, 'align' => 'left', 'type' => 'datetime', 'filter_key' => 'a!date_add')); par: $this->fieldsDisplay = array( 'id_cart' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25), 'customer' => array('title' => $this->l('Customer'), 'width' => 80, 'filter_key' => 'c!lastname'), 'total' => array('title' => $this->l('Total'), 'callback' => 'getTotalCart', 'orderby' => false, 'search' => false, 'width' => 50, 'align' => 'right', 'prefix' => '', 'suffix' => '', 'currency' => true), 'carrier' => array('title' => $this->l('Carrier'), 'width' => 25, 'align' => 'center', 'callback' => 'replaceZeroByShopName'), 'date_add' => array('title' => $this->l('Date'), 'width' => 120, 'align' => 'left', 'type' => 'datetime', 'filter_key' => 'a!date_add'), 'ip_adress' => array('title' => $this->l('Adresse ip'), 'myLink' => true, 'search' => false, 'align' => 'left', 'type' => 'text', 'width' => 150, 'filter_key' => 'c!ip_adress')); explication: On a rajouté la colonne "Adresse ip". Link to comment Share on other sites More sharing options...
r.guillaume Posted September 22, 2010 Author Share Posted September 22, 2010 Utilisation:Lors d'un clic sur "bot?" vous êtes redirigé sur un site qui recence les ips en relations avec les bots.Vous tombez alors sur une page avec ce genre de ligne 70.238.167.28 Bot Mozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/spider.html;'>http://www.80legs.com/spider.html;) Gecko/2008032620 Si vous cliquez dessus la page suivante affiche normalement à gauche:User Agent Vitals:Bot or Browser:This User Agent is a known bot. This User Agent is a Bot!First Seen On:7/21/2009 1:12:00 PMURL:http://www.80legs.com/spider.htmlRelated Categories:All Bots Voilà, vous devriez savoir si c'est un bot ou pas. Sous réserve étant donné que le site ne connait pas toutes les adresses ip de bot... Ensuite à vous aussi de voir. Si une ip n'est pas répertoriée mais qu'elle fait 3 paniers en 10secondes, cela va de soit que ce n'est pas un utilisateur....Pour le reste, je vous invite à bloquer l'ip par htaccess:http://www.prestashop.com/forums/viewthread/24947Cordialement, Guillaume.(toute critique est bonne à prendre) Link to comment Share on other sites More sharing options...
phil46 Posted September 22, 2010 Share Posted September 22, 2010 Bonjour,C'est vraiment sympa de faire un tuto la dessus car c'est vraiment un prob récurant, je dirais même mieux gavant alors je vais tester çà incésament sous peuMerci à toi et bon ventA+Phil Did Link to comment Share on other sites More sharing options...
r.guillaume Posted September 23, 2010 Author Share Posted September 23, 2010 MAJ, les lignes des tableaux restent à présent clicable sauf celles de la colonne qui a pour parametre "myLink" => true; Link to comment Share on other sites More sharing options...
r.guillaume Posted September 23, 2010 Author Share Posted September 23, 2010 MAJ, Ajout d'un lien "Localiser" qui redirige sur "localiser-ip.com" Link to comment Share on other sites More sharing options...
CoYaN Posted November 4, 2010 Share Posted November 4, 2010 Bonjour,Il y a un bug...Lorsque je remplis le panier en étant identifié, il y a pas d'incrémentation dans le BO/Panier.Cela fonctionne juste lorsque le client n'est pas identifié.Cordialement Link to comment Share on other sites More sharing options...
Baka Posted April 24, 2011 Share Posted April 24, 2011 Bonjour , cette manip est elle valable avec la 1.4?merci Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now