ホームページ php教程 php手册 変数の「後続」: Cookie とセッション

変数の「後続」: Cookie とセッション

Jun 21, 2016 am 09:10 AM
cookie quot session string

Cookie|セッション|変数

多くの場合、Web サイト全体で訪問者のアクティビティを追跡し、その ID を自動的または半自動的に識別する必要があります (つまり、よく言及される Web サイトへのログインなどの機能)。このとき、多くの場合、一連の変数が使用されます。訪問者を「フォロー」します。変数「following」を実装するにはさまざまな方法がありますが、より一般的に使用されるのは cookie と session です。以下では、一般的な PHP を使用してその使用法を説明します。

1. Cookieの使用

Cookieとは、Webサイトによってブラウザクライアントに保存される情報であり、通常、訪問者のマシンに保存されている変数がHTTPヘッダーとともにクライアントに送信されます。 Cookie が有効になった後、有効期限が切れる前に、顧客がページをリクエストするたびに、それに応じて処理する限り、Cookie も一緒にサーバーに送信され、変数の「フォロー」を実現できます。

1. Cookie 変数を設定する

Cookie 変数を設定するには、PHP で使用される関数は次のとおりです:

int setcookie(string name, string value, int Expired,
string path, string domain, int secure);


ここで、name はCookie 変数名識別子を使用すると、通常の変数名と同じように、PHP で Cookie 変数を参照することができます。 value は Cookie 変数の初期値、expired は Cookie 変数の有効期間を表し、domain は Cookie 変数の Web サイトを表します。

たとえば、変数のユーザー名を設定したい場合、その値は文字列「bluewind」で、次のようなコードを書くことができます:

setcookie ("username", "bluewind"); //これらの 2 つのパラメーターは次のとおりです。 setcookie に必要です。


操作のタイムアウトを制限するために、この変数の有効時間を 10 分などに設定することもできます:

setcookie ("username", "bluewind", 600000); //有効時間の単位はミリ秒です。


注: setcookie は、header 関数と同様に、クライアントに出力できるステートメントの前に配置する必要があります。

2. 変数を破棄するには

Cookie 変数を破棄するには、その値を空 ("") に設定するだけです。上記の変数を破棄したい場合は、再度次のように記述します:

setcookie ("username", "");


以上です。これは安全に脱出する目的でよく使用されます。

3. Cookie の有効範囲と有効期間

Cookie の有効範囲 (つまり、この Cookie 変数はこの範囲のページで取得できます)。デフォルトはこのディレクトリとそのサブディレクトリです。もちろん、パスとドメインを使用できます。 setcookieのパラメータを見直します。 Cookie の有効期限を設定しない場合 (1. Cookie 変数の設定の例を参照)、Web サイトのページを離れるときに、同時に Cookie は自動的に破棄されます。

http://www.netscape.com/newsref/std/cookie_spec.html は、Cookie の創始者である Netscape によって提供される完全な紹介情報です。

2番目、セッションの使用

セッションレベル変数とも呼ばれるセッション変数は、訪問者のWebサイトとの対話全体を通じて存在するパブリック変数です。クライアントが Cookie をサポートしていない、またはサポートしていない可能性がある場合 (Linux の lynx など...あはは、ちょっと悲惨です)、データが正しく安全であることを確認するために、セッション変数を使用する必要があります。セッションはさまざまな Web 言語で異なる方法で実装されており、PHP も 4.0 以降でサポートを開始します。まず、簡単な例を見てみましょう:


test.php
----------
session_start(); //変数 var
$ を登録します。 var="これは SESSION 変数の値です"; //var 変数はセッション変数として使用されています
?>
test1.php
------

