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.
?>
http://www.bkjia.com/PHPjc/321365.htmlwww.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...