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]
$SESS_DBHOST = "yourhost"; /* データベースサーバーのホスト名 */
$SESS_DBNAME = "yourdb"; /* データベース名 */
$SESS_DBUSER = "youruser"; /* データベース ユーザー */
$SESS_DBPASS = "パスワード"; /* データベース パスワード */
$SESS_DBH = ""
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime"); 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 "Can' t connect to $SESS_DBHOST as $SESS_DBUSER";
echo "
MySQL エラー: " . mysql_error();
}
if (! mysql_select_db($SESS_DBNAME, $ SESS_DBH)) {
echo "
;){
グローバル$ sess_dbh、$ sess_life; = mysql_query($qry, $SESS_DBH);
if (list($ value) = mysql_fetch_row($qid)) {
$expiry = time () + $SESS_LIFE $value; = addlashes($val);
$qry = "session_tbl VALUES ('$key', $expiry, '$value')"
$qid = mysql_query($qry, $SESS_DBH); ! $qid) {
$qry = "UPDATE session_tbl SET 有効期限 = $expiry, 値 = '$value' WHERE sesskey = '$key' AND 有効期限 >
$qid = mysql_query, $SESS_DBH);
}
return $qid;
function sess_destroy($key) {
global $SESS_DBH WHERE sesskey = '$key; '";
$qid = mysql_query($qry, $SESS_DBH);
return $qid;
function sess_gc($maxlifetime) {
global $SESS_DBH; $qry = " DELETE FROM session_tbl $qid = mysql_query($qry, $SESS_DBH);
return mysql_affected_rows($SESS_DBH);
}
session_set_save_handler(
"sess_open",
"sess_close" ,
"sess_read",
"sess_write"、
" sess_destroy",
"sess_gc");
session_start();
?>
上記の手順を完了した後、プログラム内で session_start() の代わりに require("session_inc.php" ) を使用しますが、他のセッション関数はそのままです。先ほどと同じように呼び出されます。
データテーブル構造: [セッション]
CREATE TABLE セッション (
sesskey char(32) not null、
expiry int(11) unsigned not null、
value text not null、
PRIMARY KEY (sesskey)
);プログラムコード: [session_inc.php]
$SESS_DBHOST = "yourhost"; /* データベースサーバーのホスト名 */
$SESS_DBNAME = "yourdb"; /* データベース名 */
$SESS_DBUSER = "youruser"; /* データベース ユーザー */
$SESS_DBPASS = "パスワード"; /* データベース パスワード */
$SESS_DBH = ""
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime"); 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 "
echo "
}
if (! mysql_select_db($SESS_DBNAME, $ SESS_DBH)) {
echo "
グローバル$ sess_dbh、$ sess_life; = mysql_query($qry, $SESS_DBH);
if (list($ value) = mysql_fetch_row($qid)) {
$expiry = time () + $SESS_LIFE $value; = addlashes($val);
$qry = "session_tbl VALUES ('$key', $expiry, '$value')"
$qid = mysql_query($qry, $SESS_DBH); ! $qid) {
$qry = "UPDATE session_tbl SET 有効期限 = $expiry, 値 = '$value' WHERE sesskey = '$key' AND 有効期限 >
$qid = mysql_query, $SESS_DBH);
}
return $qid;
function sess_destroy($key) {
global $SESS_DBH WHERE sesskey = '$key; '";
$qid = mysql_query($qry, $SESS_DBH);
return $qid;
function sess_gc($maxlifetime) {
global $SESS_DBH; $qry = " DELETE FROM session_tbl $qid = mysql_query($qry, $SESS_DBH);
return mysql_affected_rows($SESS_DBH);
}
session_set_save_handler(
"sess_open",
"sess_close" ,
"sess_read",
"sess_write"、
" sess_destroy",
"sess_gc");
session_start();
?>
上記の手順を完了した後、プログラム内で session_start() の代わりに require("session_inc.php" ) を使用しますが、他のセッション関数はそのままです。先ほどと同じように呼び出されます。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事
<🎜>:庭を育てる - 完全な突然変異ガイド
3週間前ByDDD
<🎜>:バブルガムシミュレーターインフィニティ - ロイヤルキーの取得と使用方法
4週間前By尊渡假赌尊渡假赌尊渡假赌
Nordhold:Fusion System、説明
4週間前By尊渡假赌尊渡假赌尊渡假赌
マンドラゴラ:魔女の木のささやき - グラップリングフックのロックを解除する方法
3週間前By尊渡假赌尊渡假赌尊渡假赌

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
