表格不会将$得分转发到下一页

时间:2015-03-02 06:45:16

标签: php forms session

当用户参加测验时,他们的分数会被记入价值$ grade,这在测验的主页上显示正常。但是,如果我更改表单操作以将用户转发到新页面(grade.php),则$ grade会丢失其值。

如何捕获值并在下一页显示? PreviousURL和user_token的值显示...

<form action="grade.php" method="post" id="quiz">
  <input type="hidden" name="PreviousURL" id="url" />
  <input type="hidden" name="user_token" value="<?php echo $_SESSION['user_token']; ?>" />
  <input type="submit" value="Submit Quiz" />
</form>

所以我试过这个,但它没有用......

  <input type="hidden" name="grade" value="<?php echo $_SESSION['grade'] ?>" />

2 个答案:

答案 0 :(得分:1)

您不应在$_SESSION中保存表单值,因为表单值已在$ _POST超全局中。

你可以这样做

<form action="grade.php" method="post" id="quiz">
  <input type="hidden" name="PreviousURL" id="url" />
  <input type="hidden" name="user_token" value="<?php echo isset($_POST['user_token']) ? $_POST['user_token'] : '' ; ?>" />
  <input type="submit" value="Submit Quiz" />
</form>

所以基本上它会测试user_token字段中是否有值,它将应用该值,否则它将设置为''(无)。如果您不熟悉三元运算符语法,请参阅http://php.net/manual/en/language.operators.comparison.php

更新部分:

// Your form page goes like 
<?php session_start();
      print_r($_SESSION); // If there is a session your form should show the value of user_token

// Rest of the script + html


?>

// grade.php
<?php session_start();
// do a print_r to see if you are receving session variables by
print_r($_SESSION);

答案 1 :(得分:1)

grade.php上的

确保使用

启动文件
session_start();

根据您的问题,我假设您没有在grade.php上启动会话。关于文件的信息不多

如果您没有开始会话,$_SESSION的值将被销毁