2013-06-01 39 views
0

我试图在触发事件(在此处使用Javascript)时分配会话变量。但是我没有做到这一点,所以它只是在我的页面正文加载之后加载,而不是像按下按钮那样生成后续事件。在Javascript中分配会话变量

我有两个页面:一个是检查是否设置了会话var。如果是,那么执行该操作并将其销毁。

另一个是一个巨大的页面,其中包含一个子页面(使用include),它是一个表单,它被提交给自己,使其重新加载。现在,无论何时生成事件(如按提交按钮,然后单击按钮),该子页面都将设置会话。

first.php - >会议检查和销毁 second.php - >会话初始化和分配

无一不是重复的。

我可以使用后端来存储数据,但是那个巨大的页面有一些限制,不包括其中的其他dbs。

first.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静态变量的任何概念?这样我就可以摆脱这种情况。

+0

JavaScript运行在客户端上,PHP运行在服务器上。您可能错过了客户端 - 服务器模型的概念。 – Lion

+0

那么如何知道一个特定的事件被触发,或者如何限制用户在触发事件后才能查看特定页面(我不能使用用户登录或任何外部数据库连接) – mohan

回答

0

尽管不是真的知道你在哪里与此打算:

使用jQuery我示范实现你的第一个JS-功能 “valid()”:

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

你这是怎么更新会话变量。

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

我还没有真正看到什么的“有效”功能点是,但也许这说明你在哪里,你可以走了。

+0

thanx fr rrly.buti ve困惑一点。更多的是我更新了问题和remved抽象形式it.actualy我想允许用户submt形式,然后单击按钮只有他可以查看例如:(在谷歌,我们搜索一个页面,结果显示。然后现在在这里我想添加一个按钮点击然后跟随其他页面,我要检查他以前的活动,即提交和点击,然后只允许他查看....)和病房完成任务后,现在我是将他重定向到第一页....在这里是令人讨厌的.....谢谢你....希望最好..... – mohan

0

尝试从表单提交操作中分离javascript函数调用。您可以使用“isset函数”和“if条件语句”来检查表单是否已提交。喜欢的东西:

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

}