English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 쿠키

이 튜토리얼에서는 PHP 쿠키를 사용하여 사용자의 브라우저 내부에 적은 정보를 저장하는 방법을 배웁니다.

Cookie는 무엇인가요

쿠키는 사용자 컴퓨터에 데이터를 저장할 수 있는 작은 텍스트 파일입니다. 최대4KB 정도입니다). 이들은 일반적으로 사용자 이름과 같은 정보를 추적하며, 사용자가 다음에 웹사이트를 방문할 때 웹사이트가 이 정보를 검색하여 특정 개인화된 페이지를 표시할 수 있습니다.

提示:브라우저가 서버에 페이지를 요청할 때마다 쿠키의 모든 데이터가 요청 내에 자동으로 서버로 전송됩니다.

Cookie 설정

setcookie() 함수는 PHP에서 쿠키를 설정하는 데 사용됩니다. setcookie() 함수를 호출해야 합니다. 그렇지 않으면 쿠키가 설정되지 않습니다. 함수의 기본 문법은 다음과 같습니다:

setcookie(name, value, expire, path, domain, secure);

setcookie() 함수의 파라미터는 다음과 같은 의미를 가집니다:

파라미터설명
name쿠키의 이름입니다.
value쿠키의 값입니다. 이 값은 사용자의 컴퓨터에 저장되므로 민감한 정보를 저장하지 마십시오.
expiresUNIX 시간 스타일의 만료 날짜입니다. 이 날짜 이후 쿠키는 접근할 수 없게 됩니다. 기본 값은 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

访问 Cookie值

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

您可以通过使用cookie名称和任何值(例如空字符串)调用相同的setcookie()函数来删除cookie,但是您需要设置为现在之前的过期日期,如下例所示:

<?php
//删除cookie
setcookie("username", "", time())-3600);
?>

提示:您应该传递与首次创建Cookie时使用的路径,域和其他参数完全相同的名称,以确保删除正确的Cookie。