jjzjj

php - CodeIgniter session 和常规 session 可以共存吗?

coder 2024-05-03 原文

CodeIgniter 用户指南版本 2.1.4 是这样说的:

Note: The Session class does not utilize native PHP sessions. It generates its own session data, offering more flexibility for developers.

( https://www.codeigniter.com/userguide2/libraries/sessions.html )

关于 CI session 是否取代原生 session ,或者仅仅是一种替代方案并且它们实际上同时共存,我找不到明确的直接解释,其中如果在技术上可以同时使用两者。

不是说有人会想要,而是应该避免。

提前致谢。

最佳答案

根据用户指南,

session 是如何工作的?

加载页面时, session 类将检查用户的 session cookie 中是否存在有效的 session 数据。如果 session 数据不存在(或已过期),将创建一个新 session 并将其保存在 cookie 中。如果一个 session 确实存在,它的信息将被更新,cookie 将被更新。每次更新时,都会重新生成 session_id。

因此 CI 使用 cookie,它与 PHP 的本地 session 是分开的。

还有使用数据库的选项,模仿 PHP 的 native session ,但在数据库而不是文件系统上。但它很容易出现已知错误,这是一个示例:codeigniter session expires frequently

简而言之,正如所描述的那样,它们是完全独立的,是的,它们可以同时共存。不过,只有当您通过 PHP 的 native 方法手动创建 session 时才会这样。

关于php - CodeIgniter session 和常规 session 可以共存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039993/

有关php - CodeIgniter session 和常规 session 可以共存吗?的更多相关文章

  1. c# - 使用 ASP.NET Session 进行生命周期管理 (Unity) - 2

    我正在考虑使用Unity来管理自定义用户类实例的生命周期。我计划使用自定义ASP.NETsession管理器扩展LifetimeManager。我想要做的是从我的自定义类中存储和检索当前登录的用户对象,并让Unity从ASP.NET中的session对象中获取用户实例,或者(在Win32项目中)检索它静态或来自当前线程。到目前为止,我最好的解决方案是在启动时创建我的Unity容器的静态实例,并使用Resolve方法从我的每个类中获取我的User对象。但是,这似乎在我的其他类中创建了对统一容器的依赖。实现这一目标的更“团结”的方式是什么?我希望能够从任何类中读取/替换当前的User实例。

  2. c# - 在 C# 中是否可以编译时访问行号? - 2

    我正在使用VisualStudio2010编写一个C#程序,我想在其中将某些事件写入日志文件,并包括发生该事件时代码所在的行号。我只找到了两种捕获行号的方法-CallerLineNumber,它需要.Net4.5/C#5(我的目标是.Net4)和StackFrame.GetFileLineNumber,这显然需要一个调试版本和pdb文件来工作正常,我正在生成一个发布版本,但没有pdb文件。但这是我没有得到的-以上都是运行时解决方案,但行号是编译时实体。为什么需要运行时解决方案?我可以输入正确的行号作为文字常量,只需查看屏幕底部,它会显示类似“ln175”的内容。..LogEvent(&

  3. c# - 是否可以分析单元测试的内存使用情况? - 2

    我正在考虑使用VisualStudio附带的单元测试框架构建一些单元测试以确定资源是否泄漏。目前,我正在评估最新版本的ANTSProfiler,但我不太清楚它是否允许我从代码中强制快照(这样我就可以拍摄快照,运行一些单元测试一百次,强制垃圾收集,并拍摄另一个快照,并保存结果供以后分析)。这可能与ANTS/VisualStudio相关,还是我应该探索其他分析器的选项? 最佳答案 你看过JetBrains的dotmemory吗??dotMemoryUnit是一个单元测试框架,允许您编写测试检查您的代码是否存在各种内存问题。例如:When

  4. c# - NHibernate session 管理和延迟加载 - 2

    我花了很多时间试图找出我在NHibernate中的session管理问题。我假设我的很多麻烦是由于缺乏对IoC和AOP概念的了解;至少我是这么想的,因为FabioMaulo一直在指导我。无论如何,我的问题是我有一个win表单应用程序正在进行“获取”调用并将结果绑定(bind)到网格。绑定(bind)后,用户可能会执行某种“写入”操作,这些操作会导致session在写入后关闭,以尝试使用session每次使用的概念。然后用户可能会滚动网格,这会导致延迟加载开始,现在session已关闭,我得到一个异常。我不想让我的View识别我的session,我不想在用户关闭表单时发送KillAllS

  5. c# - 我可以告诉 bindingRedirect 始终使用最新的可用版本吗? - 2

    对于ASP.NET应用程序,Web.Config文件中有几个条目,格式如下:<dependentAssembly><assemblyIdentityname="WebGrease"publicKeyToken="31bf3856ad364e35"/><bindingRedirectoldVersion="0.0.0.0-1.6.5135"newVersion="1.6.5135"/></dependentAssembly>这些库以NuGet包的形式出现。现在每次更新我的20多

  6. c# - 可以不关闭 StreamReader/StreamWriter 以保持底层流打开吗? - 2

    我有一个类,它本质上包装了一个用于读/写的Stream,但该流应该由该类的使用者管理。为了方便使用,我使用StreamReader和StreamWriter类对流进行I/O操作。通常我会将读取器和写入器包装在usingblock中,但我想避免关闭读取器和写入器,因为这样做也会关闭底层流,我必须保持它打开。如果我希望底层Stream由调用者管理,那么不关闭StreamReader/StreamWriter在内存/资源管理方面是否安全?当在其他地方显式关闭流时,读取器和写入器是否会被垃圾回收?publicclassWrapper{privateStream_underlyingStream

  7. c# - Server.Transfer 导致 Session 异常 - 2

    在我的全局中,当发生错误时,我有以下代码来处理//[..]codegoeshereServer.Transfer("~/Error.aspx?ErrorID="+errorId);它曾经是一个Response.Redirect,除了它更改了url之外,它工作得很好(这就是我想使用Server.Transfer的原因)不幸的是,现在当它尝试加载错误页面时,当它尝试引用Session时,它会在Masterpage上崩溃HttpException:SessionstatecanonlybeusedwhenenableSessionStateissettotrue,either

  8. c# - 为什么 C# 不能自动提供对事件的线程安全访问,而 C++/CLI 可以? - 2

    来自EventHandlerDelegate的MSDN文档:IncontrasttotheC#andVisualBasicexamples,theVisualC++examplecodedoesnotrequireyoutocreateathread-safetemporaryvariable.VisualC++versionautomaticallyprovidesthread-safeaccess,enablingyoutoraisetheeventdirectly.为什么C#不能自动提供对事件的线程安全访问,而C++/CLI可以? 最佳答案

  9. c# - 有人可以为我分解这个 lambda 表达式吗? - 2

    我正在查看来自TokenReplacementandIdentification的解决方案:stringresult=Regex.Replace(text,@"\[%RC:(\d+)%\]",match=>dict[int.Parse(match.Groups[1].Value)]);而且我不明白MatchEvaluator是如何重载的。我理解一些lambda表达式。它接受输入match然后从字典中查找一个整数?但是match的值从何而来?match=>dict[int.Parse(match.Groups[1].Value)]);返回的值去哪里了?编辑:你们中的

  10. c# - 一个C#类可以有多少个方法 - 2

    C#类可以拥有的属性、方法的数量是否有限制?我快速浏览了标准ECMA-334,但没有找到任何相关信息。在开始探讨为什么具有许多方法的类是糟糕的设计之前,我想更清楚地说明其意图。当然,我不会手动编写包含大量方法的类。我问这个的原因是我需要通过代码生成大量的执行单元。我在争论是使用单一方法的多个类还是使用多个方法的大类。所以对于这个问题,我只感兴趣是否有限制以及属性、方法的数量限制是多少。 最佳答案 每个程序集每个方法(不是类)1670万。 关于c#-一个C#类可以有多少个方法,我们在Sta

随机推荐

  1. c# - 使用 Linq 选择对象上的所有列 - 2

    我有一个问题:vartransactions=fromtindb.Transactionswheret.SellingPrice!=0selectnew{t.CommissionPercent,t.SellingPrice};但实际上,我需要避免使用匿名类型,因为它是只读的,并选择我的“交易”项目上的所有属性/列。我本以为会是这样的:vartransactions=fromtindb.Transactionswheret.SellingPrice!=0selectt.SellingPrice,t.CommissionPercent,t.Etc...或者...vartransaction

  2. c# - 如何将字符串四舍五入到小数点后两位? - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:c#-HowdoIroundadecimalvalueto2decimalplaces(foroutputonapage)stringstrTemp="0.51667308807373";四舍五入为小数点后两位。

  3. c# - WPF/多线程 : UI Dispatcher in MVVM - 2

    也就是说,在MVVM环境中,我在后台线程中,我想在ui控件上运行更新。所以通常我会去myButton.Dispatcher.BeginInvoke(blabla)但我无权访问myButton(因为View模型无权访问View的控件)。那么这样做的正常模式是什么?(我猜总有绑定(bind),但我想知道如何通过调度程序做到这一点) 最佳答案 我通常使用Application.Current.Dispatcher:因为Application.Current是静态的,所以您不需要对控件的引用 关

  4. C#:改变数组中每一项的值 - 2

    我想知道是否有内置的.NET功能可以根据提供的委托(delegate)的结果更改数组中的每个值。例如,如果我有一个数组{1,2,3}和一个返回每个值的平方的委托(delegate),我希望能够运行一个接受数组和委托(delegate)的方法,并返回{1,4,9}。是否已经存在这样的东西? 最佳答案 LINQ使用Select提供对投影的支持扩展方法:varnumbers=new[]{1,2,3};varsquares=numbers.Select(i=>i*i).ToArray();你也可以使用稍微不太流畅的Array.Conv

  5. c# - 如果 null.Equals(null) 为什么我会得到 NullReferenceException - 2

    我有以下代码行:varselectedDomainID=lkuDomainType.EditValue.Equals(null)?string.Empty:lkuDomainType.EditValue;有时这会生成一个NullReferenceException。我不明白的是为什么。我的代码的全部意义不是检查null并且如果是则分配string.empty吗?当我checkinDEBUG时,它说明EditValue==null那么我错过了什么? 最佳答案 使用lkuDomainType.EditValue==null,否则您将尝试

  6. c# - Reflection.Emit 优于 GetValue 和 SetValue :S - 2

    有人告诉我使用Reflection.Emit而不是PropertyInfo.GetValue/SetValue,因为这样速度更快。但我真的不知道Reflection.Emit有什么东西,也不知道如何用它来替代GetValue和SetValue。有人可以帮我解决这个问题吗? 最佳答案 只是一个备选答案;如果您想要性能,但想要类似的API-考虑HyperDescriptor;这在下面使用了Reflection.Emit(因此您不必这样做),但在PropertyDescriptorAPI上公开了自身,因此您可以只使用:PropertyDe

  7. c# - 使用 Nhibernate 时,检查 C# .Net 中的列表相等性不起作用 - 2

    我似乎在检查列表相等性时遇到了问题。在我的例子中,我有两个角色对象,我想看看它们是否相等。每个角色都包含一个名称和一个权限列表。每个权限仅包含一个名称。publicclassRole:BaseDomain{virtualpublicStringName{get;set;}virtualpublicIListPermissions{get;set;}}publicclassPermission{virtualpublicStringName{get;set;}}我在Role和Permission对象上定义了一个equals方法。这些对象是使用Nhibernate从数据库中加载的。这意味着

  8. c# - C# 中的变量范围混淆 - 2

    我有两个代码示例。第一个不编译,但第二个编译。代码示例1(未编译)publicvoidMyMethod(){inti=10;for(intx=10;x<10;x++){inti=10;//Point1:compilerreportserrorvarobjX=newMyOtherClass();}varobjX=newOtherClassOfMine();//Point2:compilerreportserror}我明白为什么编译器在Point1报错了。但是不明白为什么会在Point2处报错。如果你说是因为MSIL内部的组织,那么为什么第二个代码示例可以编译?代码示例2(编译)pu

  9. c# - WCF 中的 mex 绑定(bind)错误 - 2

    我正在使用VSTS2008+C#+.NET3.0。我正在使用自托管WCF服务。执行以下语句时,出现如下“找不到绑定(bind)”的错误。我已经发布了整个app.config文件,有什么问题吗?ServiceHosthost=newServiceHost(typeof(MyWCFService));错误信息:CouldnotfindabaseaddressthatmatchesschemehttpfortheendpointwithbindingMetadataExchangeHttpBinding.Registeredbaseaddressschemesare[https].完整的应用

  10. c# - 遍历数据 GridView 中的每一行 - 2

    如何遍历读入的DataGridView的每一行?在我的代码中,由于产品ID相同,行不会绑定(bind)到下一行,因此DataGridView不会移动到新行。它保持在同一行并覆盖价格(对于某些产品,我有两个价格)。我如何遍历每一行以显示相同的productID但价格不同?例如:1个汉堡包有2个价格——1美元和2美元。遍历数据后,结果应该有2行产品相同但价格不同。我该怎么做呢?下面是我的代码:productID=odr["product_id"].ToString();quantity=Double.Parse(odr["quantity"].ToStrin