J'ai actuellement un script PHP qui définit le cookie sametime comme suit:
session_set_cookie_params($cookie_timeout, $cookieParams["path"], $cookie_domain, $session_secure, $cookie_httponly, $cookie_samesite);
Je veux ajouter samesite = "Lax" à la déclaration ci-dessus en ajoutant un paramètre supplémentaire où ($ cookie_samesite = "Lax")
session_set_cookie_params($cookie_timeout, $cookieParams["path"], $cookie_domain, $session_secure, $cookie_httponly);
La nouvelle sortie de l'instruction ressemblerait à
1800, /, ".vasports.com.au", 1, 1, "Lax"
Est-ce le format correct pour le paramètre du même site?
REMARQUE: je n'ai pas encore installé PHP7.3. Par conséquent, je ne peux pas tester cela correctement. Et j'ai fait référence à PHP doco pour "session_set_cookie_params". J'ai aussi vérifié
3 Réponses :
Après quelques recherches supplémentaires ...
set-cookie: ssid=b930bc608a911781f459a4f46b2c513d; expires=Wed, 16-Oct-2019 10:48:49 GMT; Max-Age=1800; path=/; secure; HttpOnly; SameSite=Lax
Vérifiez votre en-tête 'set-cookie:' et vous devriez maintenant voir le texte 'SameSite = Lax' à la fin comme ceci.
$cookieParams = session_get_cookie_params(); $cookieParams[samesite] = "Lax"; session_set_cookie_params($cookieParams);
Depuis PHP 7.3, vous pouvez lancer un tableau d'options dans set_cookie_params qui prend en charge SameSite.
session_set_cookie_params([ 'lifetime' => $cookie_timeout, 'path' => '/;SameSite=none', // <-- this way! 'domain' => $cookie_domain, 'secure' => $session_secure, 'httponly' => $cookie_httponly, 'samesite' => 'Lax' ]);
Sur PHP <7.3, vous pouvez ajouter le paramètre SameSite en l'ajoutant dans le paramètre "path".
session_set_cookie_params([ 'lifetime' => $cookie_timeout, 'path' => '/', 'domain' => $cookie_domain, 'secure' => $session_secure, 'httponly' => $cookie_httponly, 'samesite' => 'Lax' ]);
il a déclaré qu'il n'avait pas la version 7.3, il cherche donc une réponse dans une autre version précédente
@nbk Non, il a dit qu'il était incapable de le tester car 7.3 n'était pas encore installé. En dessous de 7.3, ce n'est pas possible via les paramètres de cookie, vous devez alors changer l'en-tête. De plus, c'est la page sur laquelle j'ai atterri après une recherche, donc cela peut aussi être pour d'autres et obtenir d'abord les paramètres de cookie pour les redéfinir, c'est une surcharge supplémentaire. Je pense que c'est la meilleure méthode pour 7.3+ atm.
C'est la réponse dont j'avais besoin. Mais j'ai aussi finalement mis à niveau vers PHP7.3 et l'ai testé pour confirmer qu'il fonctionne correctement. - Merci pour la réponse.
Chers collègues, qu'en est-il de PHP <7.3?
En php <7.3 @session_set_cookie_params (0, '/; SameSite = Strict');
Je suis sur php 5.6 - pour avoir des cookies définis dans un iFrame, j'utilise ce code pour que ma page fonctionne à nouveau sur Chrome 84: session_set_cookie_params (3600 * 24, '/; SameSite = None', $ _SERVER ['HTTP_HOST'], true ); Définir secure sur "true" est important. (mieux fermer le navigateur et vider le cache pour le tester)
Adapté de la réponse SilverShadow, mais corrigeant la syntaxe pour php <7.3, puisque session_set_cookie_params()
ne peut pas prendre un tableau comme paramètre unique jusqu'à ce que preciselly 7.3, au lieu de cela, chaque paramètre doit être défini. et détection automatique de la version de php pour l'option correcte afin que vous puissiez l'utiliser même si vous mettez à jour plus tard vers la version 7.3:
// set as your own needs: $maxlifetime = 0; $path = '/'; $domain = ''; $secure = false; $httponly = false; $samesite = 'lax'; // here is what we need if(PHP_VERSION_ID < 70300) { session_set_cookie_params($maxlifetime, $path.'; samesite='.$samesite, $domain, $secure, $httponly); } else { // note I use `array()` instead of `[]` to allow support of php <5.4 session_set_cookie_params(array( 'lifetime' => $maxlifetime, 'path' => $path, 'domain' => $domain, 'secure' => $secure, 'httponly' => $httponly, 'samesite' => $samesite )); }