我正在编写一些代码以允许用户在餐厅预订餐桌。但我的客户要求我允许用户从餐馆菜单中选择一些项目,然后回来预订餐桌。如果用户不想选择菜单,那么他们可能会忽略该步骤。
为此,我刚刚打印了一条消息“你想选择菜单吗?”然后是菜单页面的超链接。我使用iavascript onClick事件来监听用户是否点击过,如果点击,我调用了一个函数setsession来设置我的会话以跟踪我的用户在我的网站中的活动。我在页面顶部声明了我的功能。似乎 -
<script>
function setsession(){
<?php $_session['reservation']= TRUE;
}
</script>
<form action="" method="post">
<p>Do you want to choose menu? Then <a href="somepage.php" onClick="setsession()">Click here.</a></p>
<p>rest of my code</p>
<p>confirm to reserve.</p>
<a href="javascript:{}" onclick="return Validate();submitform();">Confirm</a>
</form>
<?php if(isset($addnew) && !$error) ?>
<div class="success">
<p>sucess</p>
<?php $_SESSION['reservationprocess'] = FALSE;?>
</div>
<?php } ?>
一切顺利。当我成功点击超链接我的会话变量。当我点击确认按钮(上面的超链接)时,它成功地将数据存储在数据库中并拉动消息成功并取消设置会话。
但问题是我不知道如何以及为什么我的会话再次设置。我多少试图取消会议但我失败了。我知道其他代码运行良好并且没有问题。我测试过了。有专家的解决方案吗?提前谢谢。
答案 0 :(得分:1)
这很不自然,但要破坏会话,你需要确保你事先打电话给session_start()
。
要破坏会话,您无法在该JavaScript函数中执行此操作。您将需要向服务器发出HTTP请求,然后此请求将需要触发“PHP”函数来删除您的会话。
通过阅读下面帖子的评论,我假设您只想删除会话的单个变量。也许试试这个:
session_start();
unset($_SESSION['reservationprocess']);
答案 1 :(得分:0)
会话(如果之前没有初始化),session_start()将执行,另一个提示是使用session_destroy()而不是设置。
答案 2 :(得分:0)
你应该做的是移动这个电话:
<?php $_session['reservation']= TRUE;?>
..到您的菜单页面。因此,当菜单页面加载时,此会话已设置。然后,当你完成后,你可以使用session_destroy()取消设置变量。
答案 3 :(得分:0)
不知道为什么你的脚本中的会话变量没有任何理由2我认为当你加载你的页面你的变量被分配,这可能是它再次设置的原因。在初始化或分配变量时进行某种检查。
答案 4 :(得分:0)
抱歉再次打扰你。但这次不要问一些新手的问题,而是要回答我自己的问题。
首先,我要简要地写下我的问题。我想要捕获一个事件,并希望使用该事件在我的会话中存储一些值,以在我的网站的其余部分识别该事件,除非会话被某种方式销毁。 Al .php文件中使用的变量将值存储在其中,并在服务器上执行所有操作。浏览器显示结果。当用户做某事时[我的情况下点击]我们怎么能期望它只是在php变量中存储一个值,而浏览器中没有php变量。那么我们可以做的只是将结果存储在javascript变量中,或者返回服务器并将值设置为变量。 使用ajax调用服务器是一种专家的方法,老实说,我不太了解它。所以我需要找一些我已经知道的东西。当然基于PHP。最后我得到了COOKIE。 要抓住事件,它显然使用javascript。我使用了一个使用jQuery的事件监听器,在里面我将一个值存储在浏览器的cookie中。然后使用javascript和php检查我网站上的cookie。 这有一个后备。如果用户禁用了cookie,那么您将无法使用它。