ホームページ  >  記事  >  バックエンド開発  >  セッションをデータベースに保存する セッションをデータベースに保存する方法

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

WBOY
WBOYオリジナル
2016-07-29 08:34:41962ブラウズ

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");
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 "

  • $ 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 までご連絡ください。