ホームページ  >  記事  >  バックエンド開発  >  PHP の Cookie とセッション

PHP の Cookie とセッション

怪我咯
怪我咯オリジナル
2017-01-16 11:01:561964ブラウズ

PHP には、Cookie とセッションという 2 つの非常に重要な関数があります。これらはどのように使用され、違いは何ですか?

この記事では、Cookie とセッションについて理解します。

Cookie の概要

Cookie は、クライアントのブラウザに保存されるデータです。当社は、ユーザー データを追跡および保存するために Cookie を使用します。通常、Cookie は HTTP ヘッダーを通じてサーバーからクライアントに返されます。ほとんどの Web プログラムは Cookie 操作をサポートしています

Cookie は HTTP ヘッダーに存在するため、ヘッダー関数の使用制限と同様に、他の情報を出力する前に設定する必要があります。

Cookieメソッドの設定

setcookie("name",'zhangsan');

setcookie("name",'zhangsan',time()+60);//Cookieの有効時間を60秒に設定します

// setcookie("visittime",date("y-m-d H:i:s"),time()+60);//Cookieの有効期限を保存する変数を設定します

Cookieメソッドを読み取ります

$name=$_COOKIE[" name "};

Cookieメソッドの削除

setcookie("name","",time()-1);//cookie()の時刻を現在時刻から1を引いた値に設定し、time()関数は戻ります秒単位で表される時間 現在のタイムスタンプの場合、有効期限から 1 秒を引いて過去の時間を取得し、Cookie を削除します

Cookiez を削除するには、setcookie() 関数の 2 番目のパラメーターを a に設定するだけです。 null 値を指定し、3 番目のパラメーターに cookie を設定します。有効期限をシステムの現在時刻よりも小さく設定するだけです

PHP の 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 の最大値を見てみましょう。

PHP の Cookie とセッションまず、セッションはサーバーにセッション情報を保存し、セッションIDを介してクライアント情報を送信します。同時に、サーバーがセッションIDを受信した後、このIDに基づいて関連するセッション情報リソースを提供します

2番目、Cookie。すべての情報はクライアントにテキスト形式で保存され、ブラウザによって管理および維持されます

3 つ目、セッションはサーバーに保存されるため、すべてのリモート ユーザーはセッション ファイルと Cookie の内容を変更できません

クライアント向けです オンエンドストレージ、すべてのセッションは Cookie よりもはるかに安全で、もちろん、簡単な制御、カスタマイズ可能なストレージなど (データベースに保存される) など、多くの利点があります...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。