【问题标题】:Displaying Message After Redirecting重定向后显示消息
【发布时间】:2014-04-09 06:53:50
【问题描述】:

提交表单然后重定向后显示成功消息的最佳方式是什么。

我正在开发一个带有 smarty 模板引擎的脚本,我不想使用 javascript,因为我希望它尽可能简单地让用户设计他或她自己的模板,我已经尝试使用会话来显示例如,重定向后似乎未设置的消息

表格

<form action="" id="comment_form" method="POST">
    <input type="hidden" name="movie_id" id="page_id" value="{$mov.mid}" />
    <input type="hidden" name="user_id" id="user_id" value="{$logged_id}" />
    <input class="span2" name="comment" type="text" />
    <button class="btn" name="add_comment" type="submit">Add Comment</button>
</form>

PHP

if (isset($_POST['add_comment'])) {
    if (!empty($_POST['comment'])) {
        $user_id = $logged_id;
        $post_comment = mysqli_real_escape_string($con, $_POST['comment']);
        $movie->AddMovieComments($con, $movie_id,  $user_id, $post_comment);
        $_SESSION['insert'] = 'success';
        header ('Location: '.$_SERVER['REQUEST_URI']);
    } else {
        $_SESSION['insert'] = 'empty';
    }
}

现在尝试在 tpl 中显示成功

{if isset($smarty.session.insert)}
    <div class="alert alert-success">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <h4>Success</h4>
        Your Comment was successfully added
    </div>
{/if}
{php}unset($_SESSION['insert']);{/php}

所以任何人都可以帮助我并告诉我执行此操作的最佳方法或告诉我为什么它在显示之前未设置。

【问题讨论】:

    标签: php smarty


    【解决方案1】:

    试试

    if( isset($_SESSION['insert']) && $_SESSION['insert'] == 'success')
    {
    //Your alert
    unset($_SESSION['insert']);
    }
    

    【讨论】:

      【解决方案2】:

      我不认为 SESSION 变量是最好的方法。

      在我们的模板中,有一个简单的条件检查来查看是否存在 Smarty 变量:

      {if $success}Your comment was added{/if}
      

      然后,在处理事务的 PHP 中,简单地启动变量,根据结果将其设置为 true 或 false,并在显示模板之前在 Smarty 中分配它

      $success = false;
      if (!empty($_POST['comment'])) {
          $success = true;
      }
      $smarty->assign("success",$success);
      $smarty->display("template.tpl");
      

      当然,应该在你 make $success = true 之前验证插入是否成功,但是你得到了偏差。

      【讨论】:

        猜你喜欢
        • 2017-10-29
        • 2012-12-12
        • 2018-07-24
        • 1970-01-01
        • 1970-01-01
        • 2016-06-29
        • 2017-07-06
        • 2016-10-09
        相关资源
        最近更新 更多