ホームページ バックエンド開発 PHPチュートリアル セッションをデータベースに保存する セッションをデータベースに保存する方法

セッションをデータベースに保存する セッションをデータベースに保存する方法

Jul 29, 2016 am 08:34 AM

PHP のセッションはデフォルトでサーバー側にファイルとして保存され、クライアント側で変数を保存するために Cookie が使用されます。これにより、ユーザーが何らかのセキュリティ上の理由でブラウザの Cookie をオフにすると、セッション関連の問題が発生します。プログラム内の操作は実行されません。したがって、セッション データをデータベースに保存できれば、クライアントの設定に制限されず、パフォーマンスと拡張性が飛躍的に向上します。プログラムで使用される主要な関数は session_set_save_handler であり、php.ini 内の session.save_handler = ファイルを user に変更する必要があります。ここで説明する環境は linux(freesd)+apache+mysql+php です。
データテーブル構造: [セッション]
CREATE TABLE セッション (
sesskey char(32) not null、
expiry int(11) unsigned not null、
value text not null、
PRIMARY KEY (sesskey)
); :[session_inc.php]
<?php
$SESS_DBHOST = "yourhost"; /* データベースサーバーのホスト名 */
$SESS_DBNAME = "yourdb"; /* データベース名 */
$SESS_DBUSER = "youruser";データベース ユーザー */
$SESS_DBPASS = "パスワード"; /* データベース パスワード */
$SESS_DBH = ""
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
function sess_open($save_path, $session_name); global $SESS_DBHOST, $SESS_DBNAME, $SESS_DBUSER, $SESS_DBPASS, $SESS_DBH;
if (! $SESS_DBH = mysql_pconnect($SESS_DBHOST, $SESS_DBUSER, $SESS_DBPASS)) {
echo "<li>$ SESS_DBHOST に接続できませんAs $ sess_dbuser "; session_tbl WHERE sesskey = '$key' AND expiry > " . time();
$qid = mysql_query($qry, $SESS_DBH);
if (list($value) = mysql_fetch_row($qid)) {
return $
}
return false;
}
function sess_write($key, $val) {
$expiry = time() + $SESS_LIFE; // 有効期限
$value = addslashes; $val);
$qry = "session_tbl 値に挿入 ('$key', $expiry, '$value')";
$qid = mysql_query($qry, $SESS_DBH);
$qry = "UPDATE session_tbl SET expiry = $expiry, value = '$value' WHERE sesskey = '$key' AND expiry > " . $qid = mysql_query($qry, $SESS_DBH) ; }
戻り $qid;
}
function sess_destroy($key) {
global $SESS_DBH;
$qry = "DELETE FROM session_tbl WHERE sesskey = '$key'"
$qid = mysql_que ry($qry, $SESS_DBH) );
$qid を返す
}
function sess_gc($maxlifetime) {
$qry = "session_tbl WHERE から削除します return mysql_affected_rows($SESS_DBH);
}
session_set_save_handler(
"sess_open",
"sess_close",
"sess_read",
"sess_write",
"sess_gc");
session_start ( );
?>
上記の手順を完了した後、プログラム内で session_start() の代わりに require("session_inc.php") を使用する必要があります。
【この記事の著作権は著者とOso.comが共有しています。転載する場合は著者と出典を明記してください】

上記では、データベースを使用してセッションを保存する方法を、データベース保存セッションの内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles