Home  >  Article  >  Backend Development  >  PHP uses mysql database to store session code_PHP tutorial

PHP uses mysql database to store session code_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:40:261026browse

Hidden danger 1: If the cookie of the client machine becomes invalid due to a virus, then the session is equivalent to being gone.
Hidden danger 2: The session is saved in a temporary folder in the form of a file by default in PHP. For a small system, this is perfectly fine.
But for a large system that is frequently accessed, For systems, this is not a good idea. Suppose this website is visited by 1,000 people a day. After one month, the temporary folder of the session will have 30,000 temporary files. Imagine how long it takes for the computer to find a session_sid from 30000!
So in order to improve efficiency.
Transactions use a database to save sessions. The specific method is as follows:
1. Change the php.ini file.
Since the default way of saving sessions in PHP is files, we need to change it. That is: find "session.save_handler = files" and change "files" to "User".
Change the session mode to user-defined.
2. Create database:
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]
Database indicates: db_session
Column name: sesskey, expiry, value Where: sesskey is the primary key.
Value stores the value in the session.
3. Create session_mysql.php file. This file is used to construct a method to save the session. Just modify the parameters and use it directly.
session_mysql.php
PHP code:

Copy code The code is as follows:

$gb_DBname="db_myBBS";//Database name
$gb_DBuser="root";//Database user name
$gb_DBpass="23928484";//Database password
$gb_DBHOSTname="localhost" ;//The name or IP address of the host
$SESS_DBH="";
$SESS_LIFE=get_cfg_var("session.gc_maxlifetime");//Get the maximum validity period of the session.
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 Error:".mysql_error()."
  • ";
    die();
    }
    if(!mysql_select_db($gb_DBname ,$SESS_DBH)){
    echo "
  • MySql Error:".mysql_error()."
  • ";
    die();
    }
    return true;
    }
    function sess_close(){
    return true;
    }
    function sess_read($key){
    global $SESS_DBH,$SESS_LIFE;
    $qry="select value from db_session where sesskey = '$key' and expiry > ".time();
    $qid=mysql_query($qry,$SESS_DBH);
    if(list($value)=mysql_fetch_row($qid)) {
    return $value;
    }
    return false;
    }
    function sess_write($key,$val){
    global $SESS_DBH,$SESS_LIFE;
    $expiry =time()+$SESS_LIFE;
    $value=$val;
    $qry="insert into db_session values('$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);
    }
    return $qid;
    }
    function sess_destroy($key){
    global $SESS_DBH;
    $qry="delete from db_session where sesskey = '$key'";
    $qid=mysql_query($qry,$SESS_DBH);
    return $qid;
    }
    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. Create a test file.
    The session_mysql.php file just created must be referenced before use.
    session_test.php
    PHP code:
    Copy code The code is as follows:

    include ("session_mysql.php");
    session_start();
    $_SESSION['abc']= "A: I will be back!";
    $_SESSION['meto']= " B: Me too ";
    $_SESSION['name']= "louis ";
    echo "click me";
    ? >

    get_session_test.php
    Copy code The code is as follows:

    include ("session_mysql.php");
    session_start();
    echo $_SESSION['abc'];
    echo "
    ";
    echo $_SESSION[' meto'];
    echo "
    ";
    echo $_SESSION['name'];
    $_SESSION['wq']="12e";
    echo "click again";
    ?>

    get_session_test2.php
    Copy code The code is as follows:

    include ("session_mysql. php");
    session_start();
    echo $_SESSION['abc'];
    echo "
    ";
    echo $_SESSION['meto'];
    echo "
    ";
    echo $_SESSION['name'];
    echo "
    ";
    echo $_SESSION['wq'];
    //session_destroy() ;//Function used to destroy all sessions.
    ?>

    www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/321365.htmlTechArticleHidden danger 1: If the cookie of the client machine becomes invalid due to a virus, then the session is equivalent to being gone. . Hidden danger 2: The session is saved as a file by default in PHP...
    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn