ホームページ  >  記事  >  バックエンド開発  >  PHP は mysql データベースを使用してセッション コードを保存します_PHP チュートリアル

PHP は mysql データベースを使用してセッション コードを保存します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:40:261011ブラウズ

隠れた危険 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_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 true;
    }
    function sess_close(){
    return true;
    }
    function sess_read($key){
    global $SESS_DBH,$SESS_LIFE;
    $qry="sesskey = '$key' および有効期限から db_session から値を選択します > ".time();
    $qid=mysql_query($qry,$SESS_DBH); $value)=mysql_fetch_row($qid)){
    return $value;
    }
    return false;
    function sess_write($key,$val){
    global $SESS_DBH,$SESS_LIFE; +$SESS_LIFE;
    $value=$val;
    $qry="db_session 値に挿入('$key',$expiry,'$value')"; if(!$qid){
    $qry="update db_session set expiry=$expiry, value='$value' where sesskey='$key' and expiry >".time(); qry,$SESS_DBH);
    }
    return $qid;
    }
    function sess_destroy($key){
    $qry="sesskey = '$key' から削除します。"; ($qry,$SESS_DBH);
    return $qid;
    }
    function sess_gc($maxlifetime){
    $qry="expiry $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_destroy"," sess_gc" );
    ?>


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



    コードをコピー

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

  • include ("session_mysql.php")
    $_SESSION['abc; ']= "A: また来ます!";
    $_SESSION['meto']= "B: 私もです ";
    $_SESSION['name']= "ルイ "click me";
    ?>
    get_session_test.php
    コードをコピー

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


    include (" session_mysql.php") ;
    session_start();
    echo $_SESSION['abc'];
    echo "
    ";
    echo $_SESSION['meto'];
    echo "
    ";
    echo $_SESSION['name '];
    $_SESSION['wq']="12e"; echo "
    もう一度クリック"; ?>
    get_session_test2.php
    コードをコピーします コードは次のとおりです:

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




    http://www.bkjia.com/PHPjc/321365.html

    www.bkjia.com

    http://www.bkjia.com/PHPjc/321365.html技術記事隠れた危険 1: クライアント マシンの Cookie がウイルスによって無効になった場合、セッションは失われているのと同じです。 隠れた危険 2: PHP では、セッションはデフォルトでファイル形式で保存されます...
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。