ホームページ  >  記事  >  バックエンド開発  >  MySQL データベースを使用してセッションを保存する PHP の例

MySQL データベースを使用してセッションを保存する PHP の例

WBOY
WBOYオリジナル
2016-07-25 09:07:381051ブラウズ
  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 はセッション内の値を保存します。

3. session_mysql.php ファイルを作成します。このファイルは、セッションを保存するメソッドを構築するために使用されます。パラメータを変更するだけで、直接使用できます。 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");//セッションの最大有効期間を取得します。
  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 エラー:".mysql_error()."
  12. ";
  13. die();
  14. }
  15. if(!mysql_select_db($gb_DBname,$SESS_DBH)){
  16. echo "
  17. MySqlエラー: ".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="sesskey = '$key' および有効期限の db_session から値を選択 > ".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="db_session 値に挿入('$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="sesskey = '$key' の db_session から削除します";
  50. $qid=mysql_query ($qry,$SESS_DBH);
  51. return $qid;
  52. }
  53. function sess_gc($maxlifetime){
  54. global $SESS_DBH;
  55. $qry="有効期限のある db_session から削除 < ".time();
  56. $qid= mysql_query($qry,$SESS_DBH);
  57. return mysql_affected_rows($SESS_DBH);
  58. }
  59. session_module_name();
  60. session_set_save_handler("sess_open","sess_close","sess_read","sess_write","sess_destroy","sess_g c " );
  61. ?>
コードをコピーします

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

  1. include ("session_mysql.php");
  2. session_start();
  3. $_SESSION['abc']= "A: また来ます!";
  4. $_SESSION['meto ']= "B: 私もです ";
  5. $_SESSION['name']= "ルイ ";
  6. エコー "クリックしてください";
  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 "
    もう一度クリック";
  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();/ /すべてのセッションを破棄するために使用される関数。
  11. ?>
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。