Jump to content

Confidentialité après connexion !


Recommended Posts

Bonsoir à tous,

Si un client ne se déconnecte pas de son compte alors son espace privé s’affiche lors de sa prochaine visite (normal), mais ceci pose un gros problème si un autre client utilise le même ordinateur et donc se retrouve directement sur l’espace privé du premier client ! (pas très confidentiel)…

Comment résoudre ce problème sans obliger bien sûr le premier client à se déconnecter manuellement après sa visite.

Merci pour les informations et bonne soirée !

Link to comment
Share on other sites

Bonjour,

Tu soulèves la tout simplement le problème d'utilisation privé dans des lieux publics.

Pas de solution si ce n'est que de désactiver les cookies sur le navigateur du poste en question. (voir une configuration par site / domaine)

A+

Link to comment
Share on other sites

Merci pour ta réponse,

En fait, j’ai intégré Prestashop à mon site déjà existant et l’accès à cet « espace vente » se fait obligatoirement par un espace membre sécurisé, avec déconnexion manuelle et automatique au bout de quelques minutes, je pensais donc profiter de ce principe pour détruire automatiquement (ou lors d’une déconnexion manuelle) les cookies de connexion Prestashop, non ?

Problème : Quels sont les cookies à détruire et surtouts comment en PHP…

Merci pour les réponses
@+

Link to comment
Share on other sites

Salut,

A priori un cookie prestashop dure 20 jours. ( 1728000 secondes )

On trouve cette valeur dans le constructeur de la classe cookie dans /classes/Cokkie.php

   function __construct($name, $path = '', $expire = NULL)
   {
       $this->_content = array();
       $this->_expire = isset($expire) ? intval($expire) : (time() + 1728000);        // <-------- ici
       $this->_name = md5($name._COOKIE_KEY_);
       $this->_path = trim(__PS_BASE_URI__.$path, '/\\').'/';
       if ($this->_path{0} != '/') $this->_path = '/'.$this->_path;
       $this->_path = rawurlencode($this->_path);
       $this->_path = str_replace('/', '/', $this->_path);
       $this->_path = str_replace('~', '~', $this->_path);
       $this->_key = _COOKIE_KEY_;
       $this->_iv = _COOKIE_IV_;
       $this->_domain = $this->getDomain();
       $this->_bf = new Blowfish($this->_key, $this->_iv);
       $this->update();
   }


Ce que je propose d'une manière de facilité de remplacer ce code par:

   function __construct($name, $path = '', $expire = NULL)
   {
       $this->_content = array();
       $this->_expire = isset($expire) ? intval($expire) : (time() + __PS_COOKY_TIME__);        // <-------- ici
       $this->_name = md5($name._COOKIE_KEY_);
       $this->_path = trim(__PS_BASE_URI__.$path, '/\\').'/';
       if ($this->_path{0} != '/') $this->_path = '/'.$this->_path;
       $this->_path = rawurlencode($this->_path);
       $this->_path = str_replace('/', '/', $this->_path);
       $this->_path = str_replace('~', '~', $this->_path);
       $this->_key = _COOKIE_KEY_;
       $this->_iv = _COOKIE_IV_;
       $this->_domain = $this->getDomain();
       $this->_bf = new Blowfish($this->_key, $this->_iv);
       $this->update();
   }


__PS_COOKY_TIME__ est une constante que l'on va définir dans le fichier de config, dans /config/config.inc.php.

En dessous de

/* Improve PHP configuration to prevent issues */
@ini_set('display_errors', 'on');
@ini_set('memory_limit', '128M');
@ini_set('upload_max_filesize', '100M');
@ini_set('default_charset', 'utf-8');


ajouter:

$cooky_heure = 12;
define('__PS_COOKY_TIME__',  $cooky_heure*3600);



@++

Link to comment
Share on other sites

Bonsoir à tous et à toutes,

Oui mais…… cette solution détruit effectivement le cookie 12 heures après l’ouverture de mon espace vente (prestashop), non ?

Je cherche plus une solution qui le détruirait lors de la déconnexion de mes client de leur espace membre, donc un bout de script implanter à la fin de ma page « delogue.php »

J’ai bien trouvé la fonction setcookie que je ne sais pas utiliser (pour l’instant…).

Peut-être un truc comme ça => Détruire un cookie, en le vidant...

<? setcookie("nom du cookie à détruire"); ?>



Voila, en tout cas, merci pour cette réponse
@+

PS/ quel est le nom donner à ce cookie (prestashop) ?

