PHP は mysql データベースを使用して session_PHP チュートリアルを保存します

WBOY
リリース: 2016-07-13 17:34:53
オリジナル
924 人が閲覧しました

PHP を使用するほとんどの人は、セッションに適用されると Cookie を使用します。
クッキーは良いものですが、隠れた危険ももたらす可能性があります。
隠れた危険 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` テキストが NULL ではありません、
主キー (`sesskey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
データベースは次のように示します: db_session
列名: sesskey、expiry、value ここで: sesskey は主キーです。
Value はセッション内の値を保存します。
3. session_mysql.php ファイルを作成します。このファイルは、セッションを保存するメソッドを構築するために使用されます。パラメータを変更するだけで、直接使用できます。
session_mysql.php

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");//セッションの最大有効期間を取得します。

関数 sess_open($save_path,$session_name){
グローバル $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();
    }
    true を返す;
    }

    関数 sess_close(){
    true を返す;
    }

    関数 sess_read($key){
    グローバル $SESS_DBH,$SESS_LIFE;
    $qry="sesskey = $key と有効期限の db_session から値を選択 > ".time();
    $qid=mysql_query($qry,$SESS_DBH);
    If(list($value)=mysql_fetch_row($qid)){
    $value を返す;
    }
    falseを返す;
    }

    関数 sess_write($key,$val){
    グローバル $SESS_DBH,$SESS_LIFE;
    $expiry=time()+$SESS_LIFE;
    $value=$val;
    $qry="db_session 値に挿入($key,$expiry,$value)";
    $qid=mysql_query($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);
    }
                   $qid を返します;
            }
          
            関数 sess_destroy($key){
                  グローバル $SESS_DBH;
                  $qry="sesskey = $key の db_session から削除";
                  $qid=mysql_query($qry,$SESS_DBH);
                   $qid を返します;
            }
          
            関数 sess_gc($maxlifetime){
                   グローバル $SESS_DBH;
                  $qry="有効期限 < ".time();
    の db_session から削除します               $qid=mysql_query($qry,$SESS_DBH);
                  return mysql_affected_rows($SESS_DBH);
            }
           セッションモジュール名();
        &n

    www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/508429.html技術記事セッションに参加すると、ほとんどの人が php を使用しますが、都市では cookie が使用されます。
  • ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート