programing

쿠키 삭제

kingscode 2022. 9. 8. 23:05
반응형

쿠키 삭제

쿠키를 제거할 때 시도합니다.

unset($_COOKIE['hello']);

파이어폭스의 쿠키 브라우저에 쿠키가 아직 존재한다고 표시된다.어떻게 하면 진짜 쿠키를 제거할 수 있을까요?

시험해 보세요

if (isset($_COOKIE['remember_user'])) {
    unset($_COOKIE['remember_user']); 
    setcookie('remember_user', null, -1, '/'); 
    return true;
} else {
    return false;
}

값을 "로 설정하고 만료 날짜를 어제(또는 과거 날짜)로 설정합니다.

setcookie("hello", "", time()-3600);

그러면 다음 번에 페이지가 로드될 때 쿠키가 만료됩니다.

은 둘 다 입니다.$_COOKIE file "cookie" 를 지정합니다.

if (isset($_COOKIE['key'])) {
    unset($_COOKIE['key']);
    setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}

쿠키를 확실하게 삭제하려면 PHP 서버에서 계산한 대로 과거 언제든지 만료되도록 설정하는 것만으로는 충분하지 않습니다.이는 클라이언트 컴퓨터가 서버의 시간과 다를 수 있기 때문입니다.

베스트 프랙티스는 현재 쿠키를 1초 만료되는 빈 쿠키로 덮어쓰는 것입니다. 장차 다음과 같이 에폭(1970년 1월 1일 00:00:00 UTC) 이후:

setcookie("hello", "", 1);

그러면 코드의 쿠키가 설정되지 않지만 $_COOKIE 변수는 요청마다 새로 고쳐지기 때문에 다음 페이지 요청 시에만 다시 표시됩니다.

쿠키를 실제로 제거하려면 만료 날짜를 과거로 설정합니다.

// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);

코드에 같은 문제가 있어서 쿠키 경로 문제임을 알게 되었습니다.이 스택 오버플로우 투고를 확인해 주세요.php set cookie를 삭제할 수 없습니다.

cookie를 패스값 "/"로 설정했는데, cookie를 클리어하려고 했을 때 패스값이 없어 cookie가 클리어되지 않았습니다.예를 들어 다음과 같습니다.

쿠키 설정:

$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);

cookie 클리어

setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);

도움이 됐으면 좋겠다.

쿠키가 과거에 만료되도록 설정한 경우 브라우저는 쿠키를 제거합니다.php.net 에서 setcookie() 삭제 예를 참조하십시오.

PHP 문서에서 "예 #2 setcookie() delete example"이라는 라벨이 붙은 샘플을 참조하십시오.브라우저에서 쿠키를 지우려면 쿠키가 만료되었음을 브라우저에 알려야 합니다.그런 다음 브라우저가 삭제합니다. unsetCOOKIE "안녕하세요" 라고 합니다.

PHP v7 setcookie() 코드는 다음과 같이 동작합니다.

<?php
    setcookie('user_id','');
    setcookie('session','');
?>

포토 80 에서의 스니핑시의 tcpdump 출력으로부터, 서버는 다음의 HTTP 헤더를 클라이언트(브라우저)에 송신합니다.

Set-Cookie: user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Set-Cookie: session=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0

다음 요청의 패킷을 관찰하면 브라우저는 더 이상 이러한 쿠키를 헤더로 전송하지 않습니다.

을 '먹다'로 .false정을해 해제: :

setcookie('cookiename', false);

쿠키를 삭제하려면 값을 NULL로 설정하기만 하면 됩니다.

"만료 시간, 경로 또는 도메인에 기본값이 아닌 쿠키를 설정한 경우 쿠키를 삭제할 때 쿠키가 올바르게 삭제되도록 동일한 값을 다시 제공해야 합니다.""Learning PHP5" 책에서 인용합니다.

따라서 이 코드가 작동해야 합니다(내 경우).

: " " "setcookie('foo', 'bar', time() + 60 * 5);

: " " "setcookie('foo', '', time() + 60 * 5);

하지만 모두가 유통기한을 과거로 설정하고 있는 것을 알 수 있었습니다.그것이 필요한가요?그 이유는 무엇입니까?

현재 모든 도메인에서 쿠키를 완전히 삭제하려면 다음 코드가 도움이 됩니다.

unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");

이 코드는 cookie 변수를 모든 도메인에서 완전히 삭제합니다. 즉, / " - cookie 변수의 값이 현재 도메인 또는 경로뿐만 아니라 모든 도메인에 대해 모두 설정되어 있음을 나타냅니다.time() - 300 은 쿠키 변수가 이전 시간으로 설정되어 만료됨을 나타냅니다.

그래서 완전히 지워진 거야

쓸 수 있는 모든 쿠키를 제거하려면:

foreach ($_COOKIE as $key => $value) {
    unset($value);
    setcookie($key, '', time() - 3600);
}

다음과 같이 쿠키를 "삭제"하려면 만료 날짜를 1시간 전으로 설정하십시오.

setcookie ("TestCookie", "", time() - 3600);

또는

setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);

