ホームページ  >  記事  >  php教程  >  PHP は mysql データベースを使用してセッション コードを保存します

PHP は mysql データベースを使用してセッション コードを保存します

WBOY
WBOYオリジナル
2016-06-13 12:18:211133ブラウズ

隠れた危険 1: クライアント マシンの Cookie がウイルスによって無効になった場合、セッションは失われているのと同じです。
隠れた危険 2: PHP では、セッションはデフォルトでファイルの形式で一時フォルダーに保存されます。
頻繁にアクセスされる大規模なシステムの場合は、これで問題ありません。システムにとって、これは良い考えではありません。この Web サイトに 1 日に 1,000 人がアクセスするとします。 1 か月後、セッションの一時フォルダーには 30,000 の一時ファイルが含まれます。コンピューターが 30000 から session_sid を見つけるのにどれくらいの時間がかかるかを想像してみてください。
効率を上げるためです。
トランザクションはデータベースを使用してセッションを保存します。具体的な方法は以下の通りです。
1. php.ini ファイルを変更します。
PHP でセッションを保存するデフォルトの方法はファイルであるため、これを変更する必要があります。つまり、「session.save_handler = files」を見つけて、「files」を「User」に変更します。
セッションモードをユーザー定義に変更します。
2. データベースを作成します:
CREATE TABLE `db_session` (
`sesskey` char(32) NOT NULL、
`expiry` int(11) unsigned NOT NULL、
`value` text NOT NULL,
PRIMARY KEY (`sesskey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/code]
データベースは次を示します: db_session
列名: sesskey、expiry、 value ここで、 sesskey は主キーです。
Value はセッションに値を保存します。
3. session_mysql.php ファイルを作成します。このファイルは、セッションを保存するメソッドを構築するために使用されます。パラメータを変更するだけで、直接使用できます。
session_mysql.php
PHP コード:

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


$gb_DBname="db_myBBS";//データベース名
$gb_DBuser="root";//データベースユーザー名
$gb_DBpass="23928484";//データベースパスワード
$gb_DBHOSTname= "localhost" ;//ホストの名前または IP アドレス
$SESS_DBH="";
$SESS_LIFE=get_cfg_var("session.gc_maxlifetime");// セッションの最大有効期間を取得します。
function sess_open($save_path,$session_name){
global $gb_DBHOSTname,$gb_DBname,$gb_DBuser,$gb_DBpass,$SESS_DBH
if(!$SESS_DBH=mysql_pconnect($gb_DBHOSTname,$gb_DBuser,$ gb_DBpass)){
echo "

  • MySql エラー:".mysql_error()."
  • ";
    die()
    }
    if(!mysql_select_db($gb_DBname) ,$SESS_DBH)){
    echo "
  • MySql エラー:".mysql_error()."
    die()>}
    return }
    関数 sess_close(){
    return true;
    }
    関数 sess_read($key){
    グローバル $SESS_DBH,$SESS_LIFE; db_session where sesskey = '$key' および有効期限 > ".time();
    $qid=mysql_query($qry,$SESS_DBH);
    if(list($value)=mysql_fetch_row($qid)) {
    return $value;
    }
    return
    }
    function sess_write($key,$val){
    global $SESS_DBH,$SESS_LIFE; =time() $SESS_LIFE;
    $value=$val;
    $qry="db_session 値に挿入('$key',$expiry,'$value')"; ($qry,$SESS_DBH);
    if(!$qid){
    $qry="update db_session set expiry=$expiry, value='$value' where sesskey='$key' and expiry > ".time();
    $qid=mysql_query($qry,$SESS_DBH);
    }
    return $qid;
    }
    function sess_destroy($key){
    global $SESS_DBH;
    $qry="sesskey = '$key' から db_session を削除します";
    $qry,$SESS_DBH); >function sess_gc($maxlifetime){
    global $SESS_DBH;
    $qry="delete from db_session where expiry < ".time();
    $qid=mysql_query($qry,$SESS_DBH);
    return mysql_affected_rows($SESS_DBH);
    }
    session_module_name();
    session_set_save_handler("sess_open","sess_close","sess_read","sess_write","sess_destroy","sess_gc") ;
    ?>


    4. テスト ファイルを作成します。
    作成した session_mysql.php ファイルは、使用する前に参照する必要があります。
    session_test.php
    PHP コード:


    コードをコピー

    コードは次のとおりです:


    include ("session_mysql.php"); session_start(); $_SESSION['abc']= "A: また来ます!"; ]= " B: 私もです "; $_SESSION['name']= "ルイ "; echo "クリックしてください 🎜>? >


    get_session_test.php



    コードをコピーします

    コードは次のとおりです:

    include ("session_mysql.php");
    echo $_SESSION['abc'];

    echo "
    "; >echo $_SESSION['meto']; echo "
    "; $_SESSION['wq']="12e"; >echo "もう一度クリック";

    get_session_test2.php

    コードをコピー コードは次のとおりです。


    include ( "session_mysql.php");
    session_start();
    echo "
    ";
    echo $_SESSION['abc']; 🎜>echo "
    ";
    echo $_SESSION['name'];
    echo $_SESSION['wq']; session_destroy() ;//すべてのセッションを破棄するために使用される関数。
    ?>


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