session_start(); (var ; セッションを初期化する関数。この関数の使用法は次のとおりです:

: boolean session_start(void);


その関数は、新しいセッションを初期化することです。顧客がすでにセッションに参加している場合は、に接続しますオリジナルのセッション。この関数にはパラメータがなく、戻り値は true です。

2. セッションに変数を登録します

セッションに保存したい変数は、次の関数を使用して変数を登録する必要があります:

boolean session_register(string name);


この関数は変数をグローバル変数を現在のセッションに追加します。パラメータ名は追加する変数の名前です。成功した場合は true 値を返します。

その後、変数名を直接使用して値を代入すると、値が保存されます。

3. セッション変数の値を使用する

上の例に示すように、新しいページで前の 2 つの手順 (代入を除く) を繰り返す限り、セッション変数を直接使用できます。

4. セッションの破棄

変数全体を破棄するのではなく、変数の登録を解除したい場合は、関数を使用する必要があります:

boolean session_unregister(string name);


使い方はとても簡単です。パラメータ名は削除する変数の名前です。成功した場合は true 値を返します。

ただし、安全に終了するなど、セッション変数を完全に「破棄」したい場合は、関数を使用します:

boolean session_destroy(void);


この関数は、現在のセッションを終了します。この関数にはパラメータがなく、戻り値は true です。

5. その他の便利なセッション関数

a. 変数が登録されているかどうかを確認する

boolean session_is_registered(string name);


この関数は、指定された変数が現在のセッションに登録されているかどうかを確認できます。パラメータ名はチェックする変数の名前です。成功した場合は true 値を返します。

b. 登録された変数を null に戻す

void session_unset(void); この関数は、もちろん、登録されているすべてのセッション変数を null に設定することができます。これは登録解除ではなく、破棄と同じではないことに注意してください。 次の例は、この関数をわかりやすく説明しています。

session_register('a','b','c'); //自動セッション開始
$b=2; ('a'); // $a を登録解除します
echo "A: $a - reg:".session_is_registered('a')." ";
// ただし、グローバル $a は残ります
session_unset(); $b および $c
echo "B:$b - reg:".session_is_registered('b')." ";
// 登録は残ります !
echo "C:$c - reg:".session_is_registered('c ')." ";
echo session_encode()
?> 出力:
A: 1 - reg:
B: - reg:1
C: - reg:1
!b|!c|



c. 独自のセッション処理メソッドをカスタマイズします


void session_set_save_handler (string open、string close、string read、
string write、string destroy、string gc)



この関数はユーザーレベルのセッション保存関数を定義できます (開く、閉じる、書くなど)。たとえば、この関数はセッションをローカル データベースに保存する場合に便利です。デフォルトでは、各セッションはシステムの一時ディレクトリ (たとえば、Unix システムの /tmp) 内の個別のファイルに保存されます。これはニーズに応じて適切な場合もあれば、適切でない場合もあります。たとえば、PHP 対応の Web サーバーが異なるマシンに分散されている場合、それらの間でセッションを簡単に共有することはできません (もちろん、セッションを NFS 共有に保存することもできます)。もう 1 つの潜在的な問題は、マシン上のファイル システムが数千または数百万のセッション ファイルで乱雑であることです。注: この機能はバージョン 4.0b4 以降にのみ登場しました。この関数を使用する前に、まず php.ini ファイル session.save_hadler=user を設定する必要があります。そうしないと、session_set_save_handler() が有効になりません。

さらに、私のテストによると、そのようなセッションをページ間で使用したい場合は、セッションを使用する各スクリプト ファイルにカスタム関数と session_set_save_handler も追加する必要があります。したがって、最良の方法は A を別のものにすることです。インクルードされるファイルは、セッションを使用するすべてのスクリプトにインクルードされます。

次の例は、デフォルトのファイル方法と同様の、基本的なセッション保存方法を示しています。データベースを使用してこれを行う場合も、非常に簡単に行うことができます。


例: session_set_save_handler() の例
function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name
$sess_session_name = $session_name; ;
戻る( true);
関数 close() {
return(true);
関数読み取り ($id) {
グローバル $sess_save_path, $sess_session_name = "$sess_save_path/sess_$id"; ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file))
} else {
return("");
}

}

function write ($id, $sess_data) {
global $sess_save_path, $sess_session_name;
if ($fp = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data));
} else {
return(false)
}
function destroy ($id) {
global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file))

