Comment ajouter reCaptcha à Prestatshop en 3 étapes

Rédigé par chris - - Aucun commentaire

Prestashop est un des logiciel ecommerce les plus utilisé mais le formulaire de contact ne contient pas de protection contre le spam. Vous pouvez bien sûr ajouter un plugin souvent payant. Mais ici je vais vous donner une façon de faire gratuite en 3 étapes et 30 minutes maximum. Ce tuto a été fait avec prestashop 1.6 si vous avez une version 1.7 j'aimerais avoir vos retours sur ce qui change.


1 Créer votre compte reCAPTCHA si vous n'en avez pas

https://www.google.com/recaptcha/intro/index.html

J'ai choisis reCaptcha2 Notez bien la clé et ajouter votre domaine voir aussi votre domaine de test

2  Changer le formulaire contact-form.tpl

C'est le formulaire de contact. Il devrait se trouver dans le thème.

Cherchez la fin du formulaire le code suivant (c'est le bouton principal)
 <div class="submit"> 
<button type="submit" name="submitMessage" id="submitMessage" class="button"><span>
{l s='Send'}
<i class="icon-chevron-right right"></i></span>
</button>
</div>
</form>
Juste avant copier les lignes suivantes et changer le mot key par votre clé
 <script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="key"></div>
Cela devrait ressembler à cela
<div> <script src='https://www.google.com/recaptcha/api.js'></script>
 <div class="g-recaptcha" data-sitekey="key"></div>
</div>
 <div class="submit">
 <button type="submit" name="submitMessage" id="submitMessage" class="button"><span>
{l s='Send'}<i class="icon-chevron-right right"></i></span>
</button>
 </div>
</form>

3 Modifier le controleur ContactControler.php

Ce source devrait se trouver dans \override\controllers\front si ce n'est pas le cas copier le depuis \controllers\front.
Cherchez la deuxième fonction  postProcess() et ajoutez les lignes suivante. C'est le test si le captcha est bon ou non

  if (Tools::isSubmit('submitMessage')) {
 $extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
$file_attachment = Tools::fileAttachment('fileUpload');
$message = Tools::getValue('message');
// Html entities is not usefull, iscleanHtml check there is no bad html tags.
$id_order = (int)$this->getOrder();
if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from)) {
$this->errors[] = Tools::displayError('Invalid email address.');
// ajoutez ces deux lignes qui sont en gras 
} elseif (!($gcaptcha = (int)(Tools::getValue('g-recaptcha-response')))) {
$this->errors[] = Tools::displayError('Captcha error');
// jusqu'ici

Voila c'est fait. Vous testez et envoyez vos sources

Autres tutos

Mot de passe mysql perdu

Rédigé par chris - - Aucun commentaire

Comment faire quand on a perdu son mot de passe root de mysql ? Voici un tuto pour vous sortir d'affaire à condition que d'avoir un accés en ligne de commande.

Il faut donc avoir un accés root. Si vous êtes sous ubunto ajouter sudo devant les commandes

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD(”votrenouveaumotdepasse”) where user=’root’;
mysql> flush privileges;
mysql> quit
voila, vous pouvez encore éventuellement arrêter et relancer mysql
/etc/init.d/mysql stop
/etc/init.d/mysql start
Autres tutos

Grocery crud et codeigniter

Rédigé par chris - - Aucun commentaire

Voila longtemps que je ne me suis pas remis à la programmation php. Ce langage de programmation avait l'avantage d'être trés accessible à tous. Mais il était trop permissif et présentait des failles de sécurités. Des framework sont apparus pour faciliter la tâches de programmeurs. Je m'étais initié à CodeIgniter qui il y a quelques années (2010 déjà). J'avais choisis ce framework car il était accessible, bien documenté et avait une bonne communauté. De plus il permettait de s'installer sur des serveurs mutualisés. Il suivait la conception MVC Modèle Vue Controleur pour bien séparer l'affichage du moteur.

Ce framework a eu une période de flotement et a un peu perdu de sa popularité car la société qui l'éditait (EllisLab) a arrété son développement. Et certains on douté sur la pérénité de ce framework. En 2014 CodeIgniter a trouvé un repreneur :  British Columbia Institute of Technology. Sa maintenance et son développement continuent.

La version stable actuelle de CodeIgniter et la version 3.1.4 Cette version reçoit actuellement uniquement des corrections. Une nouvelle version est en développement pour être plus en phase avec ce qu'il se pratique aujourd'hui. Son développement avance bien mais n'est pas encore prête pour une mise en production. Pour suivre son développement voir la page.

Travailler avec un framework est soit disant plus rapide mais c'est sans compter sur son apprentissage. Je me pose la question sur l'avantage de la rapidité même une fois. L'avantage est ailleur. Le code est plus propre est plus sûr. Mais le but de cet article n'est pas de parler d'un framework ni de CodeIgniter mais de Grocery Crud.

Create a full stable CRUD in 30 seconds!


L'idée de Grocery Crud est d'utiliser CodeIgniter et de nous aider pour créer des gestions de tables (création, modification et suppression). Créer une gestion de table en 30 secondes. Et là on gagne du temps.
 J'ai testé et oui ça marche.

Voici le lien sur la documentation si vous voulez aller plus loin

Installation

On considère que vous avez déjà installé CodeIgniter. L'installation est très simple. Vous devez juste copier tous les fichiers dans votre projet et vous serez prêt pour utiliser Grocery CRUD.

Configuration

Si vous ne l'avez pas déjà fait, allez dans le fichier application/config/database.php et compléter les informations pour la base de donnée
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '1234'; //Pretty secure don't you think?
$db['default']['database'] = 'my_new_cms';

Exemple

Voici maintenant un exemple tout simple de gestion de client

Nous allons créé manuellement la table pour en faire la saisie. Vous pourrez ensuite changer avec votre table.


 
CREATE TABLE IF NOT EXISTS `employees` (
  `employeeNumber` int(11) NOT NULL AUTO_INCREMENT,
  `lastName` varchar(50) NOT NULL,
  `firstName` varchar(50) NOT NULL,
  `extension` varchar(10) NOT NULL,
  `email` varchar(100) NOT NULL,
  `officeCode` varchar(10) NOT NULL,
  `file_url` varchar(250) CHARACTER SET utf8 NOT NULL,
  `jobTitle` varchar(50) NOT NULL,
  PRIMARY KEY (`employeeNumber`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1703 ;
 
 
INSERT INTO `employees` (`employeeNumber`, `lastName`, `firstName`, `extension`, `email`, `officeCode`, `file_url`, `jobTitle`) VALUES
(1002, 'Murphy', 'Diane', 'x5800', 'dmurphy@classicmodelcars.com', '1', '', 'President'),
(1056, 'Patterson', 'Mary', 'x4611', 'mpatterso@classicmodelcars.com', '1', '', 'VP Sales'),
(1076, 'Firrelli', 'Jeff', 'x9273', 'jfirrelli@classicmodelcars.com', '1', '', 'VP Marketing'),
(1088, 'Patterson', 'William', 'x4871', 'wpatterson@classicmodelcars.com', '6', '', 'Sales Manager (APAC)'),
(1102, 'Bondur', 'Gerard', 'x5408', 'gbondur@classicmodelcars.com', '4', 'pdftest.pdf', 'Sale Manager (EMEA)'),
(1143, 'Bow', 'Anthony', 'x5428', 'abow@classicmodelcars.com', '1', '', 'Sales Manager (NA)'),
(1165, 'Jennings', 'Leslie', 'x3291', 'ljennings@classicmodelcars.com', '1', '', 'Sales Rep'));

On va maintenant créer deux sources. Si vous avez quelque notion de CodeIgniter cela aide.

Le controleur : (application/controlleurs/Main.php)
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class Main extends CI_Controller {
 
function __construct()
{
        parent::__construct();
 
/* Standard Libraries of codeigniter are required */
$this->load->database();
$this->load->helper('url');
/* ------------------ */ 
 
$this->load->library('grocery_CRUD');
 
}
 
public function index()
{
echo "<h1>affichage par défaut</h1>";//Just an example to ensure that we get into the function
die();
}
 
public function employees()
{
$crud = new grocery_CRUD();
$crud->set_table('employees');
$output = $crud->render();
 
$this->_example_output($output);        
}
 
function _example_output($output = null)
 
{
$this->load->view('template.php',$output);    
}
}
 
/* End of file Main.php */
/* Location: ./application/controllers/Main.php */


Et le source vue (application/views/template.php)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
 
<?php 
foreach($css_files as $file): ?>
    <link type="text/css" rel="stylesheet" href="<?php echo $file; ?>" />
 
<?php endforeach; ?>
<?php foreach($js_files as $file): ?>
 
    <script src="<?php echo $file; ?>"></script>
<?php endforeach; ?>
 
<style type='text/css'>
body
{
    font-family: Arial;
    font-size: 14px;
}
a {
    color: blue;
    text-decoration: none;
    font-size: 14px;
}
a:hover
{
    text-decoration: underline;
}
</style>
</head>
<body>
<!-- Beginning header -->

<!-- End of header-->
    <div style='height:20px;'></div>  
    <div>
<?php echo $output; ?>
 
    </div>
<!-- Beginning footer -->
<div>Footer</div>
<!-- End of Footer -->
</body>
</html>

Si tout est bon on devrait voir sur la page

http://domaine/projet/index.php/main/employes

En résumé avec quelques lignes de codes on peut gérer une table.

public function employees()
{
$crud = new grocery_CRUD();
$crud->set_table('employees');
$output = $crud->render();
 
$this->_example_output($output);        
}
 
function _example_output($output = null)
 
{
$this->load->view('template.php',$output);    
}

Installer linux pas si simple

Rédigé par chris - - 2 commentaires
instaler ubuntu sur uefi

Préambule

On lit ici et là que linux est trés simple à installer que n'importe qui peut le faire et même devrait le faire. On ne trouve pas souvent des ordinateurs avec linux préinstallé mais la plupart du temps il y a windows. Cette situation existe depuis longtemps et il n'y a que les ordiphones et les tablettes qui changent cette situation.

Une expérience

Voici une expérience. Dernièrement, j'ai acheté un nouvel ordinateur (Lenovo 300-201sh i5 ) en replacement de l'ancien. Lisez l'article. Le but est d'avoir un double système windows et linux . Je ne veux pas totalement supprimer windows car cela peut être utile et je l'ai acheté avec mon ordi et pour une question de principe, j'aimerais avoir le choix.

L'ordinateur a deux disques un SSD de 128G et un HD classique de 1T. Le système est installé sur le SSD et le gros disque est prévu pour les donnés.

Aprés avoir fait des sauvegardes , installé linux sur un clé usb j'ai opté pour installer linux sur une partition du gros disque. La raison est que le disque de 128G peut devenir trop petit car windows demande beaucoup de place.

Je mets la clé usb dans la machine et démarre l'ordinateur. Il boot automatiquement sur la clé usb. C'est déjà bien. Quelques minutes aprés ubuntu mate est bien fonctionnelle et je décide de l'installer. Je crée au préalable une nouvelle partition pour le système et une autre pour le home. L'installation se passe bien si ce n'est qu'il y a quelques messages d'avertissement peu compréhensible. Ceux-ci auraient du me mettre en garde sur des problèmes à venir.

C'est la première fois que je fait une installation sur deux disques séparés. Je pensais que le grub allait bien gérer tout cela et me laisser le choix de lancer soit windows soit linux. Mais rien ne se passe comme prévu. Au lancement windows se lance automatiquement.

Que faire ? Peut être grub ne s'est pas bien installé ? Tatonnement ... Lancement du linux depuis la clé usb avec boot-repair ... Toujours pareil. Je cherche configurer le bios. F12 et j'ai le choix. Je peux lancer ubuntu ou windows.

Conclusion mon ordinateur n'a pas de bios mais UEFI le remplacement du BIOS. Je peux lancer ubuntu uniquement en faisant F12. Si je manque cela j'ai automatiquement windows.

Le tatonnement continue avec la configuration de UEFI. Toujours pareil. Puis une idée. Si je débranche le SSD, peut être va-t-il démarer seul sur le HD sur linux. Il me donne une erreur. Je décide de réinstaller tout à nouveau. Et la ça marche.

A ce stade j'ai un linux qui se lance bien mais pas de windows. Tatonnement encore en rebranchant le SSD et ...

UEFI

UEFI (Unified Extensible Firmware Interface) définit un logiciel intermédiaire entre le micrologiciel (firmware) et le système d'exploitation (OS) d'un ordinateur. Cette interface succède sur certaines cartes-mères au BIOS. Elle fait suite à EFI (Extensible Firmware Interface), conçue par Intel. L'UEFI offre quelques avantages sur le BIOS : fonctionnalités réseau en standard, interface graphique de bonne résolution, gestion intégrée d'installations multiples de systèmes d’exploitation et affranchissement de la limite des disques à 2,2 To.

L'inconvénient et qu'une installation linux en double boot n'est pas si simple que sur un BIOS traditionnel.

Conclusion


A ce jour j'ai ubuntu qui se lance par défaut et je peux faire F12 pour avoir un menu et lancer windows si je veux. C'est mieux que rien étant donné que je n'ai pas besoin de windows trop souvent.

Et vous avez vous expérimenté une installation en dual boot sur un ordinateur récent avec UEFI ? Quel est votre expérience ?


Comment faire une sauvegarde système de windows 10 ?

Comment installer linux sur une clé USB ?

Installer linux pas si simple 
Fil RSS des articles de cette catégorie