目次
1. セッション原理
2. セッション操作
3. Seesion クライアント Cookie 属性の設定
4. セッションデータ領域のガベージコレクション設定
5. Cookieを無効にしてセッションを使用する方法
6. セッションを永続化する方法
7. セッションとCookieの違いと関係

PHPセッション

Jun 23, 2016 pm 01:08 PM

session は、Cookie に基づいたセッション技術であり、Cookie よりも高いセキュリティを備えています。

1. セッション原理

図に示すように、セッションはクライアントにセッション ID を送信し、同時にクライアントはリクエスト時にセッション ID を送信します。そしてサーバーはこのセッションを渡します。ID はセッション データ領域で見つかります。クライアントにはセッション ID が 1 つだけあり、重要な情報はサーバーに保存されるため、セッションはより安全になります。

2. セッション操作

session_set.php

<?php//定义session数据文件的存储路径,windows下默认是C:\Windows\tempsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');@session_start();echo session_id()."<hr>";//添加$_SESSION['name'] = 'tom';$_SESSION['age'] = 19;$_SESSION['height'] = 75.5;$_SESSION['edu'] = '小学';//修改$_SESSION['age'] = 22;//读取var_dump($_SESSION);//删除unset($_SESSION['edu']);echo "<hr>";var_dump($_SESSION);?>
ログイン後にコピー

セッションがデータを保存するファイルを見てみましょう:

セッションデータ領域の内容は、実行時に保存され、シリアル化された文字列を介して読み取られます。逆シリアル化、セッションはストレージ用に複数のデータ型をサポートしますが、Cookie は文字列のみをサポートします。

セッションの使用は Cookie に基づいており、セッション ID Cookie をクライアントに保存する必要があります。その後、サーバーはこの Cookie の属性を設定して、ブラウザにこの Cookie の生成方法を指示できます:

<?php//定义session数据文件的存储路径,windows下默认是C:\Windows\tempsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');session_name("MYPHPSESSID");//设置session_cookie名称, 默认是PHPSESSID/** *session_set_cookie_params($lifetime, $path, $domain, $secure, $httponly)  *$lifetime int 设置客户端cookie的有效期,默认会话结束时 *$path string设置cookie的有效路径 ,默认'/',可选参数 *$domain string 设置有效域,可选参数 *$secure boolean 是否仅在https下发送cookie 默认false,可选参数 *$httponly boolean 是否仅在http中可使用cookie 默认false,可选参数 *///设置cookie有效期60秒session_set_cookie_params(60, '/', '.phpcode.com', false, false) ;@session_start();echo session_id()."<hr>";$_SESSION['name'] = 'tom';?>
ログイン後にコピー

注: session_set_cookie_params は session_start() の前に設定する必要があります。

4. セッションデータ領域のガベージコレクション設定

セッションデータ領域のデータは、ユーザーがサーバーにアクセスするにつれてどんどんガベージデータが生成されるため、ガベージスキャンとガベージクリーニングが必要です。もちろん、どのデータが期限切れになっているかをサーバーが常にスキャンすることは不可能であり、サーバーに多大な損失が発生するため、一定の確率でトリガーする必要があり、ゴミと判断された場合は、片づけられる。

すごいです

次の 2 つのパラメータは、ガベージ スキャンをトリガーする確率を設定します
ini_set('session.gc_probability', '1');
ini_set('session.gc_divisor', '3');
方法設定に時間がかかる 時間が経つとゴミになるのでリサイクル可能
ini_set('session.gc_maxlifetime', '10');

5. Cookieを無効にしてセッションを使用する方法

<?phpsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');//设置cookie有效期60秒session_set_cookie_params(60, '/', '.phpcode.com', false, false) ;//设置为服务器被请求3次 有1次可能触发gc ,进行垃圾回收ini_set('session.gc_probability', '1');ini_set('session.gc_divisor', '3');//默认1440秒后就被当为垃圾(最后一次写+1440秒),gc的时候,把该session id对应的 session数据区删除//设置为10秒后为垃圾ini_set('session.gc_maxlifetime', '10');@session_start();echo  session_id();$_SESSION['name'] = 'tom';echo "<hr>";var_dump($_SESSION);?>
ログイン後にコピー

show.html

<?php//定义session数据文件的存储路径,windows下默认是C:\Windows\tempsession_save_path(getcwd().DIRECTORY_SEPARATOR.'temp');//在session_start 前设置以下两项ini_set('session.use_only_cookies', '0');ini_set('session.use_trans_sid', '1');@session_start();echo  session_id();//添加$_SESSION['name'] = 'tom';echo "<hr>";var_dump($_SESSION);echo "<hr>";include 'show.html';?>
ログイン後にコピー

session_get_no_cookie .php

rreee

6. セッションを永続化する方法

一般的に、セッションの永続化は推奨されません。
永続化が必要な場合は、次のように設定します:

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title>Insert title here</title>    </head>    <body>        <a href='session_get_no_cookie.php'>forbidden cookie</a>        <form method="post" action="session_get_no_cookie.php">            <input type="submit" value="submit"/>        </form>    </body></html>
ログイン後にコピー

7. セッションとCookieの違いと関係

連絡先:
セッションはCOOKIEに基づいており、セッションIDはCookieに保存され、Cookieデータはクライアントのブラウザに保存されます、セッションは主にサーバー上にデータが配置されます。

違い:

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 確固たる原則と、それらがPHP開発にどのように適用されるかを説明してください。 Apr 03, 2025 am 12:04 AM

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles