2

我正在编写一些代码以允许用户在餐厅预订餐桌。但我的客户要求我允许用户从餐厅菜单中选择一些项目,然后回来预订餐桌。如果用户不想选择菜单,那么他们可能会忽略该步骤。

为此,我只打印了一条消息“您要选择菜单吗?” 然后是指向菜单页面的超链接。我使用 iavascript onClick 事件来监听用户是否单击,如果单击,我调用函数 setsession 来设置会话以跟踪用户在我的网站中的活动。我在 page.like- 顶部声明了我的函数

    <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 } ?>

一切正常。当我成功单击超链接时,我的会话变量。当我点击确认按钮(上面的超链接)时,它成功地将数据存储在数据库中并成功提取消息并取消设置会话。

但问题是我不知道我的会话如何以及为什么再次设置。我试图取消我的会话多少,但我失败了。据我所知,我的其余代码运行良好,没有问题。我已经测试过了。专家有什么解决办法吗?提前致谢。

4

5 回答 5

1

这很不自然,但要销毁会话,您需要确保session_start()事先已调用。

要销毁会话,您不能在该 JavaScript 函数中执行此操作。您将需要向服务器发出 HTTP 请求,然后此请求将需要触发“PHP”函数删除您的会话。

通过阅读您对下面帖子的评论,我假设您只想删除会话的单个变量。也许试试这个:

session_start();
unset($_SESSION['reservationprocess']);
于 2012-05-01T20:09:38.647 回答
0

不知道为什么你没有任何理由在脚本中有会话变量 第二我认为,当你加载页面时,你的变量被分配,这可能是它再次设置的原因。在初始化或分配变量时进行某种检查。

于 2012-05-02T06:12:14.983 回答
0

session 必须初始化(如果之前没有初始化) session_start() 会做,另一个技巧是使用 session_destroy() 而不是未设置。

于 2012-05-01T20:10:17.883 回答
0

你应该在这里做的是移动这个调用:

<?php $_session['reservation']= TRUE;?>

.. 到您的菜单页面。因此,当菜单页面加载时,此会话已设置。然后,当您完成后,您可以使用 session_destroy() 取消设置变量。

于 2012-05-01T20:12:30.800 回答
-1

很抱歉再次打扰您。但这次不是问一些新手问题,而是回答我自己的问题。

首先,我将简要地写下我的问题。我想捕捉一个事件,并希望使用该事件在我的会话中存储一些值,以在我的站点的其余部分识别该事件,除非会话被某种方式破坏。.php 文件中使用的所有变量都将值存储在其中,并在它们在服务器上时执行所有操作。浏览器显示结果。当用户做某事[在我的情况下单击]时,我们怎么能期望它只是将一个值存储在一个 php 变量中,而浏览器中没有 php 变量。所以我们可以做的只是将结果存储在一个 javascript 变量中,或者返回服务器并将值设置为变量。使用 ajax 调用服务器是专家的一种方法,老实说我不太了解。所以我需要寻找一些我已经知道的东西。当然是基于php的。最后我得到了COOKIE。要捕获事件,使用 javascript 很明显。我使用了一个使用 jQuery 的事件侦听器,并在其中将一个值存储在浏览器的 cookie 中。然后使用 javascript 和 php 检查我网站中的 cookie。这有一个后备。如果用户禁用 cookie,那么您将无法使用它。

于 2012-05-05T19:58:07.267 回答