Utiliser ses cookies Prestashop dans un site externe

Pour ceux qui ne le connaissent pas encore, Prestashop est un CMS orienté e-commerce. Prestashop est certes un très bel outil qui répond à merveille au attente d’un site d’e-commerce, mais qui nécessite fréquemment d’être accompagné par un CMS plus classique dans certains cas (gestion de communauté, blog, etc…).

Dès lors se pose fréquemment ce problème : Comment recevoir les informations du client grâce aux cookies de Prestashop ? Prenons un exemple ou le second CMS (ou un simple script Php) se trouvera dans une sous arborescence type « /blog ».

La 1ere étape consiste à l’inclusion du « moteur » de Prestashop (c’est à dire : l’ensemble de ses classes, et les settings du site). Ceci se fait simplement, via l’inclusion du fichier config/config.inc.php

include("../config/config.inc.php");

Il est ensuite nécessaire de créer un objet « Cookie » Prestashop. Attention de bien passer en paramètre le « ps » si vous désirez recevoir les informations de Prestashop.

$cookie = new Cookie("ps");

Voila, c’est terminé, vous avez ensuite accès aux différents informations (client connecté ? langue de client ? id du client ? nom prénom ? … )

// Par exemple
if ($cookie->isLogged()) {
echo $cookie->id_lang;
echo $cookie->id_customer;
echo $cookie->customer_lastname." ".$cookie->customer_firstname;
}

Si nécessaire il est même possible d’ajouter des donnés dans ce cookie (Attention cette fonction n’accepte pas de array() et il sera donc nécessaire de passer par la function serialize() pour contourner ce problème).

$cookie->__set("nom_de_variable", 999);
$array = array(999, 999, 999)
$cookie->__set("nom_de_variable_array", serialize($array));

Vous pourrez ainsi récupérer ces variables, que ce soit dans Prestashop ou ailleurs!

echo $cookie->nom_de_variable;
print_r(unserialize($cookie->nom_de_variable_array));

Update du 13/09/2010 :
Cette astuce ne fonctionne que si le Prestashop est à la racine et l’autre CMS dans une sous rubrique et non dans l’autre cas (par exemple un Prestashop dans www.exemple.com/boutique/).
Sur son blog David Thomas Baker propose un début de solution pour contourner ce problème.

9 commentaires
  1. eBuildy dit :

    En fait Prestashop met le contenu de la « session » directement dans le cookie !

    Ce contenu est simplement crypté et le nom du cookie est MD5(‘ps’.HOST)

    Donc pour récupérer simplement le contenu, il suffit de corriger le nom, d’importer la classe de décryptage ainsi que les clés et bien sur d’écrite le cookie sur domaine de lecture !

  2. flozz dit :

    Bonjour et merci pour ce tuto. J’ai appris quelque chose aujourd’hui.
    Cependant, j’ai deux questions: dans un wordpress, où doit-on placer ce code? Ensuite, cette technique gère t-elle les sessions entre les deux CMS? Je m’explique: un visiteur lambda s’identifie sur prestashop. Quand il passe sur wp, la session d’authentication est-elle maintenue grâce au code ci-dessus?

  3. SpaceMoO dit :

    Merci pour cet article qui m’a permi de comprendre un peu mieux le fonctionnement des cookies ps.Trés utile!

  4. ubik dit :

    Hello
    Merci pour cette explication, une petite question, le montant du panier est également storé dans les cookies ? comme puis-je le sortir?

  5. Ced dit :

    Bonjour,

    Merci pour le tuto !

    Cependant, cela ne marche pas à tous les coups apparemment, sans vouloir m’avancer …

    Ici, j’ai le cas d’un script indépendant dans un module qui est appelé par une animation flash. Dans ce script, j’ai l’instanciation de l’objet cookie tel que décrite ci-dessus :
    $cookie = new Cookie(« ps »);
    $cookie->test_value = ‘ceci est un test’;

    Cependant, lors de l’appel du controller après (ProductController), cette nouvelle valeur n’est pas disponible …

    Si quelqu’un a une idée en passant

    Merci et bravo pour l’explication claire

  6. Frayou Badis dit :

    Bonjour tout le monde,
    Merci pour ce tuto, et merci pour vos participations.

    En faite j’ai un problème que j’essaie de résoudre il y a une semaine, mais sans résultats.

    J’utilise prestashop 1.4.6.2, je voudrais savoir comment est-il possible d’utiliser la cookie prestashop qui se trouve dans mon site (www.tunisiadev.com/) dans un 2éme site (prestashop aussi) qui est installé dans une répertoire sous la répertoire mère (www.tunisiadev.com/2/)

    que doit-je modifier exactement ?

    Merci

  7. bidamaur dit :

    Tou simplemen découvre les merveilles de prestashop 1.6 qui offre la possibilité de faire un multiboutique avec partage ou nom des donnes tel qu tu le demande. Une base de donnée plusieurs boutique

  8. bidamaur dit :

    Mais j’aie un gros problème .j’aimerais me l’offre via ma page externe sur mon site prestashop . Je sais que l’on devrait verifier l’existence des donnees puis enregistrer les cookis mais je ne connais comment faire ses vérifications.
    Je suis novice dans ce domaine merci pour votre aide

  9. bidamaur dit :

    J’aimerrai me logger dans mon site prestashop 1.6 via ma page créé manuelement en php…… Le souci est que je ne sais pas comment m’y prendre pour vérifier les données ainsi que l’enregistrement des cookies.
    Je développe un site très complexe qui me de

Laisser une réponse