在php页面中传递会话值的问题

时间:2018-03-16 20:06:04

标签: javascript php forms variables post

我有 quizaction.php 页面和 result.php 页面。我将变量从 quizaction.php 传递到 result.php 。 这是我的quizaction.php:

    <?php

      include 'db.php';
      session_start();
    ?>
    <html>
    <head><title>Quiz Feedback</title></head>
    <body bgcolor="#FFFFFF">
    <form name="result" action=result.php  method="POST"> 
      <?php
      $_SESSION['time_left'] = $_POST['formvar'];
      $_SESSION['time_taken'] = 60 - $_SESSION['time_left'];
      ?>
     <INPUT TYPE="SUBMIT" VALUE="Done" >
    </form>
    </body>
    </html>

我的 result.php 是:

    <?php 
      session_start();
      include 'db.php';
      include 'quizaction.php';
    ?>
    <button onclick="myFunction()">Try it</button>

    <script type="text/javascript">
        function myFunction() {

          var topic1= "<?php echo $type[0]; ?>";
          var topic2= "<?php echo $type[1]; ?>";

          var score= "<?php echo ($score); ?>";
          alert("check");
          alert(score); 
          alert(topic1);
          alert(topic2);
       }
       </script>

但我无法从quizaction.php中检索得分值。 实际上我也从其他页面获取 quizaction.php 中的数据。但在这里我不认为这有任何问题。请帮帮我。即使是阐述也会有效

2 个答案:

答案 0 :(得分:0)

将此添加到results.php

&#13;
&#13;
<?PHP PRINT_R($_POST); // For Testing ?>
&#13;
&#13;
&#13;

quizaction.php
所有输入字段必须具有类似

的名称

&#13;
&#13;
<INPUT TYPE=text VALUE='123' name='topic_1'>
&#13;
&#13;
&#13;

创建一个会话变量
- 1st session_start
- 第二个结果.php

&#13;
&#13;
<?PHP $_SESSION['topic_1'] = $_POST['topic_1']; ?>
&#13;
&#13;
&#13;

这可以帮助你到达你需要去的地方。

答案 1 :(得分:0)

这个脚本有很多问题:

1)在result.php页面中,在页面已经呈现包含quizaction.php的开始和结束标记的<html>内容后,您将获得该html输出。这不是主意。

2)当一个包含在另一个中时,你有两个session_start(),这将导致警告/错误。那不太理想。

3)在result.php中,您已定义$type$score,但在您的示例脚本中发布的任一页中都没有。

我认为你的主要问题是组织问题。你可能有单独的工作,现在正试图将它们互相挤压,这不是最好的方法。您有太多重复和重复意味着您引入了不一致和潜在的错误。在路上,你将很难保持这一点。

如果可能,请使用某种框架。如果这不是您可以做的事情,请重新组织您的脚本。我会:

1)创建一个包含数据库,会话和其他简易引用项的配置文件:

<强> /config.php

<?php
define('DS',DIRECTORY_SEPARATOR);
define('ROOT_DIR',__DIR__);
define('FUNCTIONS',ROOT_DIR.DS.'functions');
# Start session
session_start();
# Include database
require_once('db.php');

2)你必须定义$type$score,我不知道它来自哪里,所以你必须弄清楚它的来源。根据您发布的脚本,您只能定义$_SESSION$_POST

<强> /result.php

<button onclick="myFunction()">Try it</button>

<script type="text/javascript">
    function myFunction()
    {
        var topic1= "<?php echo $type[0] ?>";
        var topic2= "<?php echo $type[1] ?>";
        var score = "<?php echo $score ?>";

        alert("check");
        alert(score); 
        alert(topic1);
        alert(topic2);
    }
</script>

3)将result.php包含在测验页面中,而不是相反。

<强> /quizaction.php

<?php
# Include the config at the top of the main pages
require_once(__DIR__.DIRECTORY_SEPARATOR.'config.php');
# Move non-view logic before view
# Check if something is set first
if(!empty($_POST['formvar'])) {
    $_SESSION['time_left']  = $_POST['formvar'];
    $_SESSION['time_taken'] = 60 - $_SESSION['time_left'];
}
?>
<html>
<head><title>Quiz Feedback</title></head>
<body bgcolor="#FFFFFF">
<!-- Use quotes here ------v----------v -->
<form name="result" action="result.php"  method="POST"> 
    <input type="submit" value="Done" >
</form>
<?php include(ROOT_DIR.DS.'result.php') ?>
</body>
</html>