0

イベントがトリガーされるたびにセッション変数を割り当てようとしています (ここでは Javascript を使用)。しかし、ボタンを押すなどのイベントが生成された後ではなく、ページの本文がロードされた直後にロードされるように、それを実現できていません。

2 つのページがあります。1 つは、セッション変数が設定されているかどうかを確認するためのものです。はいの場合、アクションを実行して破棄します。

もう 1 つは、サブページとして (include を使用して) インクルードされる巨大なページであり、それ自体に送信されてリロードされるフォームです。これで、サブページは、イベントが生成されるたびにセッションを設定します (送信ボタンを押す、ボタンをクリックするなど)。

first.php --> セッションのチェックと破棄 second.php --> セッションの初期化と割り当て

そして、どちらも反復的です。

バックエンドを使用してデータを保存できますが、その巨大なページには、その中に他のデータベースを含めないといういくつかの制限があります。

最初の.php

<?php
    session_start();
    print_r($_SESSION);
    var_dump($_SESSION);

    if(isset($_SESSION['submit']) && isset($_SESSION['click']) ) {
        echo "passed both tests";
        unset($_SESSION['submit']);
        unset($_SESSION['click']);
        session_destroy():
    }
    var_dump($_SESSION);
    print_r($_SESSION);
    var_dump($_SESSION);
?>

second.php(フォーム)

<?php
    session_start();
?>
<html>
  <head>
    <meta name="generator" content="HTML Tidy for Windows (vers 14 February 2006), see www.w3.org">
    <script type="text/javascript">
        function submit_valid(){
            <?php
                $_SESSION['submit']='yes';
            ?>

        }
    </script>
    <script type="text/javascript">
        function click_valid1(){
            document.getElementById('submitButton').disabled=true;
            <?php
                $_SESSION['click']='clicked';
            ?>

            window.location.replace("first.php");
        }
    </script>
    <script type="text/javascript">
        function load_valid3(){
            <?php
                $_SESSION['submit']='no';
                $_SESSION['clicked']='not';
            ?>
        }
    </script>

    <script type="text/javascript">
        setTimeout (function(){
            document.getElementById('submitButton').disabled = null;
        },10000);
        var countdownNum = 10;
        incTimer();
        function incTimer(){
            setTimeout (function(){
                if(countdownNum != 0){
                    countdownNum--;
                    document.getElementById('timeLeft').innerHTML = 'Time left: ' + countdownNum + ' seconds';
                    incTimer();
                } else {
                    document.getElementById('timeLeft').innerHTML = 'Ready!';
                }
            },1000);
        }
    </script>

    <title></title>
  </head>
  <body onload="return load_valid3()">
    <form action="search.php" method="get" onsubmit="return submit_valid()">
      <table border="2" width="150" cellpadding="0" cellspacing="2">
        <tr>
          <td align="center">
            <input type="text" id="query" name="query" size="30" value="">
          </td>
          <td align="center">
            <input type="submit" value="Search"> <input type="hidden" name="search" value="1">
          </td>
        </tr>
        <tr>
          <td align="center">
            <input type="button" value="SUBMIT" disabled="disabled" id="submitButton" onclick="return click_valid1()">
          </td>
          <td align="center">
            <p id="timeLeft">
              Time Left: 10 seconds
            </p>
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

PHPに静的変数の概念はありますか? 何とかこの状況を打破できますように。

4

2 に答える 2

0

これでどこに行くのか本当にわからないにもかかわらず:

jQueryを使用して、最初の JS 関数 " valid()"を模範的に実装しました。

function valid() {
    $.ajax({
        type: "POST",
        url: "first.php",
        data: {
            "color": "red"
        }
    });
}

これは、セッション変数を更新する方法です。

$_SESSION['color'] = $_REQUEST['color']

「有効な」機能のポイントが何であるかはまだよくわかりませんが、おそらくこれはどこに行くことができるかを示しています。

于 2013-06-01T05:57:20.370 に答える
0

フォーム送信アクションから JavaScript 関数呼び出しを分離してみてください。「isset 関数」と「if 条件ステートメント」を組み合わせて、フォームが送信されたかどうかを確認できます。何かのようなもの:

if(isset($_GET['submit']))
{

}
于 2013-06-01T05:51:59.310 に答える