ホームページ >バックエンド開発 >PHPチュートリアル >PHP の Cookie とセッション
PHP には、Cookie とセッションという 2 つの非常に重要な関数があります。これらはどのように使用され、違いは何ですか?
この記事では、Cookie とセッションについて理解します。
Cookie は、クライアントのブラウザに保存されるデータです。当社は、ユーザー データを追跡および保存するために Cookie を使用します。通常、Cookie は HTTP ヘッダーを通じてサーバーからクライアントに返されます。ほとんどの Web プログラムは Cookie 操作をサポートしています
Cookie は HTTP ヘッダーに存在するため、ヘッダー関数の使用制限と同様に、他の情報を出力する前に設定する必要があります。
setcookie("name",'zhangsan');
setcookie("name",'zhangsan',time()+60);//Cookieの有効時間を60秒に設定します
// setcookie("visittime",date("y-m-d H:i:s"),time()+60);//Cookieの有効期限を保存する変数を設定します
$name=$_COOKIE[" name "};
Cookieメソッドの削除
setcookie("name","",time()-1);//cookie()の時刻を現在時刻から1を引いた値に設定し、time()関数は戻ります秒単位で表される時間 現在のタイムスタンプの場合、有効期限から 1 秒を引いて過去の時間を取得し、Cookie を削除します
Cookiez を削除するには、setcookie() 関数の 2 番目のパラメーターを a に設定するだけです。 null 値を指定し、3 番目のパラメーターに cookie を設定します。有効期限をシステムの現在時刻よりも小さく設定するだけです
Cookie を理解した後、セッションを見てみましょう
session はユーザーのセッション データをユーザーの識別は session_id を通じて行われ、PHP はデフォルトでセッション ID を保存するため、セッションはある程度 Cookie に依存します。ただし、これは絶対的なものではなく、セッション ID を識別のためにサーバーに渡すことができる限り、セッション ID をパラメーターを通じて実装することもできます。
PHP でセッションを使用するのは非常に簡単です。まず session_start メソッドを実行してセッションを開き、次にグローバル変数 $_SESSION を通じてセッションの読み取りと書き込みを行います。
session_start();$_SESSION['test'] = time();var_dump($_SESSION);
session は、設定される値を自動的にエンコードおよびデコードするため、セッションは、次のデータを含むあらゆるデータ型をサポートできます。オブジェクトなど
session_start();$_SESSION['ary'] = array('name' => 'jobs');$_SESSION['obj'] = new stdClass();var_dump($_SESSION);
defaultこの状況では、セッションはファイルの形式でサーバーに保存されるため、ページ上でセッションが開かれると、そのセッション ファイルが排他的に占有され、現在のユーザーによる同時アクセスができなくなります。実行して待ちます。この問題は、キャッシュまたはデータベース ストレージを使用することで解決できます。これについては、いくつかの上級コースで説明します。
セッション値を削除するには、PHP の unset 関数を使用できます。削除後は、グローバル変数 $_SESSION から削除され、アクセスできなくなります。
session_start();$_SESSION['name'] = 'jobs';unset($_SESSION['name']);echo $_SESSION['name'] //プロンプト名が存在しません
すべてのセッションを削除するには、session_destroy 関数を使用して現在のセッションを破棄します。 session_destroy はすべてのデータを削除しますが、session_id はまだ存在します。
session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();session_destroy();
session_destroy はグローバル変数をすぐに破棄しないことに注意してください。 $_SESSION は次回アクセスされるときのみ空になります。そのため、$_SESSION をすぐに破棄する必要がある場合は、unset 関数を使用できます。
session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();unset($_SESSION);session_destroy(); //これでtime Already empty
Cookie 内の session_id (通常はユーザーのログアウト時に使用される) を同時に破棄する必要がある場合は、明示的に setcookie メソッドを呼び出して session_id の Cookie 値を削除する必要もあります。
セッションを使用してユーザーのログイン情報を保存します
セッションはさまざまな種類のデータを保存するために使用できるため、多くの場合、ユーザーのログイン情報、ショッピングカートのデータ、または一時的な使用のための一時的なデータを保存するために使用されます。等。
ユーザーがログインに成功すると、通常、ユーザーの情報はセッションに保存され、いくつかの重要なフィールドは個別に保存され、その後、すべてのユーザー情報が独立して保存されます。
$_SESSION['uid'] = $userinfo['uid'];$_SESSION['userinfo'] = $userinfo;
一般的に言えば、ログイン情報は sessioin または cookie のどちらかに保存できます。両者の違いは次のとおりです。セッションは複数のデータ型に簡単にアクセスできますが、Cookie は文字列型のみをサポートします。同時に、よりセキュリティの高い一部のデータについては、セッションがサービスに保存されている間、Cookie をフォーマットして暗号化する必要があります。より安全な。
header("content-type:text/html; charset=utf-8");
session_start();//ユーザーが正常にログインし、次のユーザーデータを取得したと仮定します $userinfo = array(
'uid ' => 100,
'名前' => '123456789@qq.com',
'年齢' ' => '23');
/* ユーザー情報をセッションに保存*/
$_SESSION['uid'] = $userinfo['uid'];
$_SESSION['name'] = $userinfo [' name'];
$_SESSION['userinfo'] = $userinfo;
//* ユーザーデータを Cookie に保存する簡単な方法*/
$secureKey = 'php';
//暗号化されたパスワードKey $str = Serialize($userinfo);
//ユーザー情報をシリアル化する //ユーザー情報を暗号化する前
$str =base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
/ /ユーザー情報を暗号化した後//暗号化されたユーザー データを Cookie に保存します
setcookie('userinfo', $str);
?>
最後に、セッションと Cookie の最大値を見てみましょう。まず、セッションはサーバーにセッション情報を保存し、セッションIDを介してクライアント情報を送信します。同時に、サーバーがセッションIDを受信した後、このIDに基づいて関連するセッション情報リソースを提供します
2番目、Cookie。すべての情報はクライアントにテキスト形式で保存され、ブラウザによって管理および維持されます
3 つ目、セッションはサーバーに保存されるため、すべてのリモート ユーザーはセッション ファイルと Cookie の内容を変更できません
クライアント向けです オンエンドストレージ、すべてのセッションは Cookie よりもはるかに安全で、もちろん、簡単な制御、カスタマイズ可能なストレージなど (データベースに保存される) など、多くの利点があります...