Link to comment
Share on other sites

Bonjour Cédric,

J’ai ajouté le code que tu m’as donné à la fin de ma page « delogue.php », désolé, mais ça ne fonctionne pas.
Les cookies Prestashop sont toujours présents après la déconnexion de mon espace membre…

Bonne jounée !
@+

J’ai testé avec les deux sources :

<?php
// Destruction des cookies
global $cookie;
$cookie->mylogout();
?>



ainsi que :

<?php
// Destruction des cookies
$cooky = new Cookie();
$cooky->mylogout();
?>

Link to comment
Share on other sites

Salut,

J'ai relu ta problèmatique... en fait, ce n'est pas un problème Prestashop.
Là, où c'est bizarre, c'est que à l'origine, Prestashop marche très bien pour la destruction de son cookie lors du logout.

Je viens de voir qu'il existe aussi Cookie::logout();

Mes questions:
1) Charges-tu l'environnement Prestashop dans ta page logout.php ?
2) Si tu initialises pas Presta comme il faut, il faut créer un cookie avec le paramètre 'ps'
3) Essayer plutot logout() que mylogout()

$cheminPresta = 'chemin de prestashop';
include($cheminPresta.'/config/config.inc.php');
include($cheminPresta.'/init.php');
$cooky = new Cookie('ps');
$cooky->logout();



@++

Link to comment
Share on other sites

Bonjour Cédric,

Comme tu le dis, ce n’est absolument pas un problème Prestashop. La déconnexion via Prestashop marche effectivement très bien et détruit bien son propre cookie, mais je cherche une solution pour que cela marche aussi lors de la déconnexion de mon propre espace client.J’essaye juste de faire cohabiter au mieux Prestashop sur mon site existant.
Sur ma boutique Prestashop, j’ai placé un lien qui ramène mes clients dans leur propre espace client, sur ce même espace client se trouve un bouton Déconnexion (qui revoit donc sur la page delogue .php) et c’est dans cette page que devrai se trouver la solution pour détruire le cookie Prestashop, enfin c’est comme ça que je le voyais...

Je pense que l’on peut détruire un cookie avec un script placé dans n'importe quelle page de l’arborescence du site.

Ma page delogue.php est placée dans un des dossiers de mon site et j’ai placé Prestashop dans un autre dossier bien à lui. Ma page delogue.php ne contient absolument rien venant de Prestashop.

« Quand tu parles de ma page logout.php, tu veux sans doute parler de ma page delogue.php ? »

Donc,
Effectivement, l’environnement Prestashop n’est pas chargé dans ma page delogue.php
(comment charger cet environnement ?)

J’ai testé ton script que j’ai intégré dans ma page delogue.php, ça ne marche pas…

Le paramètre ‘ps’ doit t’il être remplacé par quoi ? (paramètre ‘ps’ = un paramètre de Prestashop ?)

Voici ce que j’ai fait :

<?php
// Destruction du cookie Prestashop
$cheminPresta = '../espace_client';
include($cheminPresta.'/config/config.inc.php');
include($cheminPresta.'/init.php');
$cooky = new Cookie('ps');
$cooky->logout();
?>



@+ et encore merci pour ton aide

Link to comment
Share on other sites

Reeeeeeee,

Désolé… je me suis planté ! ce n’est pas « espace_client » dans la variable $cheminPresta mais « espace_vente » (c'est le nom du dossier ou ce trouve Prestashop...)

Donc :

<?php
// Destruction du cookie Prestashop
$cheminPresta = '../espace_vente';
include($cheminPresta.'/config/config.inc.php');
include($cheminPresta.'/init.php');
$cooky = new Cookie('ps');
$cooky->logout();
?>

Link to comment
Share on other sites

  • 2 weeks later...

Bon, j'ai trouvé la ligne qui fonctionne:

echo "SetCookie: ".((setcookie("12a6f7304ace817d415ccc8e304f6b48", 0, time()-3600, '/', '.mondomaine.com'))?"ok":"nok")."
";



biensur là, c'est pour tracer, il faut garder que le setcookie.
il faut que tu remplaces la valeur "12a6f7304ace817d415ccc8e304f6b48" par la valeur correcte. C'est plutot aléatoire, je conseille de tout mettre dans une boucle et de tout supprimer:

foreach($_COOKIE as $k=>$v) {
setcookie($k, 0, time()-3600, '/', '.mondomaine.com');
}



et de bien adapter le mondomaine.com et le chemin utilisé par ton cookie.
(pour moi c'est '/')

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...