ホームページ バックエンド開発 PHPチュートリアル php session_set_save_handler関数の使用法を解析する(mysql)_PHPチュートリアル

php session_set_save_handler関数の使用法を解析する(mysql)_PHPチュートリアル

Jul 21, 2016 pm 03:02 PM
handler mysql php save session set コード 関数 コピー 使用法 解析する

コードをコピーします コードは次のとおりです:

/*==============================ファイル説明========= == =============================
@filename: Session.class.php
@description: データベースはオンライン ユーザー セッションを保存しますオンラインユーザー機能を実現!
@notice: 当サイトではログインに Cookie (有効時間は 1 時間) を使用しているため、セッションの有効期限は 1 時間です。
したがって、一度更新して更新するのではなく、ユーザーがログインした時刻のみを記録します。データベース内のセッションレコードを削除するアクションは、ユーザーがタイムアウトしてこのファイルを実行するか、正常に終了したときに発生します(session_destory)
@database。 : データベース:セッション フィールド:sessionid(char32 )、uid(int10)、last_visit(int10)
============================= =========== ======================================
*/
class session {
private $db ;
private $lasttime=3600;//タイムアウト: 1 時間
function session(&$db) {
, これは必見です!Php.ini ファイルで設定されていない場合
session_set_save_handler(
array(&$this, 'open'), // session_start() の実行時に実行される
array(&$this, 'close'), // スクリプト内で実行される 実行されるsession_write_close() または session_destroy() が完了または呼び出されたとき、つまり、すべてのセッション操作が完了した後に実行されます
array(&$this, 'read'), // session_start() の実行時に実行されます。現在のセッション データ
array(&$this, 'write'), //スクリプトの終了時にこのメソッドが実行され、session_write_close() が SESSION データの送信を強制するために使用されます
array(&$this, 'destroy') , // session_destroy() の実行時に実行されます
array(&$this, 'gc') // 実行確率は session.gc_probability と session.gc_divisor の値によって決まります タイミングは open, read 後です。 、 session_start は open、read、gc を実行します
session_start(); '/([a-zA-Z_x7f -xff][a-zA] -Z0-9_x7f-xff]*)|/',
for ( $i = 0; isset($vars[$i] ); $i++) {
$result[$vars[$i++]] = unserialize($vars[$i]);
を使用してusing using using using using through through through out through through through through through through over through Over's'' ''' -through'-' ‐‐‐‐‐‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ SELECT uid FROM sessions where session_id = '"。$ sessionkey。"' limit 1 ";
function write($SessionKey,$VArray) {
require_once(MRoot.DIR_WS_CLASSES .'db_mysql_class.php');
$db1=new DbCom();
// 今すぐデータベースに接続します
$db1 ->connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
$db1->query("set names utf8");
$this->db=$db1;
$SessionArray = addlashes($VArray) ;
$data=$this->unserializes($VArray);  
$sql0 = "SELECT uid FROM セッション WHERE session_id = '".$SessionKey."' 制限 1";
$query0 =$this->db->query($sql0);
if($this->db->num_rows($query0)<=0){
if (isset($data[ 'webid']) && !empty($data['webid'])) {
$this->db->query("insert into `sessions` set `session_id` = '$SessionKey',uid=' ".$data['webid']."',last_visit='".time()."'");
}
return true;
}else{
/*$sql = " 「セッション」セット」 ;
if(isset($data['webid'])){
$sql .= "uid = '".$data['webid']."', " ;
}
$sql.="`last_visそれは= null "
. "ここで `session_id` = '$SessionKey'";
$this->db->query($sql); */
true を返します。
}
}
function destroy($SessionKey) {
$this->db->query("delete from `sessions` where `session_id` = '$SessionKey'");
true を返します。
}
function gc($lifetime) {
$this->db->query("delete from `sessions` where unix_timestamp(now()) -`last_visit` > '".$this->lasttime ."'");
return true;
}
}
?>

下面是php.ini中session的配置说明:
session.save_handler = "files"
 存储和检索与会话关联的数据的处理器名字。默认为文件("files")。
 如果想要使用自定义的处理器(如基于数据库的处理器),可用"user"。
 有一个使用PostgreSQL的处理器:http://sourceforge.net/projects/phpform-ext/

session.save_path = "/tmp"
 传递给存储处理器的参数。对于files处理器,此值是创建会话数据文件的路径。
 Windows下默认为临时文件夹路径。
 你可以使用"N[MODE]/path"这样模式定义该路径(N是一个整数)。
 N表示使用N层深度的子目录,而不是将所有数据文件都保存在一个目录下。
 [MODE]可选,必须使用8进制数,默认600(=384),表示每个目录下最多保存的会话文件数量。
 这是一个提高大量会话性能的好主意。
 注意0: "N[MODE]/path"两边的双引号不能省略。
 注意1: [MODE]并不会改写进程的umask。
 注意2: php不会自动创建这些文件夹结构。请使用ext/session目录下的mod_files.sh脚本创建。
 注意3: 如果该文件夹可以被不安全的用户访问(比如默认的"/tmp"),那么将会带来安全漏洞。
 注意4: 当N>0时自动垃圾回收将会失效,具体参见下面有关垃圾搜集的部分。

session.name = "PHPSESSID"
用在cookie里的会话ID标识名,只能包含字母和数字。

session.auto_start = Off
 在客户访问任何页面时都自动初始化会话,默认禁止。
 因为类定义必须在会话启动之前被载入,所以若打开这个选项,你就不能在会话中存放对象。

session.serialize_handler = "php"
 用来序列化/解序列化数据的处理器,php是标准序列化/解序列化处理器。
 另外还可以使用"php_binary"。当启用了WDDX支持以后,将只能使用"wddx"。

session.gc_probability = 1
session.gc_divisor = 100
 定义在每次初始化会话时,启动垃圾回收程序的概率。
 这个收集概率计算公式如下:session.gc_probability/session.gc_divisor
 对会话页面访问越频繁,概率就应当越小。建议值为1/1000~5000。

session.gc_maxlifetime = 1440
 超过此参数所指的秒数后,保存的数据将被视为'垃圾'并由垃圾回收程序清理。
 判断标准是最后访问数据的时间(对于FAT文件系统是最后刷新数据的时间)。
 如果多个脚本共享同一个session.save_path目录但session.gc_maxlifetime不同,
 那么将以所有session.gc_maxlifetime指令中的最小值为准。
 如果使用多层子目录来存储数据文件,垃圾回收程序不会自动启动。
 你必须使用一个你自己编写的shell脚本、cron项或者其他办法来执行垃圾搜集。
 比如,下面的脚本相当于设置了"session.gc_maxlifetime=1440" (24分钟):
 cd /path/to/sessions find -cmin +24 | xargs rm

session.referer_check =
 如果请求头中的"Referer"字段不包含此处指定的字符串则会话ID将被视为无效。
 注意:如果请求头中根本不存在"Referer"字段的话,会话ID将仍将被视为有效。
 默认为空,即不做检查(全部视为有效)。

session.entropy_file = "/dev/urandom"
 附加的用于创建会话ID的外部高熵值资源(文件),
 例如UNIX系统上的"/dev/random"或"/dev/urandom"

session.entropy_length = 0
 从高熵值资源中读取的字节数(建议值:16)。

session.use_cookies = On
 是否使用cookie在客户端保存会话ID

session.use_only_cookies = Off
 是否仅仅使用cookie在客户端保存会话ID
 打开这个选项可以避免使用URL传递会话带来的安全问题。
 但是禁用Cookie的客户端将使会话无法工作。

session.cookie_lifetime = 0
 传递会话ID的Cookie有效期(秒),0 表示仅在浏览器打开期间有效。

session.cookie_path = "/"
 传递会话ID的Cookie作用路径。

session.cookie_domain =
セッションIDのCookieスコープを渡します。
デフォルトは空で、Cookie 仕様に従って生成されたホスト名を示します。

session.cookie_secure = Off
安全な接続 (https) 経由でのみ Cookie を送信するかどうか。

session.cookie_httponly = Off
Cookie に httpOnly フラグを追加するかどうか (HTTP プロトコル アクセスのみが許可されます)、
これにより、クライアント スクリプト (JavaScript など) が Cookie にアクセスできなくなります。
このコマンドを有効にすると、XSS 攻撃によるセッション ID ハイジャックを効果的に防ぐことができます。

session.cache_limiter = "nocache"
セッション ページのキャッシュ制御モードを指定するには、{nocache|private|public} に設定します。
、http 応答ヘッダーでキャッシュが無効なコマンドが送信されないようにするには、空に設定します。

session.cache_expire = 180
クライアントキャッシュにおけるセッションページの有効期間(分)を指定します
session.cache_limiter=nocacheの場合、本設定は無効となります。

session.use_trans_sid = Off
URL に SID (セッション ID) を表示するためにクリアコードを使用するかどうか。
ユーザーにセキュリティ リスクをもたらすため、デフォルトで禁止されています:
1- ユーザーは、電子メール/irc/QQ/MSN... を通じて有効な SID を含む URL を他の人に伝える可能性があります。
2- 有効な SID を含む URL は公共のコンピューターに保存される場合があります。
3- ユーザーは固定 SID を持つ URL をお気に入りまたは閲覧履歴に保存できます。
URL ベースのセッション管理には、Cookie ベースのセッション管理よりも常に大きなリスクが伴うため、無効にする必要があります。

session.bug_compat_42 = On
session.bug_compat_warn = On
PHP4.2 より前のバージョンには、未指定の「バグ」があります:
register_globals=Off の場合でもグローバル セッション変数の初期化を許可します。
PHP でこの機能を使用する場合、 4.3以降では警告が表示されます。
この「バグ」を閉じて警告を表示することをお勧めします。

session.hash_function = 0
SID を生成するためのハッシュ アルゴリズム。 SHA-1 の方が安全です
0: MD5 (128 ビット)
1: SHA-1 (160 ビット)
SHA-1 の使用を推奨します。

session.hash_bits_per_character = 4
SID 文字列の各文字に保存されるビット数を指定します。
これらの 2 進数はハッシュ関数の結果です。
4: 0-9、a-f
5: 0-9、a-v
6: 0-9、a-z、A-Z、"-"、","
推奨値は5です

url_rewriter.tags = "a=href,area=href,frame=src,form=,fieldset="
このコマンドは PHP のコア部分に属し、Session モジュールには属しません。
SID を含めるように書き換える HTML タグを指定します (session.use_trans_sid=On の場合のみ有効)
フォームとフィールドセットは特別です:
これらを含めると、URL リライターは非表示の " " を追加します。 URL に追加する必要がある追加情報が含まれています。
XHTML 標準に準拠したい場合は、フォーム項目を削除し、フォーム フィールドの前後に

タグを追加してください。
注: すべての法的項目には等号が必要です (その後に値がない場合でも)。
推奨値は「a=href、area=href、frame=src、input=src、form=fakeentry」です。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327928.html技術記事次のようにコードをコピーします: ?php /*============================ファイルの説明========== == ============================= @filename: session.class.php @description: データベースをオンラインで保存します...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

PHPの現在のステータス:Web開発動向を見てください PHPの現在のステータス:Web開発動向を見てください Apr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHP:多くのウェブサイトの基礎 PHP:多くのウェブサイトの基礎 Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

See all articles