php 表单 - 2 个按钮(一个用于销毁会话并重新加载页面,一个用于进入下一页)

Posted

技术标签:

【中文标题】php 表单 - 2 个按钮(一个用于销毁会话并重新加载页面,一个用于进入下一页)【英文标题】:php form - 2 buttons (one to destroy session and reload page and one to proceed to next page) 【发布时间】:2011-08-10 09:22:16 【问题描述】:

在“selecteditems.php”页面上,我有一个这样的表单:

<form method="POST" name="selecteditems" action="nextpage.php">
....i have some code here to display the values of the SESSION array in a table....
<input type="button" name="clear" value="Clear Session" onclick="window.location='selecteditems.php'">
<input type="submit" name="next" value="Go to Checkout">
</form>

在“selecteditems.php”页面上的表单之前,我有一些代码可以将数据(来自名为“selecteditems.php”的页面的 $_REQUEST 参数)添加到 $_SESSION 数组(这工作正常)。 在表单内部,我有一些代码可以显示 $_SESSION 数组中的所有内容(这工作正常)。如果会话为空,则应打印“会话为空”。

我的问题: 我希望能够单击“清除会话”按钮并销毁会话以及重新加载“selecteditems.php”页面以显示“会话为空”。如果单击“Go to Checkout”按钮,我想简单地被发送到 nextpage.php 页面。

在我删除会话后让“selecteditems.php”重新加载并回显“会话为空”的任何帮助将不胜感激。

【问题讨论】:

你尝试过什么吗?如果您还没有尝试过任何东西,就没有problem 很好,@toop。一个问题也很好。 我试过了: if (isset($_REQUEST['clear'])) session_destroy(); 但不会重新加载页面。 【参考方案1】:

只需将您的清除会话按钮设置为带有type="submit" 的提交按钮(您将其设置为type="button",它跨浏览器的行为不一致什么都不做),然后您可以将其视为正常提交流程:

if(isset($_POST['clear'])) 
    session_destroy(); // Or other session-unsetting logic
    header("Location: selecteditems.php"); // Reload your page


if(isset($_POST['next'])) 
    //next page logic

您甚至可能不需要重新加载清除会话页面。对于“会话清除消息”,您可以将逻辑添加到$_POST['clear'] 块,或重定向到“selecteditems.php?msg=cleared”并搜索$_GET['msg'] 并输出正确的消息,由您决定:)

【讨论】:

+1 但只需澄清一点:input type="button" 在浏览器中的工作非常一致:默认情况下它什么也不做。

以上是关于php 表单 - 2 个按钮(一个用于销毁会话并重新加载页面,一个用于进入下一页)的主要内容,如果未能解决你的问题,请参考以下文章

注销按钮上的 PHP 会话销毁

如何检查会话是否已启动并重定向用户? [重复]

单击注销按钮终止会话并重定向到登录页面

会话中的 PHP 和变量

在会话中存储单选按钮值 - PHP

在 PHP 中销毁会话时出错