Setcookie()函数在<head>和& lt; / head>或者在身体部分


Setcookie() fuction inbetween <head> and </head> or in body section?

我有将近200页的网站,所有页面只能由有效的登录用户访问。我在我的页面中使用php cookie来存储用户名和密码。我的网站的所有受保护的页面有一个setcookie()函数在正文部分:

<body>
<?php
setcookie("user","value","time");
 ?>
</body>

所以,我的问题是:页面的主体部分是设置cookie的正确位置吗?或者我应该总是使用setcookie()之前的html标签或在头和/头之间?

在HTML标签之前总是,以防下面是TL; dr

"像其他报头一样,cookies必须在脚本输出之前发送(这是协议限制)。这要求在任何输出之前调用该函数,包括<html><head>标记以及任何空白。" -来自手册

必须在脚本向浏览器发送任何输出之前调用setcookie()函数。因为cookie是使用http头发送的。在cookie中设置用户密码是不安全的。您应该使用强散列算法(如BCrypt)将用户密码存储在数据库中。setcookie格式应该是这样的setcookie("cookiename", "cookievalue", time()+8000, "/", ".yourdomain.com", 0, 1);

设置httponly为true以防止javascript访问您的cookie,并在域名前使用.点。领先的.将阻止任何其他域名访问您的cookie,如coolyourdomain.com, thisisyourdomain.com等。

setcookie()函数定义了一个cookie,与其余的HTTP头一起发送。

cookie通常用于识别用户。cookie是服务器嵌入到用户计算机上的一个小文件。每当同一台计算机用浏览器请求一个页面时,它也会发送cookie。使用PHP,您可以创建和检索cookie值。

cookie的名称被自动分配给同名的变量。例如,如果发送的cookie名称为"user",则会自动创建一个名为$user的变量,其中包含cookie的值。

注意: setcookie()函数必须出现在<html>标签之前。

来源:W3Schools

示例代码
<!DOCTYPE html>
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>
相关文章: