Rumah >pembangunan bahagian belakang >tutorial php >php使用mysql数据库存储session的例子

php使用mysql数据库存储session的例子

WBOY
WBOYasal
2016-07-25 09:07:381082semak imbas
  1. CREATE TABLE `db_session` (
  2. `sesskey` char(32) NOT NULL,
  3. `expiry` int(11) unsigned NOT NULL,
  4. `value` text NOT NULL,
  5. PRIMARY KEY (`sesskey`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
复制代码

数据库表明:db_session 列名:sesskey,expiry,value 其中:sesskey为主键。 Value里面存放着session里面的值。

3.建立session_mysql.php文件。这个文件是用来构造保存session的方法的。修改一下参数直接使用就可以了。 session_mysql.php php代码:

  1. $gb_DBname="db_myBBS";//数据库名称
  2. $gb_DBuser="root";//数据库用户名称
  3. $gb_DBpass="23928484";//数据库密码
  4. $gb_DBHOSTname="localhost";//主机的名称或是IP地址
  5. $SESS_DBH="";
  6. $SESS_LIFE=get_cfg_var("session.gc_maxlifetime");//得到session的最大有效期。
  7. function sess_open($save_path,$session_name){
  8. global $gb_DBHOSTname,$gb_DBname,$gb_DBuser,$gb_DBpass,$SESS_DBH;
  9. if(!$SESS_DBH=mysql_pconnect($gb_DBHOSTname,$gb_DBuser,$gb_DBpass)){
  10. echo "
  11. MySql Error:".mysql_error()."
  12. ";
  13. die();
  14. }
  15. if(!mysql_select_db($gb_DBname,$SESS_DBH)){
  16. echo "
  17. MySql Error:".mysql_error()."
  18. ";
  19. die();
  20. }
  21. return true;
  22. }
  23. function sess_close(){
  24. return true;
  25. }
  26. function sess_read($key){
  27. global $SESS_DBH,$SESS_LIFE;
  28. $qry="select value from db_session where sesskey = '$key' and expiry > ".time();
  29. $qid=mysql_query($qry,$SESS_DBH);
  30. if(list($value)=mysql_fetch_row($qid)){
  31. return $value;
  32. }
  33. return false;
  34. }
  35. function sess_write($key,$val){
  36. global $SESS_DBH,$SESS_LIFE;
  37. $expiry=time()+$SESS_LIFE;
  38. $value=$val;
  39. $qry="insert into db_session values('$key',$expiry,'$value')";
  40. $qid=mysql_query($qry,$SESS_DBH);
  41. if(!$qid){
  42. $qry="update db_session set expiry=$expiry, value='$value' where sesskey='$key' and expiry >".time();
  43. $qid=mysql_query($qry,$SESS_DBH);
  44. }
  45. return $qid;
  46. }
  47. function sess_destroy($key){
  48. global $SESS_DBH;
  49. $qry="delete from db_session where sesskey = '$key'";
  50. $qid=mysql_query($qry,$SESS_DBH);
  51. return $qid;
  52. }
  53. function sess_gc($maxlifetime){
  54. global $SESS_DBH;
  55. $qry="delete from db_session where expiry $qid=mysql_query($qry,$SESS_DBH);
  56. return mysql_affected_rows($SESS_DBH);
  57. }
  58. session_module_name();
  59. session_set_save_handler("sess_open","sess_close","sess_read","sess_write","sess_destroy","sess_gc");
  60. ?>
复制代码

4.建立测试文件。 在使用之前必须引用刚刚建立的session_mysql.php文件。 文件:session_test.php

  1. include ("session_mysql.php");
  2. session_start();
  3. $_SESSION['abc']= "A: I will be back!";
  4. $_SESSION['meto']= "B: Me too ";
  5. $_SESSION['name']= "louis ";
  6. echo "click me";
  7. ?>
复制代码

文件:get_session_test.php

  1. include ("session_mysql.php");
  2. session_start();
  3. echo $_SESSION['abc'];
  4. echo "
    ";
  5. echo $_SESSION['meto'];
  6. echo "
    ";
  7. echo $_SESSION['name'];
  8. $_SESSION['wq']="12e";
  9. echo "
    click again";
  10. ?>
复制代码

文件:get_session_test2.php

  1. include ("session_mysql.php");
  2. session_start();
  3. echo $_SESSION['abc'];
  4. echo "
    ";
  5. echo $_SESSION['meto'];
  6. echo "
    ";
  7. echo $_SESSION['name'];
  8. echo "
    ";
  9. echo $_SESSION['wq'];
  10. //session_destroy();//用来销毁所有session的函数。
  11. ?>
复制代码


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn