이 주제에서는 PHP 쿠키의 유래, PHP 쿠키의 속성, PHP 쿠키 기능의 사용법, PHP 쿠키의 실제 적용 사례를 사진, 텍스트, 동영상을 통해 종합적으로 소개합니다. PHP 중국어 웹사이트에서 배우는 학생들을 환영합니다!
One: 쿠키란 무엇인가요?
쿠키는 종종 사용자를 식별하는 데 사용됩니다.
쿠키는 서버가 이용자의 컴퓨터에 남겨두는 작은 파일입니다.
동일한 컴퓨터가 브라우저를 통해 페이지를 요청할 때마다 컴퓨터에서 쿠키가 전송됩니다.
PHP를 사용하면 쿠키 값을 생성하고 검색할 수 있습니다.
관련 주제 추천: php session
II: 쿠키의 탄생
HTTP 프로토콜은 Stateless이므로 서버 측 비즈니스는 Stateful이어야 합니다.
쿠키의 원래 목적은 서버 측 사용을 용이하게 하기 위해 웹에 상태 정보를 저장하는 것이었습니다.
예를 들어 사용자가 웹사이트를 처음 방문하는지 확인합니다. 최신 사양은 RFC 6265로, 브라우저 서버가 함께 작동하여 구현한 사양입니다.
3: 쿠키의 원리
웹사이트를 처음 방문하면 서버가 요청에 응답한 후 브라우저가 요청을 보냅니다. 처음 요청을 하면 쿠키가 전달되며, 서버는 사용자를 식별합니다. 물론 서버는 쿠키 내용을 수정할 수도 있습니다.
4: 쿠키 속성
쿠키는 이름(Name), 값(Value) 및 쿠키 유효 기간, 보안을 제어하는 데 사용되는 여러 가지로 구성된 4KB 이하의 작은 텍스트 데이터입니다. 및 사용법 선택적 속성의 범위입니다.
Name | 은 쿠키의 이름을 나타냅니다. |
Value | 은 쿠키의 가치를 나타냅니다. |
Domain |
쿠키에 액세스할 수 있는 웹사이트 또는 도메인을 지정합니다. 쿠키 메커니즘은 엄격한 동일 출처 정책을 따르지 않으므로 하위 도메인이 상위 도메인의 쿠키를 설정하거나 얻을 수 있습니다. |
Path | 는 쿠키에 액세스할 수 있는 웹사이트의 디렉터리를 정의합니다. |
Expires | 유효 기간은 그림의 Expires 속성입니다. 일반적으로 브라우저 쿠키는 기본적으로 세션을 종료하기 위해 브라우저를 닫으면 삭제됩니다. |
Secure |
쿠키를 보낼 때 HTTPS 보안 프로토콜을 사용할지 여부를 지정하세요. HTTPS 보안 프로토콜을 사용하면 브라우저와 웹 서버 간 전송 중에 쿠키가 도난당하거나 변조되는 것을 방지할 수 있습니다. 이 방법은 웹 사이트의 신원 인증에도 사용할 수 있습니다. 즉, HTTPS 연결 설정 단계에서 브라우저는 웹 사이트의 SSL 인증서의 유효성을 확인합니다. |
HttpOnly | 는 클라이언트 스크립트가 document.cookie 속성을 통해 쿠키에 액세스하는 것을 방지하여 크로스 사이트 스크립팅 공격으로 인해 쿠키가 도난당하거나 변조되는 것을 방지하는 데 사용됩니다. |
다섯 번째: PHP 쿠키 함수
1. setcookie - 쿠키 보내기
setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool
setcookie()는 쿠키를 정의하고 나머지 HTTP 헤더와 함께 클라이언트에 전송됩니다.
다른 HTTP 헤더와 마찬가지로 쿠키는 스크립트가 출력을 생성하기 전에 전송되어야 합니다(프로토콜 제한으로 인해).
출력( 및
또는 공백 포함)을 생성하기 전에 이 함수를 호출하세요.쿠키가 설정되면 $_COOKIE를 사용하여 다음에 페이지를 열 때 읽을 수 있습니다.
$_REQUEST에도 쿠키 값이 존재합니다.
Parameters
Parameters | Description |
name | 쿠키 이름입니다. |
value | 쿠키 값. 이 값은 사용자의 컴퓨터에 저장됩니다. 민감한 정보는 저장하지 마세요. |
expire |
쿠키 만료 시간. 이것은 Unix 시대 이후의 초 수인 Unix 타임스탬프입니다. 즉, 기본적으로 time() 함수의 결과와 만료하려는 초 수를 사용할 수 있습니다. |
path |
쿠키 유효한 서버 경로입니다. '/'로 설정하면 쿠키가 전체 도메인 이름 도메인에 대해 유효합니다. '/foo/'로 설정하면 쿠키는 도메인의 /foo/ 디렉터리와 해당 하위 디렉터리에만 유효합니다. 기본값은 쿠키가 설정될 때의 현재 디렉터리입니다. |
domain |
쿠키에 유효한 도메인/하위 도메인입니다. 이를 하위 도메인 이름으로 설정하면 이 하위 도메인 이름과 세 번째 수준 도메인 이름에 대해 쿠키가 유효해집니다. 쿠키가 전체 도메인 이름에 유효하도록 하려면 해당 도메인 이름으로 설정하면 됩니다. |
secure |
이 쿠키가 보안 HTTPS 연결을 통해서만 클라이언트에 전달되는지 여부를 설정하세요. TRUE로 설정하면 보안 연결이 존재할 때만 쿠키가 설정됩니다. 이 요구 사항이 서버 측에서 처리되는 경우 프로그래머는 보안 연결을 통해서만 해당 쿠키를 보내면 됩니다. |
httponly |
이 TRUE로 설정되어 있으면 쿠키는 HTTP 프로토콜을 통해서만 액세스할 수 있습니다. 이는 JavaScript와 같은 스크립트 언어를 통해 쿠키에 접근할 수 없음을 의미합니다. XSS 공격 중 신원 도용을 효과적으로 줄이려면 이 설정을 사용하는 것이 좋지만 이 설명은 종종 논란의 여지가 있습니다. |
返回值
如果在调用本函数以前就产生了输出,setcookie() 会调用失败并返回 FALSE。
如果 setcookie() 成功运行,返回 TRUE。
示例
<?php $value = 'something from somewhere'; setcookie("TestCookie", $value); setcookie("TestCookie", $value, time()+3600); /* 1 小时过期 */ setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1); ?>
2、setrawcookie — 发送未经 URL 编码的 cookie
setrawcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] ) : bool
setrawcookie() 和 setcookie() 非常相似,唯一不同之处是发送到浏览器的 cookie 值没有自动经过 URL 编码(urlencode)。
六:PHP Cookie 简单示例
1、基本操作
<?php //添加Cookie setcookie('username', 'phpcn', time() + 3600); //获取Cookie $username = $_COOKIE['username']; //删除Cookie setcookie('username', '', time() - 3600); //修改Cookie setcookie('username', 'phpcn-updated', time() + 3600); ?>
2、面向过程封装
<?php /** * 获取 Cookie * @param string $name Cookie 名称 * @return mixed Cookie 值 */ function cookie_get($name) { return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null; } /** * 删除 Cookie * @param string $name Cookie 名称 */ function cookie_del($name) { setcookie($name, '', time() - 3600); } /** * 设置Cookie * @param string $name Cookie 名称 * @param mixed $value Cookie 值 * @param integer $expire Cookie 过期时间 * @param string $path Cookie 有效路径 * @param string $domian Cookie 有效域名/子域名 */ function cookie_set($name, $value, $expire = 3600, $path = '/', $domian = '') { setcookie($name, $value, time() + $expire); } /** * 检测 Cookie * @param string $name Cookie 名称 * @param boolean $has_empty 检测为空 * @return boolean */ function cookie_has($name) { return isset($_COOKIE[$name]); } ?>
3、面向对象封装
<?php class Cookie { const OPTION_EXPIRE = 'expire'; const OPTION_PATH = 'path'; const OPTION_DOMAIN = 'domain'; const OPTION_SECURE = 'secure'; const OPTION_HTTPONLY = 'httponly'; /** * Cookie 实例 * @var null */ private static $instance = null; /** * Cookie 选项 * @var array */ private $options = [ self::OPTION_EXPIRE => 3600, self::OPTION_PATH => '/', self::OPTION_DOMAIN => 'domain', self::OPTION_SECURE => false, self::OPTION_HTTPONLY => false ]; /** * Cookie constructor. * @param $options */ private function __construct($options) { $this->setOptions($options); } /** * privated __clone */ private function __clone() { } /** * 获取实例 * @param $options * @return Cookie|null */ public static function getInstance($options) { if (is_null(self::$instance)) { self::$instance = new self($options); } return self::$instance; } /** * 设置选项 * @param $name * @param $value */ public function setOption($name, $value) { if (isset($this->options[$name])) { $this->options[$name] = $value; } throw new InvalidArgumentException('Cookie option not exists:{$name}'); } /** * 设置多个选项 * @param $options */ public function setOptions($options) { foreach ($options as $name => $value) { $this->setOption($name, $value); } } /** * 设置 Cookie * @param $name * @param $value * @param array $options */ public function set($name, $value, $options = []) { $this->setOptions($options); if (is_array($value) || is_object($value)) { $value = json_encode($value); } setcookie( $name, $value, $this->options[self::OPTION_EXPIRE], $this->options[self::OPTION_PATH], $this->options[self::OPTION_DOMAIN], $this->options[self::OPTION_SECURE], $this->options[self::OPTION_HTTPONLY] ); } /** * 获取 Cookie * @param $name * @return array|mixed */ public function get($name) { $value = $_COOKIE[$name]; if (is_array($value)) { $arr=[]; foreach ($value as $k => $v) { $arr[$k] = substr($v, 0,1) == '{' ? json_decode($value) : $v; } return $arr; } else { return substr($value, 0,1) == '{' ? json_decode($value) : $value; } } /** * 删除 Cookie * @param $name * @param array $options */ public function del($name, $options = []) { $this->setOptions($options); $value = $_COOKIE[$name]; if ($value) { if (is_array($value)) { foreach ($value as $k => $v) { setcookie( $name . '[' . $k . ']', '', time() - 3600, $this->options[self::OPTION_EXPIRE], $this->options[self::OPTION_PATH], $this->options[self::OPTION_DOMAIN], $this->options[self::OPTION_SECURE], $this->options[self::OPTION_HTTPONLY] ); unset($v); } }else{ setcookie( $name, '', time() - 3600, $this->options[self::OPTION_EXPIRE], $this->options[self::OPTION_PATH], $this->options[self::OPTION_DOMAIN], $this->options[self::OPTION_SECURE], $this->options[self::OPTION_HTTPONLY] ); unset($value); } } } }
4、记住登录账号示例
<?php function cookie_get_username() { return isset($_COOKIE['username']) ? $_COOKIE['username'] : null; } function cookie_get_password() { return isset($_COOKIE['username']) ? $_COOKIE['username'] : null; } function cookie_get_remember() { return isset($_COOKIE['remember']) ? 'checked' : null; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = $_POST['username']; $password = $_POST['password']; if (isset($_POST['remember']) && $_POST['remember'] === '1') { setcookie('username', $username, time() + 3600); setcookie('password', $password, time() + 3600); setcookie('remember', '1', time() + 3600); } else { setcookie('username', '', time() - 3600); setcookie('password', '', time() - 3600); setcookie('remember', '', time() - 3600); } die('登录成功!'); } ?> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <form action="" method="post"> <table width="300" border="1" align="center" cellpadding="5" cellspacing="5"> <thead> <tr> <td colspan="2" align="center"><b>登录</b></td> </tr> </thead> <tr align="center"> <td>用 户 名</td> <td><input type="text" name="username" value="<?=cookie_get_username()?>"></td> </tr> <tr align="center"> <td>密码</td> <td><input type="password" name="password" value="<?=cookie_get_password()?>"></td> </tr> <tr align="center"> <td>记住账号</td> <td> <input type="checkbox" name="remember" value="1" <?=cookie_get_remember()?>> </td> </tr> <tr align="center"> <td colspan="2"><input type="submit" name="Submit" value="提交" /></td> </tr> </table> </form>
六:php cookie 精选技术文章
6. PHP会话控制:cookie和session区别与用法深入理解
9. JS读取PHP中设置的中文cookie时出现乱码怎么办
10. ThinkPHP6.0:Session和Cookie机制的变化
七:php cookie 相关视频教程
1. PHP中cookie怎么记录及删除变量?(图文+视频)
2. PHP cookie实现记录用户登陆信息的方法(图文+视频)
![修复:谷歌浏览器请求太多错误 429 [已解决]](https://img.php.cn/upload/article/000/887/227/168160812385289.png)
近期很多Windows用户反映,当他们尝试访问某个URL时,PC上的GoogleChrome浏览器显示错误429。这是因为每次用户尝试在短时间内通过浏览器。通常,此错误是由网站生成的,以避免通过向服务器发送过多请求而被机器人或黑客入侵病毒。用户对在这个阶段可以做什么感到困惑,并因此感到失望。导致此错误的因素可能很多,我们在下面列出了其中一些因素。缓存内存和其他站点数据未清除从第三方来源安装的扩展系统上的一些有害软件病毒攻击在研究了上面列出的因素之后,我们在这篇文章中收集了一些修复程序,这

如果您在Windows10或11PC上遇到语法问题,本文将帮助您解决此问题。Grammarly是最流行的打字助手之一,用于修复语法、拼写、清晰度等。它已经成为写作专业人士必不可少的一部分。但是,如果它不能正常工作,它可能是一个非常令人沮丧的体验。许多Windows用户报告说此工具在他们的计算机上运行不佳。我们做了深入的分析,找到了这个问题的原因和解决方案。为什么Grammarly无法在我的PC上运行?由于几个常见原因,PC上的Grammarly可能无法正常工作。它包括以下内

许多Windows用户最近在尝试访问GoogleChrome浏览器中的网站URL时遇到了一个不寻常的错误,称为Roblox403禁止错误。即使在多次重新启动Chrome应用程序后,他们也无能为力。此错误可能有几个潜在原因,我们在下面概述并列出了其中一些。Chrome的浏览历史和其他缓存以及损坏的数据不稳定的互联网连接网站网址不正确从第三方来源安装的扩展在考虑了上述所有方面之后,我们提出了一些修复程序,可以帮助用户解决此问题。如果您遇到同样的问题,请查看本文中的解决方案。修复1

前言cookie使用最多的地方想必是保存用户的账号与密码,可以避免用户每次登录时都要重新输入1.vue中cookie的安装在终端中输入命令npminstallvue-cookies--save,即可安装cookies,安装之后在main.js文件中写下以下代码import{createApp}from'vue'importVueCookiesfrom'vue-cookies'constapp=createApp(App)app.co

每个网站都通过创建cookie使用户更容易浏览他们的网页和浏览他们的网站。然而,网站创建了一些第三方cookie,使他们能够跟踪访问其他网站的用户,以便更好地了解他们,从而有助于展示广告和其他帖子。一些用户可能认为他们的数据遭到破坏或存在安全风险,而另一些用户可能认为允许这些第三方cookie跟踪他们以在浏览器上获取更多内容是很好的。所以我们在这篇文章中解释了如何在谷歌浏览器中启用或禁用第三方cookies,详细步骤如下。如何在GoogleChrome中启用第三方Cookie如果您认为要

在互联网应用开发中,使用Cookie是常见的一种方式来维护用户会话状态。在PHP语言中,处理Cookie的相关功能在语言的核心库中得到了完善的支持,在最新的PHP8.0版本中,Cookie库得到了进一步的增强。一、PHP中的CookieCookie是一个小文本文件,可以存储在用户的浏览器中,它通常被用来记录用户的个性化设置、登录状态等信息。Cookie是基

php curl设置cookie的方法:1、创建PHP示例文件;2、通过“curl_setopt”函数设置cURL传输选项;3、在CURL中传递cookie即可。

随着互联网技术的不断发展,越来越多的网站需要用户登录才能使用其功能。但是每次用户访问时都需要输入账号密码显然很不方便,因此“记住我”的功能应运而生。本文将介绍如何在ThinkPHP6中采用Cookie技术实现记住我功能。一、Cookie简介Cookie是一种服务器向客户端发送的小文件,在用户访问网站时存储在用户的计算机上。这些文件包含与用户相关的信息,如登录

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
