Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn die PHP-Sitzung instabil ist?

Was tun, wenn die PHP-Sitzung instabil ist?

藏色散人
藏色散人Original
2020-08-24 09:57:072462Durchsuche

Lösung für eine instabile PHP-Sitzung: Setzen Sie zuerst den SessionState-Knoten in der Konfigurationsdatei, dann setzen Sie die Klasse auf eine serialisierbare Klasse und starten Sie schließlich den „asp.net-Statusdienst“.

Was tun, wenn die PHP-Sitzung instabil ist?

Empfohlen: „PHP-Video-Tutorial

Lösen Sie das Problem der Sitzungsinstabilität

Im System des Unternehmens sind gestern immer plötzlich Sitzungen verloren gegangen, aber es hat nicht funktioniert . Habe es heute Morgen durch die Suche nach Informationen gelöst.

Gestern wollte ich eine neue Datentabelle erstellen, um Benutzeranmeldeinformationen zu speichern. Wenn ich jedoch einen Benutzer markieren möchte, möchte ich die IP verwenden, um ihn zu markieren, da dies manchmal die IP-Adresse des externen Benutzers ist Das gleiche gilt für das Netzwerk. Daher wollte ich die MAC-Adresse verwenden, um das Problem zu lösen. Die Sendarp-Methode kann die MAC-Adresse der angegebenen IP abrufen. Dies gilt jedoch nur für LAN und kann nicht in Nicht-LAN ​​implementiert werden für zahlungsunfähig erklärt wurde. Es sei denn, es wird über js auf dem Client abgerufen und dann an den Server gesendet. Da es jedoch ohne Client-Cookies mühsam wäre, es jedes Mal zu überprüfen, habe ich aufgegeben.

Heute habe ich im Internet herausgefunden, dass man den sessionState-Knoten in der Konfigurationsdatei festlegen kann:

   <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"/>

Die erforderlichen Attribute sind

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

Die optionalen Attribute sind:

属性             选项                             描述 
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秒钟。

Starten Sie dann den asp.net-Statusdienst.

Achten Sie darauf, die Klasse als serialisierbare Klasse festzulegen! können zur Sitzung hinzugefügt werden.

      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);
     。。。

Das obige ist der detaillierte Inhalt vonWas tun, wenn die PHP-Sitzung instabil ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn