PHPでクッキー(Cookie)を削除する方法とは【メンターが回答】

「PHPでクッキー(cookie)を削除する方法がわかりません。」という質問にTechAcademyの現役エンジニアが解決方法を回答しています。Cookieを保存する書き方、削除する書き方についてぜひ理解しておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

※TechAcademyに実際に寄せられた質問に現役エンジニアのメンターが回答しました。

 

田島悠介

質問に対して現役のエンジニアが回答していくシリーズだね!

大石ゆかり

今回はどういう質問でしょうか?

田島悠介

PHPでクッキーを削除する方法だね!実際に回答してもらった内容を紹介するね!

大石ゆかり

お願いします!

質問

該当のソースコードの関数の呼び出し前に、下記のようにCookieに値を挿入しているのですが、関数a呼び出し後、画面遷移した際にCookieが削除されていません。

setcookie(USER_DATA, $usr_data, time()+60*60*24*30, "/");

header(“Location:”.$url); は外部サイトに遷移させています。

どう書けばCookieが削除されるようになるのでしょうか?

 

該当のソースコード

public function a() { 
    $usr_data = isset($_COOKIE[USER_DATA]) ? $_COOKIE[USER_DATA] : ''; 
    if (empty($usr_data)) { 
        return FALSE; 
    } 
    //Cookie削除 
    setcookie(USER_DATA, $usr_data, time()-60*60*24*30, "/");

    $url = "https://・・・・"; 
    header("Location:".$url); 
    exit; 
    } 
}

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

メンターからの回答

ソースコードをみるとCookieデータが無い時はreturn falseで処理がされず、ある時はそのデータをそのまま保存する仕様になっております。

public function a() { 
     $usr_data = isset($_COOKIE[USER_DATA]) ? $_COOKIE[USER_DATA] : ''; 
     if (empty($usr_data)) { 
          return FALSE; 
     } 
     //Cookie削除 
     setcookie(USER_DATA, '', time()-60*60*24*30, "/");

     $url = "https://・・・・"; 
     header("Location:".$url); 
     exit; 
    } 
}

こちらのように変更されれば正しくCookieが削除されるかと思います。

 

クッキー(Cookie)とは

Cookieとは、クライアント側(サイト訪問者)にデータを保存するためのものです。

Cookieが取得した情報をもとにサービス提供を行っています。例えばAmazonで買い物をする際にある商品をカートに入れた後、そのページを閉じてまた開いても前に入れた商品はカートに入ったままなはずです。

前回アクセスしたときの情報を記録して、次アクセスした際にその情報を保持しているものがCookieになります。

あるサイトにログインしようとしたらメールアドレスが入力された状態で開くこともCookieによるものです。

書き方

Cookieの保存・削除には、setcookie( )という関数を使用します。

setcookie( cookie名,保存する名前,有効期限 )

 

以上、PHPでクッキー(Cookie)を削除する方法について解説しました。

TechAcademyでは、現役PHPエンジニアのメンターが質問にすぐ回答します。

他にもPHPとHTMLをまとめてコメントアウトする方法をメンターが回答しているので、合わせてご覧ください。

 

回答してくれたメンター

坂本正義(さかもとまさよし)

エンジニアとしては約20年現場にて活動しており、フロントサイド、バックエンド、ネットワーク設定、インフラ構築、データベース設計、Webデザインなど、Webに必要な知識は一通り持っています。

得意な言語はPHP、JavaScriptになります。

 

田島悠介

PHPでクッキーを削除する方法について解説したよ。

大石ゆかり

過去の時間にしてもクッキーが削除されない場合ってあるんでしょうか?

田島悠介

クッキーを作成した時のパスにも注意したいね。消去時は作成時と同じにします。

大石ゆかり

わかりました。ありがとうございます!

 

TechAcademyでは、オンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。