【问题标题】:How can I make sure my PHP session variables are there when I need them?当我需要 PHP 会话变量时,如何确保它们存在?
【发布时间】:2015-01-09 02:54:49
【问题描述】:

我正在处理一个包含 3 个部分的页面。在第一部分中,其中一个输入是第二部分所需的数字。在第二部分中,输入之一是第三部分所需的数字。当用户在第一部分提交表单时,我将该数字存储在会话变量中,当用户在第二部分提交表单时,我将该数字也存储在会话变量中。每次提交一个部分时,下一个部分及其关联的表单都将变为“可见”。

+-----------+
|  My Page  |
+-----------+
| section 1 | -> set section 1 variable needed by section 2 and 3
+-----------+
| section 2 | -> set section 2 variable needed by section 3
+-----------+
| section 3 |
+-----------+

我的问题是,当我将表单数据存储在数据库中时,如何确保我的会话变量仍然存在?假设一个人提交了第 1 部分,然后提交了第 2 部分,然后离开了很长时间,然后回来并尝试提交第 3 部分。或者,用户提交了第 1 部分,然后离开了很长时间,然后回来并尝试提交第 2 节。在尝试数据库 CRUD 之前,如何确保会话数据仍然存在?我想用每个新部分检索会话变量并将它们作为隐藏字段添加到下一部分表单中,但我不确定这是否是个好主意。

无论如何,任何建议将不胜感激。

感谢您抽出宝贵的时间阅读,祝您有美好的一天。 :-)

【问题讨论】:

    标签: php session-variables


    【解决方案1】:

    像这样检查它们的存在:

    if(isset($_SESSION['varName')) { // do something }
    

    【讨论】:

    • 我想过。但是,如果在我检查的那段短暂时间内,会话变量未设置怎么办?我知道这是极不可能的,但万一呢?
    • 总是在有人试图进入下一页时检查。不要在不确定所有变量都正确设置的情况下让进展发生。
    【解决方案2】:

    也许使用标志(标志是一个想法,而不是技术或命令)

    //first part of code:
    
    if (!isset($_SESSION['firstpart']))
    {
         $_SESSION['firstpart'] = false;
         $_SESSION['secondpart'] = false;
         $_SESSION['thirdpart'] = false; 
    }
    
    
    //(and then)
    if($_SESSION['firstpart'] == false)
    {
       validate first part variables
       do someting to read or say give me first part
    
       if vars is ok
            $_SESSION['firstpart'] = true;
       else
           $_SESSION['firstpart'] = false;
    }
    
     //validting second part
    if($_SESSION['secondpart'] == false)
    {
        we can validate an do second part
    
        and set:
        if vars is ok
            $_SESSION['secondpart'] = true;
       else
           $_SESSION['secondpart'] = false;
    
    }
    
    // and repeat for third part
    

    和会话中的所有变量,首先将标志设置为 false,然后激活每个部分以了解用户在哪里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      相关资源
      最近更新 更多