Maison > Article > développement back-end > Comment définir les cookies dans l'en-tête php()
En php, la fonction header() est utilisée pour envoyer l'en-tête HTTP d'origine au client. Les cookies peuvent être définis sous la forme de "header("Set-Cookie:xxxxxxxxxxxxxxxx",false);".
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3
La fonction header() envoie l'original en-tête aux en-têtes HTTP du client.
Cookie de sortie d'en-tête
définir la fonction de cookie, si vous souhaitez qu'il prenne effet, il prend également effet en définissant le côté du navigateur via l'en-tête. La sortie via l’en-tête est donc également réalisable. Donc, concernant l'écriture de plusieurs opérations d'en-tête équivalentes, comparons et apprenons :
header("Set-Cookie:cookie_name1_cp=" . urlencode("浏览器关闭失效")); setcookie("cookie_name1", "浏览器关闭失效");
Pour plus de connaissances liées à la programmation, veuillez visiter : Vidéo de programmation ! !
Remarque :
Nous savons que setcookie et l'en-tête de php peuvent définir des cookies. Mais lorsque vous utilisez des en-têtes, il y a une autre chose à noter : c'est l'ordre entre header et setcookie, ou même l'ordre entre header et header.
Header("Set-Cookie:") effacera : tous les effets header("Set-Cookie:") et setcookie(setrawcookie) avant que cette instruction ne soit appelée. Voir l'exemple ci-dessous, où quatre cookies sont définis. Mais un seul entre réellement en vigueur. Parce que les trois autres ont été emportés par le dernier.
header("Set-Cookie:cookie_name1_cp=" . urlencode("浏览器关闭失效")); setcookie("cookie_name1", "浏览器关闭失效"); setcookie("cookie_name3", "设置有效域名/https/httponly", time() + 3600*24, "/", $_SERVER['SERVER_NAME'], isset($_SERVER["HTTPS"]),true); header("Set-Cookie:cookie_name3_cp=" . urlencode("设置有效域名/https/httponly") . "; expires=" . gmstrftime("%a, %d-%b-%Y %H:%M:%S GMT", time() + 3600*24) . "; Max-Age=3600; path=/; domain= ".$_SERVER['SERVER_NAME']."; httponly");
Solution :
Ajouter un deuxième paramètre à l'en-tête, false. C'est à dire :
header("Set-Cookie:xxxxxxxxxxxxxxxx",false);
Par exemple :
header("Set-Cookie:cookie_name3_cp=" . urlencode("设置有效域名/https/httponly") . "; expires=" . gmstrftime("%a, %d-%b-%Y %H:%M:%S GMT", time() + 3600*24) . "; Max-Age=3600; path=/; domain= ".$_SERVER['SERVER_NAME']."; httponly;"); header("Set-Cookie:cookie_name3_cp2=" . urlencode("设置有效域名/https/httponly") . "; expires=" . gmstrftime("%a, %d-%b-%Y %H:%M:%S GMT", time() + 3600*24) . "; Max-Age=3600; path=/; domain= ".$_SERVER['SERVER_NAME']."; httponly;",FALSE);
Dans ce cas, l'en-tête utilisant le paramètre false ne sera pas en conflit avec celui d'origine. Pour plus de détails, veuillez vous référer à la description de la fonction PHP de header :
void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
Notre faux paramètre est le paramètre $replace, ce qui signifie ne pas remplacer l'en-tête existant du même type. Notez qu'il s'agit du "même type".
Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!