출처 : http://www.php.net/manual/en/function.setcookie.php

하다를 돼요.filter_input()다음과 같이 방문자가 입장/수축할 수 있는 모든 글로벌에 대해 기능합니다.

$visitors_ip = filter_input(INPUT_COOKIE, 'id');

자세한 것은, http://www.php.net/manual/en/function.filter-input.php 및 http://www.w3schools.com/php/func_filter_input.asp 를 참조해 주세요.

이 토픽이 작성된 지 오래되었지만 이 솔루션에서 약간의 오류가 발견되었습니다(세부사항이기 때문에 그렇게 말할 수 있습니다).다음과 같은 솔루션이 더 나은 솔루션일 수 있다는 데 동의합니다.

if (isset($_COOKIE['remember_user'])) {
            unset($_COOKIE['Hello']);
            unset($_COOKIE['HelloTest1']);
            setcookie('Hello', null, -1, '/');
            setcookie('HelloTest1', null, -1, '/');
            return true;
        } else {
            return false;
        }

단, 이 경우 설정 해제 기능이 작동하는 모든 경우 쿠키를 삭제하고 설정 해제 기능이 작동하지 않는 경우 즉시 만료된 새 쿠키를 만듭니다.

즉, 설정 해제된 기능이 작동하더라도 컴퓨터에 쿠키가 2개 남아 있습니다.논리적인 관점에서 요구되는 목표는 가능한 경우 쿠키를 삭제하고, 그렇지 않은 경우 쿠키를 만료시키는 것입니다. 즉, "가장 깨끗한" 결과를 얻는 것입니다.

그래서, 우리가 해야 할 일은 다음과 같습니다.

if (isset($_COOKIE['remember_user'])) {
            setcookie('Hello', null, -1, '/');
            setcookie('HelloTest1', null, -1, '/');
            unset($_COOKIE['Hello']);
            unset($_COOKIE['HelloTest1']);
            return true;
        } else {
            return false;
        }

감사합니다.좋은 하루 되세요:)

$cookie_name = "my cookie";
$cookie_value = "my value";
$cookie_new_value = "my new value";

// Create a cookie,
setcookie($cookie_name, $cookie_value , time() + (86400 * 30), "/"); //86400 = 24 hours in seconds

// Get value in a cookie,
$cookie_value = $_COOKIE[$cookie_name];

// Update a cookie,
setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), "/");

// Delete a cookie,
setcookie($cookie_name, '' , time() - 3600, "/"); //  time() - 3600 means, set the cookie expiration date to the past hour.

간단해!

setcookie("cookiename", "cookievalue", 1);

쿠키 값을 기반으로 세션 변수를 설정할 수 있습니다.

session_start();

if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}

echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");

이 커스터마이즈 기능은 간단하게 사용할 수 있습니다.

function unset_cookie($cookie_name) {
    if (isset($_COOKIE[$cookie_name])) {
        unset($_COOKIE[$cookie_name]);
        setcookie($cookie_name, null, -1);
    } else { return false; }
}

$_COOK를 삭제하려면IE['user_account']
사용방법:

unset_cookie('user_account');

입장 시0time은 브라우저의 "now" (+0s는 실제로 now)를 의미하며 쿠키는 삭제됩니다.

setcookie("key", NULL, 0, "/");

Chrome 브라우저에서 확인했는데 다음과 같은 정보가 나타납니다.

Name: key
Content: Deleted
Created: Sunday, November 18, 2018 at 2:33:14 PM
Expires: Sunday, November 18, 2018 at 2:33:14 PM

크롬에서는 쿠키의 마지막 세 가지 파라미터를 정의하지 않으면 쿠키를 설정 해제할 수 없다는 것을 알게 되었습니다.도메인은 안전하고 http 전용입니다.

if (isset($_COOKIE['user_id'])) {
unset($_COOKIE['user_id']); 
setcookie("user_id", "", time() - 3600, "/", 'yourdomain.com',true,true);
header('Location: /');
} else {
/* other code here */
}

이렇게 해서 나는 일을 해냈다.다음의 메뉴얼을 참조해 주세요.공식 PHP 사이트의 쿠키에 대한 모든 정보

서버에서 php를 사용하여 쿠키를 삭제하고 브라우저에서도 js를 사용하여 쿠키를 삭제해야 합니다.(이들은 php로 작성했지만 cookie 파일은 브라우저 클라이언트에도 있습니다).

예:

if ($_GET['action'] == 'exit'){
            // delete cookies with js and then in server with php:
            echo '
            <script type="text/javascript">
                var delete_cookie = function(name) {
                     document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
                };
                delete_cookie("madw");
                delete_cookie("usdw");
            </script>
            ';
unset($_COOKIE['cookie_name']);
unset($_COOKIE['cookie_time']);

대부분의 사람들은 이것이 로컬 머신에서만 작동한다는 것을 잊고 있습니다.도메인에서는 다음과 같은 패턴이 필요합니다.

setcookie("example_cookie", 'password', time()-3600, "/", $_SERVER['SERVER_NAME']);

언급URL : https://stackoverflow.com/questions/686155/remove-a-cookie

반응형