Maison  >  Article  >  développement back-end  >  Que faire si la session php est instable

Que faire si la session php est instable

藏色散人
藏色散人original
2020-08-24 09:57:072436parcourir

La solution à la session PHP instable : définissez d'abord le nœud sessionState dans le fichier de configuration ; puis définissez la classe sur une classe sérialisable et enfin démarrez le "service d'état asp.net".

Que faire si la session php est instable

Recommandé : "Tutoriel vidéo PHP"

Résoudre le problème de l'instabilité de session

Le système de l'entreprise a toujours connu des pertes soudaines de session. J'ai pensé à un moyen hier, mais cela n'a pas fonctionné. Je l'ai résolu ce matin en recherchant des informations.

Hier, je voulais créer une nouvelle table de données pour stocker les informations de connexion des utilisateurs. Cependant, lorsque je veux marquer un utilisateur, je souhaite utiliser l'IP pour le marquer, je pense que ce n'est pas pratique car parfois l'IP. L'adresse du réseau externe est la même, je souhaite donc utiliser l'adresse MAC pour le résoudre. Vous pouvez obtenir le MAC de l'adresse IP spécifiée via la méthode sendarp, mais cela ne s'applique qu'au LAN et ne peut pas être réalisé en non-LAN. , donc cette idée est déclarée en faillite. A moins qu'il ne soit obtenu via js sur le client puis envoyé au serveur, mais considérant qu'il serait gênant de vérifier à chaque fois sans cookies client, j'ai abandonné.

Aujourd'hui, j'ai découvert sur Internet que vous pouvez définir le nœud sessionState dans le fichier de configuration :

   <sessionState mode="Off|InProc|StateServer|SQLServer"
              cookieless="true|false"
              timeout="number of minutes"
              stateConnectionString="tcpip=server:port"
              sqlConnectionString="sql connection string"
              stateNetworkTimeout="number of seconds"/>

L'attribut obligatoire est

属性      选项             描述 
mode                       设置将Session信息存储到哪里 
            Off              设置为不使用Session功能 
            InProc          设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值。 
            StateServer  设置为将Session存储在独立的状态服务中。 
            SQLServer    设置将Session存储在SQL Server中。

L'attribut facultatif est :

属性             选项                             描述 
cookieless                                        设置客户端的Session信息存储到哪里 
                   ture                             使用Cookieless模式 
                   false                             使用Cookie模式,这是默认值。 
                   timeout                        设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟 
                   stateConnectionString    设置将Session信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。 
        sqlConnectionString        设置与SQL Server连接时的连接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。当mode的值是SQLServer时,这个属性是必需的。 
        stateNetworkTimeout    设置当使用StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟。

Ensuite, démarrez le service d'état asp.net.

Attention à définir la classe comme une classe sérialisable ! peuvent être ajoutés à la séance.

      System.Web.SessionState.HttpSessionState session = HttpContext.Current.Session;
      session.Add("user", obj);
      HttpContext.Current.Session.Add("user", obj);
      if (obj.USER_DIST_ID == "0000")
      {
             HttpContext.Current.Session.Add("sDistID", obj.USER_DIST_ID);
       }
      System.Web.Security.FormsAuthentication.SetAuthCookie(obj.USER_ID , false);
     。。。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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