【问题标题】:unset session in smarty在 smarty 中取消会话
【发布时间】:2013-01-04 19:07:32
【问题描述】:

将数据插入数据库后,我将设置一个会话,然后将页面重定向到另一个页面, 如果在 smarty 中设置了会话,我将在另一个页面上显示一条消息,一切正常。

{if $smarty.session.insert===true}
      Thanks
{/if}

现在我如何在打印消息后取消设置会话?

【问题讨论】:

  • 直接删除 unset($var); 怎么样?在您的打印信息下方?
  • @DarylGill unset 不是 Smarty 标签,我不能在 smarty 中使用它,当我使用 {unset($smarty.session.insert)} 时出现错误

标签: php session smarty unset


【解决方案1】:

您不应该在模板中这样做,而 smarty 对此不起作用。 但是,如果您真的必须这样做,我看到的唯一方法可能是:

{php}
    unset($_SESSION['insert']);
{/php}

你放在 {php} 标签之间的任何东西都会被 smarty 作为普通的 php 脚本运行。

【讨论】:

    【解决方案2】:

    Smarty 是一个模板引擎。 应该处理会话变量。您必须在 Smarty 之外的 PHP 脚本中执行 unset($_SESSION['...'])

    【讨论】:

      【解决方案3】:

      你真的不应该从模板中这样做,在 PHP 中这样做,如下所示。

      unset($_SESSION['session_var_name']);
      

      如果你真的想聪明一点,你试过{$smarty.session.message|unset} 我不知道它是否有效,但它可能值得研究。

      【讨论】:

        【解决方案4】:

        在你显示 smarty 模板的 php 文件中,在显示功能后取消设置。

        if(isset($_POST['postdata'])) {
          $_SESSION['insert'] = 'success';
        }
        
        $smarty->display('test.html');
        unset($_SESSION['insert']);
        

        在您的模板文件中

        {if isset($smarty.session.insert)}
          {$smarty.session.insert}
        {/if}
        

        【讨论】:

          猜你喜欢
          • 2018-05-25
          • 2012-12-31
          • 2015-10-05
          • 2019-05-12
          • 2013-09-03
          • 2012-05-25
          • 2017-01-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多