Créer des cookies sur un serveur Gandi AI
Créer des cookies en php sur un serveur Gandi AI version 1.2 peut ne pas fonctionner, voici la méthode à utiliser afin que tout se passe bien.
Comme toujours, lorsqu’on développe localement, tout fonctionne généralement très bien. Dès que l’on met en production son code, on a parfois des surprises.
Chaque serveur a sa configuration et son fonctionnement propre, et il n’est pas toujours simple de reproduire ces environnement sur son ordinateur personnel. Et ce qui peut arriver entre autre avec un serveur sur Gandi, comme un Gandi AI 1.2, par exemple.
Généralement, on créer des cookies en php avec la fonction setcookie qui est construite comme cela :
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
Ce qui peut donner :
setcookie("annee", date("Y"), time()+3600, "/", "codus.acyclique.com", 1);
Si on prend le code que je viens de nommer et que je le met sur un serveur Gandi AI, j’ai de forte chance de pas avoir de cookie de créé.
La solution a ce problème a été nommé dans le commentaire 74401 de la page setcookie de php.net et est plutôt simple.
function set_cookie($Name, $Value = '', $MaxAge = 0, $Path = '', $Domain = '', $Secure = false, $HTTPOnly = false) { header('Set-Cookie: ' . rawurlencode($Name) . '=' . rawurlencode($Value) . (empty($MaxAge) ? '' : '; Max-Age=' . $MaxAge) . (empty($Path) ? '' : '; path=' . $Path) . (empty($Domain) ? '' : '; domain=' . $Domain) . (!$Secure ? '' : '; secure') . (!$HTTPOnly ? '' : '; HttpOnly'), false); }
Une fois cette fonctionne mise en place, il nous l’appeler avec les mêmes paramètres que la fonction setcookie.
set_cookie("annee", date("Y"), time()+3600, "/", "codus.acyclique.com", 1);
Et là, nous sommes certains que tout fonctionne sur nos serveurs Gandi.