首页 > 后端开发 > 正文

php中为什么setcookie() 函数必须位于 html 标签之前 ?

2025-01-04 23:16:42 | 我爱编程网

今天我爱编程网小编整理了php中为什么setcookie() 函数必须位于 html 标签之前 ?相关信息,希望在这方面能够更好帮助到大家。

本文目录一览:

php中为什么setcookie() 函数必须位于 html 标签之前 ?

php中为什么setcookie() 函数必须位于 html 标签之前 ?

在PHP中使用setcookie()函数时,必须确保它位于HTML标签之前的原因涉及到HTTP协议和浏览器的Cookie处理机制。当服务器向浏览器发送响应时,它会首先发送一系列HTTP头信息,其中包括用于设置Cookie的指令。这些头信息在浏览器接收到响应后立即被解析并执行,以便浏览器能够根据这些信息在本地存储Cookie。

一旦浏览器解析并执行了HTTP头信息中的Cookie设置指令,服务器接下来发送的任何内容(如HTML文档主体)都将被浏览器作为页面内容进行处理,而不会影响到Cookie的设置。因此,为了确保Cookie能够被正确地创建并存储在客户端浏览器中,setcookie()函数必须在发送任何HTML内容之前调用。

具体而言,setcookie()函数的作用是允许服务器向客户端浏览器发送Cookie信息。这些信息在HTTP响应的头部通过特定的格式进行传输,如`Set-Cookie: key=value`。当浏览器接收到这些头部信息时,它会解析并执行这些指令,将相应的键值对作为Cookie添加到本地存储中。

如果在发送HTML内容(如网页主体)之后才尝试使用setcookie()函数,那么这些头部信息将无法被浏览器解析和执行。由于浏览器在接收到HTML内容后,通常会将其视为页面的主体内容进行渲染,而非继续解析HTTP头部信息,因此,任何在HTML内容之后设置的Cookie信息都不会生效。

综上所述,为了确保Cookie能够被成功创建并存储在客户端浏览器中,setcookie()函数必须在发送任何HTML内容之前调用,以确保这些头部信息能够被浏览器正确解析和执行。这样,浏览器才能根据接收到的指令在本地存储相应的Cookie信息,进而实现服务器与客户端之间基于Cookie的会话管理。

php中为什么setcookie() 函数必须位于 html 标签之前 ?

PHP stecookie()的用法

setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

除了 name 外,其它所有参数都是可选的。可以用空字符串("")替换某参数以跳过该参数。

name Cookie 的名字。 使用 $_COOKIE['cookiename'] 调用名为 cookiename 的 cookie。
value Cookie 的值。此值保存在客户端,不要用来保存敏感数据。 假定 name 是 'cookiename',可以通过 $_COOKIE['cookiename'] 取得其值。
expire Cookie 过期的时间。这是个 Unix 时间戳,即从 Unix 纪元开始的秒数。换而言之,通常用 time() 函数再加上秒数来设定 cookie 的失效期。或者用 mktime()来实现。 time()+60*60*24*30 将设定 cookie 30 天后失效。如果未设定,cookie 将会在会话结束后(一般是浏览器关闭)失效。
path Cookie 在服务器端的有效路径。 如果该参数设为 '/' 的话,cookie 就在整个 domain 内有效,如果设为 '/foo/',cookie 就只在 domain 下的 /foo/ 目录及其子目录内有效,例如 /foo/bar/。默认值为设定 cookie 的当前目录。
domain 该 cookie 有效的域名。 要使 cookie 能在如 example.com 域名下的所有子域都有效的话,该参数应该设为 '.example.com'。虽然 . 并不必须的,但加上它会兼容更多的浏览器。如果该参数设为 www.example.com 的话,就只在 www 子域内有效。细节见 Cookie 规范中的 tail matching。
secure 指明 cookie 是否仅通过安全的 HTTPS 连接传送。当设成 TRUE 时,cookie 仅在安全的连接中被设置。默认值为 FALSE。 0 或 1

