PHP 쿠키

PHP 쿠키

쿠키는 종종 사용자를 식별하는 데 사용됩니다.

쿠키란 무엇인가요?

쿠키는 서버에 의해 생성되어 User-Agent(일반적으로 브라우저)로 전송됩니다. 브라우저는 쿠키 키/값을 특정 디렉터리의 텍스트 파일에 저장하고 다음에 동일한 웹사이트를 요청합니다. 쿠키는 서버로 전송됩니다(브라우저가 쿠키를 활성화하도록 설정된 경우). 쿠키의 이름과 값은 서버측 개발자가 정의할 수 있으므로 서버는 사용자가 정당한 사용자인지, 재로그인이 필요한지 등을 알 수 있습니다. 서버는 쿠키에 포함된 정보를 설정하거나 읽을 수 있습니다.

쿠키는 어떻게 생성하나요?

쿠키를 설정하려면 setcookie() 함수를 사용합니다.

참고: setcookie() 함수는 <html> 태그 앞에 배치되어야 합니다.

구문

setcookie(이름, 값, 만료, 경로, 도메인);

예제 1

다음 예에서는 이름을 생성합니다. "user"에 대한 쿠키가 되어 "runoob" 값을 할당합니다. 또한 이 쿠키가 1시간 후에 만료되도록 지정합니다.

<?php
setcookie("user", "runoob", time()+3600);
?>
<html>
.....

참고: 쿠키 값은 쿠키를 보낼 때 자동으로 URL 인코딩되고 검색될 때 자동으로 디코딩됩니다. (URL 인코딩을 방지하려면 setrawcookie()를 대신 사용하세요.)

예제 2

쿠키 만료 시간을 다른 방법으로 설정할 수도 있습니다. 이는 초를 사용하는 것보다 더 간단할 수 있습니다.

<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?>
<html>
.....

위 예시에서는 만료 시간이 1개월(60초 * 60분 * 24시간 * 30일)로 설정되어 있습니다.

쿠키 구성 및 적용

Setcookie(문자열 이름, 문자열 값, int 만료, 문자열 경로, 문자열 도메인, intsecure); 쿠키 변수 이름 식별자입니다. 일반 변수 이름을 사용하는 것처럼 PHP에서

쿠키 변수를 참조하는 데 사용할 수 있습니다. 값은 쿠키 변수의 초기 값이고, 만료는 쿠키 변수의 유효 시간을 나타내며, 도메인은 쿠키 변수의 웹사이트를 나타냅니다. 보안은 https가 안전하게 전송되는 경우에만 유효합니다.

SetCookie("Cookie", "cookievalue",time()+3600, "/forum", ".365shequ.com", 1);

이름, 값이어야 함 밀리초 시간()+3600=1시간 저장 경로 도메인 저장 HTTPS

PHP 쿠키 읽기

현재 클라이언트를 읽으려면 슈퍼 전역 변수 $_COOKIE 배열을 사용합니다. 생성

에 저장된 쿠키에 대한 새 PHP 파일 set_cookie.php, 코드는

print_r($_COOKIE);
echo $_COOKIE['foo'];

<입니다. 🎜>

쿠키가 성공적으로 설정되었는지 확인

쿠키 만료 시간 설정

세 번째 매개변수는 Unix 타임스탬프입니다

0 기본값, 브라우저를 닫으면 만료됩니다

time() + 86400 one day

setcookie('foo', 'a', time() + 86400 );

설정 후 브라우저를 닫았다가 다시 열어서 쿠키가 있는지 확인해주세요

쿠키 경로를 설정하세요

setcookie('bar', 'b', time() + 86400, '/uploads');

• bar라는 PHP 페이지를 / 디렉토리 Cookie에서 읽을 수 있는지 테스트해 보세요

· /uploads 아래의 PHP 페이지에서 foo라는 쿠키를 읽을 수 있는지 테스트하십시오. 다른 하위 디렉토리를 생성하고 해당 하위 디렉토리의 PHP 페이지에서 읽을 수 있는지 테스트하십시오.

경로가 설정되면 해당 경로 아래의 쿠키는 해당 경로 아래의 페이지에서만 읽을 수 있습니다.

이 쿠키 도메인 이름

으로 설정됩니다. setcookie('key', 'val', time() + 86400, '/uploads', '.your.domain');

php.cn의 쿠키를 뉴스로 설정합니다. sports.365jia.cn 아래의 페이지에서는 읽을 수 없으며 그 반대도 마찬가지입니다

모든 2차 도메인 이름이 쿠키를 공유하도록 하려면 도메인을 .php.cn으로 설정해야 합니다

쿠키 제한 문제