/***********************************************
* 警告 - 必要になります。ここに *
* * 一種のガベージ コレクション ルーチンを実装します。 *
* ********************************************/
function gc ($maxlifetime) {
return true; session_set_save_handler
("open", "close", "read", "write", "destroy", "gc");
//通常どおりセッションの使用に進みます
//これで、通常どおり続行できますセッションも同様に使用します。

?>




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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Cookie はどこに保存されますか? Cookie はどこに保存されますか? Dec 20, 2023 pm 03:07 PM

Cookie は通常、ブラウザの Cookie フォルダに保存されます。ブラウザの Cookie ファイルは通常、バイナリ形式または SQLite 形式で保存されます。Cookie ファイルを直接開くと、文字化けしたり判読できないコンテンツが表示される可能性があるため、使用することをお勧めします。 Cookie を表示および管理するためにブラウザによって提供される Cookie 管理インターフェイス。

コンピューター上の Cookie はどこにありますか? コンピューター上の Cookie はどこにありますか? Dec 22, 2023 pm 03:46 PM

コンピュータ上の Cookie は、使用するブラウザとオペレーティング システムに応じて、ブラウザ上の特定の場所に保存されます。 1. Google Chrome、C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies に保存されます。等

セッション失敗を解決する方法 セッション失敗を解決する方法 Oct 18, 2023 pm 05:19 PM

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

PHP セッションのクロスドメイン問題の解決策 PHP セッションのクロスドメイン問題の解決策 Oct 12, 2023 pm 03:00 PM

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

モバイル Cookie はどこにありますか? モバイル Cookie はどこにありますか? Dec 22, 2023 pm 03:40 PM

携帯電話上の Cookie は、モバイル デバイスのブラウザ アプリケーションに保存されます: 1. iOS デバイスでは、Cookie は Safari ブラウザの [設定] -> Safari -> [詳細] -> [Web サイト データ] に保存されます; 2. Android デバイスでは、Cookie は保存されますChromeブラウザの設定→サイト設定→Cookieなど

Cookie をクリアすると何か影響がありますか? Cookie をクリアすると何か影響がありますか? Sep 20, 2023 pm 06:01 PM

Cookie をクリアすると、パーソナライズ設定と環境設定のリセット、広告エクスペリエンスへの影響、ログイン ステータスとパスワードの記憶機能の破壊などの影響が生じます。詳細な紹介: 1. 個人設定と環境設定をリセットします。Cookie をクリアすると、ショッピング カートが空にリセットされ、商品を再度追加する必要があります。Cookie をクリアすると、ソーシャル メディア プラットフォームでのログイン ステータスも失われるため、再追加. ユーザー名とパスワードを入力してください; 2. 広告エクスペリエンスに影響します. Cookie をクリアすると、Web サイトは私たちの興味や好みを理解できなくなり、無関係な広告などが表示されます。

ブラウザの Cookie が保存される場所の詳細な説明 ブラウザの Cookie が保存される場所の詳細な説明 Jan 19, 2024 am 09:15 AM

インターネットの普及により、ブラウザを使用してインターネットを閲覧することが生活様式になりました。ブラウザを日常的に使用する中で、オンラインショッピング、ソーシャルネットワーキング、電子メールなど、アカウントのパスワードを入力する必要がある場面に遭遇することがよくあります。この情報は、次回アクセスするときに再度入力する必要がないようにブラウザによって記録される必要がありますが、このような場合に Cookie が役に立ちます。クッキーとは何ですか? Cookie とは、サーバーからユーザーのブラウザに送信され、ローカルに保存される小さなデータ ファイルを指し、一部の Web サイトでのユーザーの行動が含まれています。

document.cookieが取得できない問題の解決方法 document.cookieが取得できない問題の解決方法 Nov 23, 2023 am 10:02 AM

document.cookie が取得できない場合の解決策: 1. ブラウザのプライバシー設定、2. 同一オリジン ポリシー、3. HTTPOnly Cookie、4. JavaScript コード エラー、5. Cookie が存在しないか期限切れ、6. クロスドメインの問題、7 . ビューアモード; 8. サーバーの問題; 9. JavaScript 実行タイミング; 10. コンソールログなどを確認します。

See all articles