2

ユーザーがレストランのテーブルを予約できるようにするためのコードを書いています。しかし、私のクライアントは、ユーザーがレストランのメニューからいくつかのアイテムを選択してから戻ってきてテーブルを予約できるようにするように私に求めました。ユーザーがメニューを選択したくない場合は、その手順を無視することができます。

そのために、「メニューを選択しますか?」というメッセージを印刷しました。次に、メニューページへのハイパーリンク。iavascript onClickイベントを使用して、ユーザーがクリックしたかどうかをリッスンし、クリックした場合は関数setsessionを呼び出して、Webサイトでのユーザーのアクティビティを追跡するようにセッションを設定しました。ページの上部で関数を宣言しました。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」関数をトリガーする必要があります。

以下の投稿へのコメントを読んで、セッションの変数を1つだけ削除したいと思います。多分これを試してみてください:

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

セッションを初期化する必要があります(以前に初期化がない場合)session_start()が実行されます。別のヒントは、未設定のsession_destroy()を使用することです。

于 2012-05-01T20:10:17.883 に答える
0

ここで行う必要があるのは、この呼び出しを移動することです。

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

..メニューページへ。したがって、メニューページが読み込まれると、このセッションが設定されます。その後、完了したら、session_destroy()を使用して変数の設定を解除できます。

于 2012-05-01T20:12:30.800 に答える
0

理由もなくスクリプトで変数をセッションする理由がわからない第2に、ページをロードするたびに変数が割り当てられ、それが再び設定される理由である可能性があります。変数を初期化または割り当てるときに、何らかのチェックを行います。

于 2012-05-02T06:12:14.983 に答える
-1

またご迷惑をおかけして申し訳ありません。しかし、今回は初心者の質問をするのではなく、私自身の質問に答えます。

まず、質問を簡単に書きます。イベントをキャッチし、イベントを使用してセッションに値を格納し、セッションが何らかの理由で破壊されない限り、サイトの残りの部分でそのイベントを認識したいと思いました。.phpファイルで使用されるすべての変数は、それらに値を格納し、サーバー上にあるときにすべての操作を実行します。ブラウザに結果が表示されます。ユーザーが[私の場合はクリックして]何かを実行し、ブラウザー内にphp変数がないときに、php変数に値を格納するだけで、どのように期待できますか。したがって、結果をjavascript変数に格納するか、サーバーに戻って値を変数に設定するだけで済みます。ajaxを使用してサーバーを呼び出すことは専門家の方法であり、正直言って私はそれについてあまり知りません。だから私はすでに知っていることを探す必要がありました。もちろん、phpに基づいています。ついにクッキーを手に入れました。イベントをキャッチするには、javascriptを使用するのは明らかです。jQueryを使用してイベントリスナーを使用し、その中に値をブラウザーのCookieに保存しました。次に、javascriptとphpの両方を使用して、私のWebサイトのCookieを確認しました。これにはフォールバックがあります。ユーザーがCookieを無効にすると、Cookieを使用するオプションがなくなります。

于 2012-05-05T19:58:07.267 に答える