php setcookie(name, value, expires, path, domain,

我爱编程网(https://www.52biancheng.com)小编还为大家带来php setcookie(name, value, expires, path, domain,的相关内容。

setcookie() 定义一个和其余的 HTTP 标头一起发送的 cookie 和其它标头一样 cookie 必须在脚本的任何其它输出之前发送(这是协议限制) 这 需要将本函数的调用放到任何输出之前 包括 <> 和 <head> 标签以及任何空格 如果在调用 setcookie() 之前有任何输出 本函数将失败并返回 FALSE 如果 setcookie() 函数成功运行 将返回 TRUE 这并不说明用户是否接受了 cookie 函数定义 bool setcookie ( string name [ string value [ int expire [ string path [ string domain [ bool secure]]]]] ) setcookie() 参数详解

参数        说明 举例 name cookie的名字 使用 $_COOKIE[ cookiename ] 调用名为 cookiename 的 cookie value cookie的值 存放在客户端 不要存放敏感数据 假定 name 是 cookiename 可以通过 $_COOKIE[ cookiename ] 取得其值 expire

Cookie 过期的时间 这是个 Unix 时间戳 即从 Unix 纪元开始的秒数

换而言之 通常用 time() 函数再加上秒数来设定 cookie 的失效期

或者用 mktime() 来实现

time()+ * * * 将设定 cookie 天后失效

如果未设定 cookie 将会在会话结束后(一般是浏览器关闭)失效

path Cookie 在服务器端的有效路径

如果该参数设为 / 的话 cookie 就在整个 domain 内有效

如果设为 /foo/ cookie 就只在 domain 下的 /foo/ 目录及其子目录内有效 例如 /foo/bar/

默认值为设定 cookie 的当前目录

domain 该 cookie 有效的域名

要使 cookie 能在如 example 域名下的所有子域都有效的话 该参数应该设为 example

虽然 并不必须的 但加上它会兼容更多的浏览器

如果该参数设为 example 的话 就只在 子域内有效

细节见Cookie 规范中的 tail matching 我爱编程网

secure

指明 cookie 是否仅通过安全的 HTTPS 连接传送

当设成 TRUE 时 cookie 仅在安全的连接中被设置 默认值为 FALSE

例子 setcookie() 发送例子

复制代码 代码如下: $value = something from somewhere ; setcookie("TestCookie" $value); setcookie("TestCookie" $value time()+ ); /* expire in hour */ setcookie("TestCookie" $value time()+ "/~ra *** us/" " utoronto ca" );

注意 cookie 中值的部分在发送的时候会被自动用 urlencode 编码并在接收到的时候被自动解码并把值赋给与自己同名的 cookie 变量 如果不想这样并且在使用 PHP 的话 可以用 setrawcookie() 来代替 下面这个简单的例子可以得到刚才所设定的 cookie 的值

复制代码 代码如下: <?php // 输出单独的 cookie echo $_COOKIE["TestCookie"]; echo $HTTP_COOKIE_VARS["TestCookie"]; // 另一个调试的方法就是输出所有的 cookie print_r($_COOKIE); ?>

要删除 cookie 需要确保它的失效期是在过去 才能触发浏览器的删除机制 下面的例子说明了如何删除刚才设置的 cookie 例子 setcookie() 删除例子

复制代码 代码如下: // 将过期时间设为一小时前 setcookie("TestCookie" "" time() ); setcookie("TestCookie" "" time() "/~ra *** us/" " utoronto ca" );

也可以通过在 cookie 名称中使用数组符号来设定数组 cookie 可以设定多个 cookie 作为数组单元 在脚本提取 cookie 时所有的值都放在一个数组种 例子 setcookie() 中使用数组的例子

复制代码 代码如下: <?php // 设定 cookie setcookie("cookie[three]" "cookiethree"); setcookie("cookie[o]" "cookieo"); setcookie("cookie[one]" "cookieone"); // 刷新页面后 显示出来 if (isset($_COOKIE[ cookie ])) { foreach ($_COOKIE[ cookie ] as $name => $value) { echo "$name : $value <br />n"; } } ?> lishixinzhi/Article/program/PHP/201311/21055

以上,就是我爱编程网小编给大家带来的php中为什么setcookie() 函数必须位于 html 标签之前 ?全部内容,希望对大家有所帮助!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“php中为什么setcookie() 函数必须位于 html 标签之前 ?”相关推荐