Après avoir commencer l’internationalisation de mon site, j'ai remarquer que les cookies de connexion ne fonctionnaient pas.
De ce fait j'ai créer une table contenant le SiD d'un utilisateur, afin de l'envoyer en paramètre de valeur pour le cookie.
Voici ce que j'ai fait (en local cela fonctionne excellemment bien, mais pas en production)
Pour la connexion
$expire = time() + 365*24*3600;
/* **** */
$query_id=$cnx->prepare('SELECT user_sid
FROM t_user_sid
WHERE users_id = :users_id');
$query_id->bindValue(':users_id',$users_id, PDO::PARAM_INT);
$query_id->execute() or die ('Erreur SQL');
// Si il n'y a pas de donnée
if ($query_id->rowCount()==0){
if (!isset($_COOKIE['user_SiD'])){
setcookie('user_SiD', $SiD, $expire, '/');
}
$query_sid=$cnx->prepare('INSERT INTO t_user_sid
(users_id, user_sid)
VALUES (:users_id, :user_sid)');
$query_sid->bindValue(':users_id',$users_id, PDO::PARAM_INT);
$query_sid->bindValue(':user_sid',$SiD, PDO::PARAM_STR);
$query_sid->execute() or die ('Erreur SQL!');
$query_sid->CloseCursor();
}
// Si il y a des données
if ($query_id->rowCount()!=0){
$data_id = $query_id->fetch();
$SiD = $data_id['user_sid'];
if (!isset($_COOKIE['user_SiD'])){
setcookie('user_SiD', $SiD, $expire, '/');
}
}
$query_id->CloseCursor();
Pour la déconnexion
if (isset($_COOKIE['lang'])){
setcookie ("lang", '', time() - 3600, '/');
}
if (isset($_COOKIE['user_SiD'])){
setcookie ("user_SiD", '', time() - 3600, '/');
}
Le hic, comme dit la la parenthèse c'est que la création du cookie "user_SiD" ne fonctionne pas en production (celui des langues fonction très bien), et lors de la déconnexion, je ne détruit pas les cookies (y compris celui de la langue), alors qu'en test local, tout fonctionne, et que la version de php du site de prod, est supérieur à celle du développement.Auriez vous une idée du pourquoi du comment?
Merci beaucoup pour votre aide
Cordialement