当用户参加测验时,他们的分数会被记入价值$ 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'] ?>" />
答案 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
的值将被销毁