Maison développement back-end tutoriel php SESSION存放在数据库用法实例_PHP

SESSION存放在数据库用法实例_PHP

May 30, 2016 am 08:47 AM
session magasin 数据库

本文实例讲述了SESSION存放在数据库用法。分享给大家供大家参考。具体如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

<&#63;php

/*

CREATE TABLE `ws_sessions` (

 `session_id` varchar(255) binary NOT NULL default '',

 `session_expires` int(10) unsigned NOT NULL default '0',

 `session_data` text,

 PRIMARY KEY (`session_id`)

) TYPE=InnoDB;

*/

class session {

 // session-lifetime

 var $lifeTime;

 // mysql-handle

 var $dbHandle;

 function open($savePath, $sessName) {

 // get session-lifetime

 $this->lifeTime = get_cfg_var("session.gc_maxlifetime");

 // open database-connection

 $dbHandle = @mysql_connect("localhost","root","");

 $dbSel = @mysql_select_db("test",$dbHandle);

 // return success

 if(!$dbHandle || !$dbSel)

  return false;

 $this->dbHandle = $dbHandle;

 return true;

 }

 function close() {

 $this->gc(ini_get('session.gc_maxlifetime'));

 // close database-connection

 return @mysql_close($this->dbHandle);

 }

 function read($sessID) {

 // fetch session-data

 $res = mysql_query("SELECT session_data AS d FROM ws_sessions

    WHERE session_id = '$sessID'

    AND session_expires > ".time(),$this->dbHandle);

 // return data or an empty string at failure

 if($row = mysql_fetch_assoc($res))

  return $row['d'];

 return "";

 }

 function write($sessID,$sessData) {

 // new session-expire-time

 $newExp = time() + $this->lifeTime;

 // is a session with this id in the database&#63;

 $res = mysql_query("SELECT * FROM ws_sessions

    WHERE session_id = '$sessID'",$this->dbHandle);

 // if yes,

 if(mysql_num_rows($res)) {

  // ...update session-data

  mysql_query("UPDATE ws_sessions

    SET session_expires = '$newExp',

    session_data = '$sessData'

    WHERE session_id = '$sessID'",$this->dbHandle);

  // if something happened, return true

  if(mysql_affected_rows($this->dbHandle))

  return true;

 }

 // if no session-data was found,

 else {

  // create a new row

  mysql_query("INSERT INTO ws_sessions (

    session_id,

    session_expires,

    session_data)

    VALUES(

    '$sessID',

    '$newExp',

    '$sessData')",$this->dbHandle);

  // if row was created, return true

  if(mysql_affected_rows($this->dbHandle))

  return true;

 }

 // an unknown error occured

 return false;

 }

 function destroy($sessID) {

 // delete session-data

 mysql_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'",$this->dbHandle);

 // if session was deleted, return true,

 if(mysql_affected_rows($this->dbHandle))

  return true;

 // ...else return false

 return false;

 }

 function gc($sessMaxLifeTime) {

 // delete old sessions

 mysql_query("DELETE FROM ws_sessions WHERE session_expires < ".time(),$this->dbHandle);

 // return affected rows

 return mysql_affected_rows($this->dbHandle);

 }

}

$session = new session();

session_set_save_handler(array(&$session,"open"),

    array(&$session,"close"),

    array(&$session,"read"),

    array(&$session,"write"),

    array(&$session,"destroy"),

    array(&$session,"gc"));

session_start();

// etc...

&#63;>

Copier après la connexion

希望本文所述对大家的php程序设计有所帮助。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ? Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ? Mar 27, 2024 pm 09:39 PM

Comment le langage Go implémente-t-il les opérations d'ajout, de suppression, de modification et de requête de la base de données ?

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP Jun 04, 2024 pm 01:42 PM

Tutoriel détaillé sur l'établissement d'une connexion à une base de données à l'aide de MySQLi en PHP

Comment Hibernate implémente-t-il le mappage polymorphe ? Comment Hibernate implémente-t-il le mappage polymorphe ? Apr 17, 2024 pm 12:09 PM

Comment Hibernate implémente-t-il le mappage polymorphe ?

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées Jul 18, 2024 am 05:48 AM

iOS 18 ajoute une nouvelle fonction d'album 'Récupéré' pour récupérer les photos perdues ou endommagées

Analyse des principes de base du système de gestion de base de données MySQL Analyse des principes de base du système de gestion de base de données MySQL Mar 25, 2024 pm 12:42 PM

Analyse des principes de base du système de gestion de base de données MySQL

Une analyse approfondie de la façon dont HTML lit la base de données Une analyse approfondie de la façon dont HTML lit la base de données Apr 09, 2024 pm 12:36 PM

Une analyse approfondie de la façon dont HTML lit la base de données

Conseils et pratiques pour gérer les caractères chinois tronqués dans les bases de données avec PHP Conseils et pratiques pour gérer les caractères chinois tronqués dans les bases de données avec PHP Mar 27, 2024 pm 05:21 PM

Conseils et pratiques pour gérer les caractères chinois tronqués dans les bases de données avec PHP

Comment Go WebSocket s'intègre-t-il aux bases de données ? Comment Go WebSocket s'intègre-t-il aux bases de données ? Jun 05, 2024 pm 03:18 PM

Comment Go WebSocket s'intègre-t-il aux bases de données ?

See all articles