我有一个应用程序,我使用URL参数在某个操作和重定向后触发结果消息。示例流程如下:
1. User fills out form and clicks "Update"
2. [PHP code to update DB]
3. header('Location: [next-page.php]?message=1')
4. [PHP code on checks DB for the text of message id #1 and echo the message, (e.g. "Update successful!")]
这最初效果很好,但有几个问题。显示消息后,URL参数仍然存在,因此如果刷新页面,或者用户稍后再次单击该页面,则会再次显示该消息。我正在寻找一种方法来做我上面描述的,但只是第一次显示消息。我想避免为每个结果消息创建一个数据库实体,其中包含是否已经查看过的属性,因为这看起来有点过分。你会怎么处理这个?
答案 0 :(得分:0)
一种方法是将表单POST到next-page.php,然后在页面上执行此代码:
if (isset($_POST['form_element']))
include("form-process.php"); //Or whatever page the DB update goes in
编辑:您也可以使用Javascript进行操作。把它放在表格所在的页面上:
$("#ajax_submit").click(function(){
$("#ajax_form").submit();
window.location=location.protocol+'//'+location.host+location.pathname+"nextpage.php";
});
在表单如下的页面上:
<form action="process_form.php" method="POST" id="ajax_form">
Name: <input name="username"><br>
Password: <input name="password" type="password"><br>
<input type="submit" value="Login" id="ajax_submit">
</form>