在提交表单然后重定向后显示成功消息的最佳方式是什么。
我正在开发一个带有智能模板引擎的脚本,我不想使用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">×</button>
<h4>Success</h4>
Your Comment was successfully added
</div>
{/if}
{php}unset($_SESSION['insert']);{/php}
所以任何人都可以帮助我,告诉我最好的方法,或者告诉我为什么它在显示之前没有被设置。
答案 0 :(得分:0)
尝试
if( isset($_SESSION['insert']) && $_SESSION['insert'] == 'success')
{
//Your alert
unset($_SESSION['insert']);
}
答案 1 :(得分:0)
我认为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");
当然,在你使$ success = true之前应该验证插入是否成功,但是你得到了漂移。