我的网站有近200页,所有页面只能由有效的登录用户访问。我在我的页面中使用php cookie来存储用户的用户名和密码。我网站的所有受保护网页在正文部分都有 setcookie()功能:
<body>
<?php
setcookie("user","value","time");
?>
</body>
这很好用。
所以,我的问题是:页面的正文部分是否适合设置cookie?或者我应该总是在html标签之前使用setcookie()还是在head和/ head之间使用?
答案 0 :(得分:2)
在HTML标记始终之前,如果以下是TL; DR。
&#34;与其他标头一样,必须在脚本的任何输出之前发送cookie(这是协议限制)。 这要求您在输出之前调用此函数,包括<html>
和<head>
标记以及任何空格。&#34; - From the manual
答案 1 :(得分:1)
setcookie()
函数定义了一个与其他HTTP头一起发送的cookie。
Cookie通常用于标识用户。 Cookie是服务器嵌入用户计算机的小文件。每次同一台计算机通过浏览器请求页面时,它也会发送cookie。使用PHP,您可以创建和检索cookie值。
cookie的名称会自动分配给同名变量。例如,如果使用名称&#34; user&#34;发送cookie,则会自动创建一个名为$ user的变量,其中包含cookie值。
注意: setcookie()
功能必须出现在<html>
标记之前。
示例代码
<!DOCTYPE html>
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>
答案 2 :(得分:1)
在脚本将任何输出发送到浏览器之前,您必须调用setcookie()
函数。由于cookie是使用http标头发送的。在cookie中设置用户密码是不安全的。您应该使用强大的散列算法(如BCrypt
)将用户密码存储在数据库中。而你的setcookie格式应该是这样的
setcookie("cookiename", "cookievalue", time()+8000, "/", ".yourdomain.com", 0, 1);
将httponly设置为true可防止javascript访问您的Cookie并在您的域名前使用前导.
点。领先的.
会阻止您从任何其他域访问您的Cookie,例如coolyourdomain.com,thisisyourdomain.com等。