English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 PHP 쿠키를 사용하여 사용자의 브라우저 내부에 적은 정보를 저장하는 방법을 배웁니다.
쿠키는 사용자 컴퓨터에 데이터를 저장할 수 있는 작은 텍스트 파일입니다. 최대4KB 정도입니다). 이들은 일반적으로 사용자 이름과 같은 정보를 추적하며, 사용자가 다음에 웹사이트를 방문할 때 웹사이트가 이 정보를 검색하여 특정 개인화된 페이지를 표시할 수 있습니다.
提示:브라우저가 서버에 페이지를 요청할 때마다 쿠키의 모든 데이터가 요청 내에 자동으로 서버로 전송됩니다.
setcookie() 함수는 PHP에서 쿠키를 설정하는 데 사용됩니다. setcookie() 함수를 호출해야 합니다. 그렇지 않으면 쿠키가 설정되지 않습니다. 함수의 기본 문법은 다음과 같습니다:
setcookie(name, value, expire, path, domain, secure);
setcookie() 함수의 파라미터는 다음과 같은 의미를 가집니다:
파라미터 | 설명 |
---|---|
name | 쿠키의 이름입니다. |
value | 쿠키의 값입니다. 이 값은 사용자의 컴퓨터에 저장되므로 민감한 정보를 저장하지 마십시오. |
expires | UNIX 시간 스타일의 만료 날짜입니다. 이 날짜 이후 쿠키는 접근할 수 없게 됩니다. 기본 값은 0입니다. |
path | 서버에서 쿠키가 사용할 수 있는 경로를 지정합니다. 경로가 설정되면/이렇게 되면 쿠키는 전체 도메인에서 사용할 수 있습니다. |
domain | 쿠키에 사용할 수 있는 도메인을 지정합니다. 예를 들어: ko.oldtoolbag.com. |
secure | 이 필드는 존재하면 안전한 HTTPS 연결이 있을 때만 쿠키를 전송하는 것을 나타냅니다. |
提示:쿠키의 만료 시간이 0으로 설정되거나 생략되면, 쿠키는 브라우저가 닫힐 때까지 세션 종료 시 만료됩니다.
setcookie() 함수를 사용하여 userName 이름의 쿠키를 생성하고 John Carter 값으로 설정하는 예제입니다. 또한 쿠키의 만료 시간을 설정합니다.30天(30 days * 24 hours * 60 min * 60 sec)。
<?php //设置Cookie setcookie("username", "John Carter", time())+30*24*60*60); ?>
注意:除名称外,所有参数都是可选的。您也可以用空字符串("")替换参数以跳过该参数,但是要跳过expire参数,请改用零,因为它是整数。
警告:请勿将敏感数据存储在Cookie中,因为恶意用户可能会操纵敏感数据。为了安全地存储敏感数据,请使用Session。
PHP 超全局变量$_COOKIE用于检索cookie值。它通常是一个关联数组,其中包含浏览器在当前请求中发送的所有cookie值的列表,并以cookie名称为关键字。可以使用标准数组符号访问单个cookie值,例如,要显示在上一个示例中设置的用户名cookie,可以使用以下代码。
<?php //访问单个Cookie值 echo $_COOKIE["username"]; ?>
上面示例中的PHP代码产生以下输出。
John Carter
在访问cookie的值之前,最好先检查是否已设置cookie。为此,您可以使用PHP isset()函数,如下所示:
<?php //验证是否设置了cookie if(isset($_COOKIE["username"])){ echo "Hi " . $_COOKIE["username"]; } else { echo "Welcome Guest!"; } ?>
您可以使用像 print_r($_cookie);这样的print_r()函数来查看这个$_cookie关联数组的结构,就像您处理其他数组一样。
您可以通过使用cookie名称和任何值(例如空字符串)调用相同的setcookie()函数来删除cookie,但是您需要设置为现在之前的过期日期,如下例所示:
<?php //删除cookie setcookie("username", "", time())-3600); ?>
提示:您应该传递与首次创建Cookie时使用的路径,域和其他参数完全相同的名称,以确保删除正确的Cookie。