Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关闭浏览器后保持PHP会话_Php_Asp.net_Session_Cookies_Session Timeout - Fatal编程技术网

关闭浏览器后保持PHP会话

关闭浏览器后保持PHP会话,php,asp.net,session,cookies,session-timeout,Php,Asp.net,Session,Cookies,Session Timeout,这是一个有点背景的故事 我的网站上有一个ASP.NET登录应用程序,一旦登录,我可以在维护会话的同时导航到WordPress(PHP)端(仍然在同一个域上)。请参阅下面的“我的粘贴”链接了解其工作原理 但是,如果关闭浏览器,则会出现问题,尽管保持ASP.NET会话,但会丢失PHP“会话”。因此,我在PHP端“注销”,但在.NET端仍然“登录” --是否有一种方法可以使用我现有的代码设置会话/cookie的生存期,以避免在我关闭浏览器时会话/cookie消失?-- 我从模板的中粘贴了当前的PHP代

这是一个有点背景的故事

我的网站上有一个ASP.NET登录应用程序,一旦登录,我可以在维护会话的同时导航到WordPress(PHP)端(仍然在同一个域上)。请参阅下面的“我的粘贴”链接了解其工作原理

但是,如果关闭浏览器,则会出现问题,尽管保持ASP.NET会话,但会丢失PHP“会话”。因此,我在PHP端“注销”,但在.NET端仍然“登录”

--是否有一种方法可以使用我现有的代码设置会话/cookie的生存期,以避免在我关闭浏览器时会话/cookie消失?--

我从模板的
中粘贴了当前的PHP代码,用于检查并持久化会话

我确实看了一下,但弄不清楚如何在我的解决方案中使用它


非常感谢你的指点

我认为您应该使用过期的
setcookie()
(请参阅)。您只在会话中设置内容(看起来像是从cookies复制的,但我不确定它们的生命周期是什么)

而不是这一行:

$_SESSION[DOT_NET_SESSION][ $tuple['SessionName'] ] =
    $tuple['SessionValue'];
试试这个:

$cookie = array($tuple['SessionName'] => $tuple['SessionValue']);
setcookie(DOT_NET_SESSION, $cookie, time() + 60 * 60 * 24);

我认为这应该为一天设置一个cookie。

我认为您应该使用
setcookie()
,并且有一个有效期(请参阅)。您只在会话中设置内容(看起来像是从cookies复制的,但我不确定它们的生命周期是什么)

而不是这一行:

$_SESSION[DOT_NET_SESSION][ $tuple['SessionName'] ] =
    $tuple['SessionValue'];
试试这个:

$cookie = array($tuple['SessionName'] => $tuple['SessionValue']);
setcookie(DOT_NET_SESSION, $cookie, time() + 60 * 60 * 24);

我想这应该是一天的甜点。

你需要做两件事

  • (默认为0,PHP解释为“直到浏览器关闭”)
  • 。这决定了服务器端会话数据被销毁的时间
    不过,我建议你不要这样做。从安全角度来看,在浏览器会话的生命周期(浏览器关闭时结束)之后持续存在的会话是有问题的

    您需要做两件事

  • (默认为0,PHP解释为“直到浏览器关闭”)
  • 。这决定了服务器端会话数据被销毁的时间
    不过,我建议你不要这样做。从安全角度来看,在浏览器会话的生命周期(浏览器关闭时结束)之后持续存在的会话是有问题的

    您必须在用户浏览器的cookie中存储一些数据。然后,如果用户返回到您的bage,您将执行代码的验证块


    要查看完整的解决方案,您必须在用户浏览器的cookie中存储一些数据。然后,如果用户返回到您的bage,您将执行代码的验证块



    有关详细信息,请参阅完整的解决方案

    Good call。目前,我只是将这些值存储在数据库中,并使用我的PHP检查这些值是否存在。你能告诉我如何使用我现有的代码最好地做到这一点吗?我已经添加了一个例子,但你必须忍受我-我做了很多symfony,所以我已经有一段时间没有接触到底层的cookie/会话实现了<代码>:)。所以,你得玩一玩。诀窍是查看浏览器(如Firefox)中的cookie数据,看看是否正确。嘿,不用担心,先生。非常感谢您发布一个示例。我会在一秒钟内试一试,然后再报告。恐怕这不管用,哈弗:(我仍然需要您替换的行来对照我的数据库中的表进行检查。正如我所说,您可能需要对其进行修改。因为我不确定您需要从.net cookie中获取哪些内容,只需使用您通常的调试方法,看看每个函数是否在每个节点都能满足您的期望。除了您的测试之外,还可以尝试我的行。)可能是现有代码?很好的调用。目前我只是将值存储在数据库中,并使用我的PHP检查这些值是否存在。您能告诉我如何最好地使用现有代码执行此操作吗?我添加了一个示例,但您必须忍受我-我做了很多symfony,因此我已经有一段时间没有接触到底层cookie/session实现了tions!
    :)
    。所以,你得好好玩玩一下。诀窍是在浏览器(如Firefox)中查看cookie数据,看看是否正确。呵呵,不用担心,先生。非常感谢你发布了一个示例。我会在几秒钟内尝试一下,然后再报告。恐怕这不管用,哈弗:(我仍然需要您替换的行来对照我的数据库中的表进行检查。正如我所说,您可能需要对其进行修改。因为我不确定您需要从.net cookie中获取哪些内容,只需使用您通常的调试方法,看看每个函数是否在每个节点都能满足您的期望。除了您的测试之外,还可以尝试我的行。)可能是现有代码?嗨,GordonM。首先非常感谢您的指导和安全建议。您能告诉我如何在pastie中使用我的php代码实现前2点吗?我知道该怎么做,但真的很困惑该怎么做。非常感谢您在这里提供的帮助。您可以在php配置(php.ini)中实现这一点aaah好极了。我会很快尝试设置它们并向您发布消息。嗯,这似乎不起作用。我添加了
    ini\u集('session.cookie\u life',86400);ini\u集('session.gc\u maxlife',1440)
    到我的脚本顶部,但当我重新启动浏览器时,它并没有让我保持登录状态。嗨,GordonM。首先非常感谢您的指导和安全建议。您能告诉我如何在pastie中使用我的php代码实现前2点吗?我知道该做什么,但真的很困惑如何做。非常感谢您在这里提供的任何帮助o在PHP配置(PHP.ini)中进行设置(Aaaah)太好了。我会很快尝试设置它们并向您发布消息。嗯,这似乎不起作用。我在脚本顶部添加了
    ini_集('session.cookie_life',86400);ini_集('session.gc_maxlife',1440);
    ,但当我重新启动浏览器时,它没有让我登录。