대부분의 브라우저에는 쿠키 개수가 50개를 초과할 수 없도록 규정되어 있습니다. 일부 브라우저는 30개로 제한하기도 합니다.

브라우저에서는 쿠키 크기에 제한이 있으며 일반적으로 4K 크기를 초과할 수 없습니다.

쿠키 보안 문제

피시방에서 인터넷 서핑을 한 후 컴퓨터를 종료하지 않으면 귀하의 컴퓨터를 사용하는 다른 사람들이 귀하가 방문한 모든 웹사이트의 기록과 해당 웹사이트에 저장된 쿠키 내용을 볼 수 있습니다. 중요한 데이터(사용자 이름, 비밀번호, 카드번호, 휴대폰 번호, ID 번호...)가 쿠키에 저장되면 위험합니다.

따라서 중요한 데이터는 쿠키에 저장할 수 없으므로 반드시 저장해야 하는 경우

쿠키 주의사항

서버에 의존해야 합니다. 쿠키는 공유할 수 없습니다

동일한 컴퓨터의 다른 브라우저는 쿠키를 공유할 수 없습니다

동일한 브라우저, 다른 도메인 이름은 여전히 ​​쿠키를 공유할 수 없습니다

같은 브라우저라도 다른 쿠키는 동일한 도메인 이름의 경로는 공유할 수 없습니다.

쿠키 값을 어떻게 검색하나요?

PHP의 $_COOKIE 변수는 쿠키 값을 검색하는 데 사용됩니다.

다음 예에서는 "user"라는 쿠키의 값을 검색하여 페이지에 표시합니다.

<?php
// 输出 cookie 值
echo $_COOKIE["user"];
// 查看所有 cookie
print_r($_COOKIE);
?>

다음 예에서는 isset() 함수를 사용하여 여부를 확인합니다. 쿠키가 설정되었습니다:

<html>
<head>
<meta charset="utf-8">
<title> php中文网(php.cn)</title>
</head>
<body>
<?php
if (isset($_COOKIE["user"]))
         echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
         echo "普通访客!<br>";
?>
</body>
</html>

쿠키를 삭제하는 방법은 무엇인가요?

쿠키 삭제 시 만료일을 과거 시점으로 변경해야 합니다.

삭제된 인스턴스:

<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>

내 브라우저가 쿠키를 지원하지 않으면 어떻게 해야 하나요?

애플리케이션이 쿠키를 지원하지 않는 브라우저를 처리해야 하는 경우 다른 방법을 사용하여 애플리케이션의 페이지 간에 정보를 전달해야 합니다. 한 가지 방법은 양식을 통해 데이터를 전달하는 것입니다(양식 및 사용자 입력은 이 튜토리얼의 이전 장에서 다뤘습니다).

다음 양식은 사용자가 "제출" 버튼을 클릭할 때 "welcome.php"에 사용자 입력을 제출합니다.

<html>
<head>
<meta charset="utf-8">
<title> php中文网(php.cn)</title>
</head>
<body>
<form action="welcome.php" method="post">
名字: <input type="text" name="name">
年龄: <input type="text" name="age">
<input type="submit">
</form>
</body>
</html>

아래 표시된 대로 "welcome.php" 파일에서 값을 검색합니다.

<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
欢迎 <?php echo $_POST["name"]; ?>.<br>
你 <?php echo $_POST["age"]; ?> 岁了。
</body>
</html>

반박

실제 개발에서 흔히 저지르는 실수는 setcookie 이후 $_COOKIE를 통해 직접 데이터를 얻는 것입니다

setcookie ('foo', 1);

print_r($_COOKIE);
echo $_COOKIE['foo'];

위의 경우, 쿠키를 얻는 것은 불가능합니다. 방금 설정한 것은 제목에서 언급한 문제입니다.

원리는 매우 간단합니다. 쿠키는 실제로 브라우저에 저장되며, 현재 페이지가 브라우저로 반환된 후에만 setcookie 값은 브라우저에 저장됩니다. 페이지를 두 번째 방문하면 PHP는 브라우저의 쿠키

및 $_COOKIE에 있는 데이터를 읽을 수 있습니다. 데이터는 매번 클라이언트에서 서버로 가져옵니다. 페이지가 요청되었습니다

이래서 당시에 설정되어 있어서 당시에 검색할 수 없었습니다

문제를 해결하는 한 가지 방법은 저장하는 것입니다. 값을 지정한 후 프로그램이 새로 고쳐집니다.

바로 페이지로 이동하세요.

지속적인 학습
||
<?php // 设置 cookie 过期时间为过去 1 小时 setcookie("user", "", time()-3600); ?>
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~