【问题标题】:How can I destroy specifics $_SESSION variables leaving page?如何销毁特定的 $SESSION 变量离开页面?
【发布时间】:2021-06-27 09:40:23
【问题描述】:

我想在离开页面后取消设置一些细节$_SESSION 变量,但问题是我对我网站的所有部分(contacts.php?page=1, ?page=2, etc; actions.php?page=1,?page=2 etc .; customers.php?page=1,?page=2, 等)都使用了分页(使用$_GET)。 对于所有部分,都有过滤器,如果设置,它们会保存在一些$_SESSION 变量中。从?page=1 传递到?page=2 等时,这些变量必须保持设置,但必须通过从contacts.php 切换到actions.php 来停用它,否则在actions.php 中,我将拥有我在@ 中设置的已经设置的过滤器987654330@!

谢谢! PS对不起我的英语

【问题讨论】:

    标签: php session pagination get unset


    【解决方案1】:

    要删除某些特定页面上的会话,重定向将一些变量传递给目标页面并检查该页面是否存在密钥,然后使用 unset 函数

    unset($_SESSION['key_name'])
    

    如果您想完全删除会话,请使用

    session_destroy();
    

    【讨论】:

    • 我知道如何使用 unset() 和 session_destroy()...问题是,如果我在各个部分中插入这些函数,只要我从一个页面传递到另一个结果在同一部分(我说的是分页)中,我设置并保存在变量 $_SESSION['...'] 中的过滤器被破坏了
    【解决方案2】:

    会话由会话 ID 识别。如果您删除此 ID,则整个会话(包含所有这些条目)将被删除。因此,您可以将特定值设置为“null”并以这种方式删除它们。

    您可以在下一页加载时执行此操作,也可以在“卸载时”使用 javascript。

    【讨论】:

      【解决方案3】:

      您可以将键名设置为 null 或 ''。

      例如

      $_SESSION['key_name']='';
      $_SESSION['key_name']=NULL;
      

      【讨论】:

      • 如果我这样做,每次我在同一会话中从一个页面传递到另一个页面(contact.php?page = 1、contact.php?page = 2 等)时,我设置的过滤器都会重置...过滤器必须重置仅从一个部分传递到另一个部分(例如从contacts.php到actions.php),而不是从一个页面到同一部分的另一个页面
      猜你喜欢
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 2011-06-25
      • 2022-12-16
      相关资源
      最近更新 更多